Class: BindingDumper::Dumpers::ProcDumper

Inherits:
Abstract
  • Object
show all
Defined in:
lib/binding_dumper/dumpers/proc_dumper.rb

Overview

Class responsible for converting procs and methods to marshalable hash

It uses a gem called ‘method_source’ which may inspect the source of proc/method

Instance Attribute Summary

Attributes inherited from Abstract

#dumped_ids

Instance Method Summary collapse

Methods inherited from Abstract

#initialize

Constructor Details

This class inherits a constructor from BindingDumper::Dumpers::Abstract

Instance Method Details

#can_convert?true, false

Returns true if ProcDumper can convert passed abstract_object

Returns:

  • (true, false)


13
14
15
# File 'lib/binding_dumper/dumpers/proc_dumper.rb', line 13

def can_convert?
  _proc.is_a?(Proc) || _proc.is_a?(Method)
end

#can_deconvert?true, false

Returns true if ProcDumper can deconvert pased abstract_object

Returns:

  • (true, false)


21
22
23
# File 'lib/binding_dumper/dumpers/proc_dumper.rb', line 21

def can_deconvert?
  abstract_object.is_a?(Hash) && abstract_object.has_key?(:_source)
end

#convertHash

Converts passed abstract_object to marshalable hash

Returns:

  • (Hash)


29
30
31
32
33
34
# File 'lib/binding_dumper/dumpers/proc_dumper.rb', line 29

def convert
  return unless should_convert?

  source = (_proc.to_proc.source rescue 'proc {}').strip
  { _source: source }
end

#deconvertObject

Deconverts passed abstract_object back to the original state

Returns:

  • (Object)


40
41
42
# File 'lib/binding_dumper/dumpers/proc_dumper.rb', line 40

def deconvert
  eval(_proc[:_source]) rescue proc {}
end