「いくつかの宝石」私はSavonの宝石を使用しています。 Savonロギングを無効にする必要がありますが、「Some gem」をいじりたくないので、Savon.client(globals、&block)メソッドを再定義することにしました。 spec_helper.rb
paramを無効にするグローバルハッシュログにマージします。しかし、どういうわけか私のコードはモジュールメソッドを再定義しません。
20: module Savon
21: unless Savon.respond_to? :origin_client
=> 22: binding.pry
23: #alias_method :origin_client, :client
24: def self.client globals = {}, &block
25: binding.pry # <-- doesn"t stop here
26: globals.merge!(log: false, log_level: :error)
27: self.origin_client(globals, &block)
[1] pry(Savon)> Savon.respond_to? :client
上に示したように、Savonは定義されており、:clientメソッドもあります。
Savonモジュールの定義は次のとおりです。
module Savon
Error = Class.new(RuntimeError)
InitializationError = Class.new(Error)
InvalidResponseError = Class.new(Error)
def self.client(globals = {}, &block)
Client.new(globals, &block)
end
def self.observers
@observers ||= []
end
def self.notify_observers(operation_name, builder, globals, locals)
observers.inject(nil) do |response, observer|
observer.notify(operation_name, builder, globals, locals)
end
end
end
require "savon/version"
require "savon/client"
require "savon/model"
更新: before_allトリガーでSavon.clientを再定義しようとしましたが、どういうわけかこれが機能しませんでした。新しい質問を作成しました。 https://stackoverflow.com/questions/25132591/strange-jump-in-pry-when-debugging-spec-helper-rb
回答:
回答№1は0最後に、新しいヘルパーを作成しました spec/support/savon_helper.rb
このために、そして成功します。
「サボン」が必要
# Enable Savon logging for errors only
module Savon
unless Savon.respond_to? :origin_client
class << self
alias_method :origin_client, :client
end
def self.client globals = {}, &block
#globals.merge!(log_level: :error)
globals.merge!(log: false) # disable logging completely
self.origin_client(globals, &block)
end
end
end