Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 未定义的方法`configure';对于Savon:模块_Ruby_Gem_Savon - Fatal编程技术网

Ruby 未定义的方法`configure';对于Savon:模块

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

我用这个代码片段在gem中得到了上面的错误

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选项