我在使用此代码段
的gem中收到了上述错误Savon.configure do |config|
config.log = false
config.log_level = :error
HTTPI.log = false
end
此代码用于传递Travis的过去运行,因此我不确定为什么在更改自述文件时这会发生变化。
答案 0 :(得分:15)
这种混乱的部分原因来自我的情况 - 继承宝石以维持 - 以及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配置样式的起点。理想情况下,在初始化每个Savon客户端时,应始终考虑client-specific 2.0 options available。