module TappingDevice::Trackable
Public Instance Methods
tap_assoc!(object, options = {}, &block)
click to toggle source
# File lib/tapping_device/trackable.rb, line 11 def tap_assoc!(object, options = {}, &block) TappingDevice::Trackers::AssociactionCallTracker.new(options, &block).track(object) end
tap_init!(object, options = {}, &block)
click to toggle source
# File lib/tapping_device/trackable.rb, line 3 def tap_init!(object, options = {}, &block) TappingDevice::Trackers::InitializationTracker.new(options, &block).track(object) end
tap_mutation!(object, options = {}, &block)
click to toggle source
# File lib/tapping_device/trackable.rb, line 19 def tap_mutation!(object, options = {}, &block) TappingDevice::Trackers::MutationTracker.new(options, &block).track(object) end
tap_on!(object, options = {}, &block)
click to toggle source
# File lib/tapping_device/trackable.rb, line 15 def tap_on!(object, options = {}, &block) TappingDevice::Trackers::MethodCallTracker.new(options, &block).track(object) end
tap_passed!(object, options = {}, &block)
click to toggle source
# File lib/tapping_device/trackable.rb, line 7 def tap_passed!(object, options = {}, &block) TappingDevice::Trackers::PassedTracker.new(options, &block).track(object) end
Private Instance Methods
output_calls(target, options = {}, output_action:)
click to toggle source
# File lib/tapping_device/trackable.rb, line 50 def output_calls(target, options = {}, output_action:) device_options, output_options = separate_options(options) tap_on!(target, device_options).send(output_action, options: output_options) do |output_payload, output_options| output_payload.detail_call_info(output_options) end end
output_mutations(target, options = {}, output_action:)
click to toggle source
# File lib/tapping_device/trackable.rb, line 71 def output_mutations(target, options = {}, output_action:) device_options, output_options = separate_options(options) tap_mutation!(target, device_options).send(output_action, options: output_options) do |output_payload, output_options| output_payload.call_info_with_ivar_changes(output_options) end end
output_traces(target, options = {}, output_action:)
click to toggle source
# File lib/tapping_device/trackable.rb, line 58 def output_traces(target, options = {}, output_action:) device_options, output_options = separate_options(options) device_options[:event_type] = :call device_1 = tap_on!(target, device_options).send(output_action, options: output_options) do |output_payload, output_options| "Called #{output_payload.method_name_and_location(output_options)}\n" end device_2 = tap_passed!(target, device_options).send(output_action, options: output_options) do |output_payload, output_options| output_payload.passed_at(output_options) end CollectionProxy.new([device_1, device_2]) end
separate_options(options)
click to toggle source
# File lib/tapping_device/trackable.rb, line 79 def separate_options(options) output_options = Output::DEFAULT_OPTIONS.keys.each_with_object({}) do |key, hash| hash[key] = options.fetch(key, TappingDevice.config[key]) options.delete(key) end [options, output_options] end