9

このコード スニペットを使用すると、gem で上記のエラーが発生します

Savon.configure do |config|
  config.log = false
  config.log_level = :error
  HTTPI.log = false
end

このコードは過去の Travis の実行で渡されていたものなので、Readme を変更したときにこれが変更された理由はわかりません。

4

1 に答える 1

16

この混乱の一部は、gemspec の次の行とともに、私の状況 (維持する gem を継承する) に起因しています。

gem.add_dependency 'savon'

バージョン番号が指定されていないため、最新の実行では、グローバルな動作を廃止した Savon 2 の使用に切り替えましたSavon.configure。あなたが私と同じボートに乗っている場合は、この行を Savon の最新の 2.0 より前のバージョンに変更すると、問題が解決します。

gem.add_dependency 'savon', '~>1.2.0'

その後bundle install、あなたは良いはずです。


または、コードをアップグレードしたい。私は知っています。

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.0 構成スタイルに移行するための出発点と考えています。理想的には、各 Savon クライアントを初期化するときに、利用可能なクライアント固有の 2.0 オプションを常に考慮する必要があります。

于 2012-12-19T05:45:12.573 に答える