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