"कुछ मणि" मैं सैवन रत्न के उपयोग पर निर्भर करता हूं। मुझे साइवन लॉगिंग को अक्षम करने की आवश्यकता है, लेकिन "कुछ मणि" के साथ खिलवाड़ नहीं करना है, और इसमें सैवॉन.क्लिएंट (ग्लोबल्स, और ब्लॉक) विधि को फिर से परिभाषित करने का फैसला किया है। spec_helper.rb
ग्लोबल्स हैश लॉग इन करने में विलीन हो जाना। लेकिन, किसी तरह मेरा कोड मॉड्यूल विधि को फिर से परिभाषित नहीं करता है।
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 मॉड्यूल परिभाषा है।
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"
अद्यतन करें: मैंने पहले ट्रिगर में Savon.client को फिर से परिभाषित करने की कोशिश की, और किसी तरह यह काम नहीं किया, मैंने एक नया सवाल बनाया https://stackoverflow.com/questions/25132591/strange-jump-in-pry-when-debugging-spec-helper-rb
उत्तर:
जवाब के लिए 0 № 1अंत में मैंने एक नया सहायक बनाया 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