Ruby 未定义的方法`configure';对于Savon:模块
我用这个代码片段在gem中得到了上面的错误Ruby 未定义的方法`configure';对于Savon:模块,ruby,gem,savon,Ruby,Gem,Savon,我用这个代码片段在gem中得到了上面的错误 Savon.configure do |config| config.log = false config.log_level = :error HTTPI.log = false end 这段代码过去在Travis上运行过,所以我不知道为什么在我修改自述文件时会发生变化。部分混淆来自我的情况——继承一个gem来维护——以及gems规范中的这一行: gem.add_dependency 'savon' 没有,所以最新的运行切换到使用Sa
Savon.configure do |config|
config.log = false
config.log_level = :error
HTTPI.log = false
end
这段代码过去在Travis上运行过,所以我不知道为什么在我修改自述文件时会发生变化。部分混淆来自我的情况——继承一个gem来维护——以及gems规范中的这一行:
gem.add_dependency 'savon'
没有,所以最新的运行切换到使用Savon 2,它抛弃了Savon.configure
全局行为。如果您与我处境相同,将此行更改为Savon的最新2.0之前版本将解决此问题:
gem.add_dependency 'savon', '~>1.2.0'
然后bundle安装
,您应该会很好
或者你想升级你的代码。我知道我知道
Savon.configure
已从Savon 2.0中删除,因为“”。在应用程序中保持相同行为的最快方法是在同一位置定义应用程序级全局哈希。然后将此哈希值传递到您进行的每个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种配置样式的起点。理想情况下,您应该始终考虑何时初始化每个Savon客户端。
请大家始终将GUI依赖项至少定义为一个主要版本。谢谢你写下这个非常有用的答案。我想问一下,你在配置/初始化器中的一个文件中,比如配置代码在哪里,你在哪里编写应用程序?我使用的是savon 1.0,并且在savon.config中找不到get方法,但我有另一个项目使用它的方式完全相同,并且工作正常,是否有可能某个依赖项引发该异常?感谢您的帮助在我的示例中,APP_OPTS只是一个应用程序常量。重要的一行是@client=Savon::client.new(APP_OPTS)
,当您需要Savon(2.0)客户端对象的实例时,应该初始化它。至于你的错误,我会仔细检查你的Gemfile.lock。你所描述的听起来和我运行的Savon 1->2错误一模一样into@EricHu您提供的链接是404:提供特定于客户端的2.0选项