我在使用此代码片段的 gem 中遇到上述错误
Savon.configure do |config|
config.log = false
config.log_level = :error
HTTPI.log = false
end
这段代码过去曾在 Travis 上运行过,所以我不确定为什么在我更改自述文件时会发生变化。
最佳答案
这种困惑的部分原因是我的情况——继承要维护的 gem——以及 gemspec 中的这一行:
gem.add_dependency 'savon'
没有 version number specified , 所以最新的运行切换到使用 Savon 2,它放弃了 Savon.configure
全局行为。如果您和我在同一条船上,将此行更改为最新的 2.0 之前版本的 Savon 将解决问题:
gem.add_dependency 'savon', '~>1.2.0'
然后 bundle install
就可以了。
或者您想升级您的代码。我知道我知道。
Savon.configure
已从 Savon 2.0 中删除,因为“problem was global state”。在您的应用程序中保持行为相同的最快方法是在同一位置定义应用程序级全局哈希。然后,您会将此散列传递到您进行的每个 Savon.client
调用中。例如:
# Where Savon.configure was called
APP_OPTS = {
# disable request logging, silences HTTPI as well
log: false,
# Don't log Laundry xmls to STDOUT
log_level: :error,
#... etc
}
# Elsewhere
@client = Savon::Client.new(APP_OPTS)
我认为这是迁移到 2.0 配置样式的起点。理想情况下,您应该始终考虑 client-specific 2.0 options available在初始化每个 Savon 客户端时。
关于ruby - Savon :Module 的未定义方法 `configure',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13946227/