このコード スニペットを使用すると、gem で上記のエラーが発生します
Savon.configure do |config|
config.log = false
config.log_level = :error
HTTPI.log = false
end
このコードは過去の Travis の実行で渡されていたものなので、Readme を変更したときにこれが変更された理由はわかりません。
この混乱の一部は、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 オプションを常に考慮する必要があります。