"一些宝石"我依赖于使用Savon宝石。
我需要禁用Savon日志记录,但不想搞砸#34;某些gem",并决定重新定义spec_helper.rb
中的Savon.client(全局和&块)方法来合并到globals哈希日志禁用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已定义,并且还具有:客户端方法
这是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
答案 0 :(得分:0)
最后我为此创建了一个新助手spec/support/savon_helper.rb
,并且成功了。
要求'savon'
# 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