In order to debug a factory I've inserted rescue binding.pry
at the end of a problematic line:
after_create do |my_object, proxy|
my_object.foreign_key_id = proxy.generated_attribute rescue binding.pry
Unfortunately, inside the resulting FactoryGirl::Declaration::Implicit
context I can't seem to access the context like I would in "normal" code (NameError: undefined local variable or method `proxy' for #<FactoryGirl::Declaration::Implicit:0x0...>
). How do I inspect and manipulate my_object
and proxy
within the Pry session?
The code is called as part of the background of a Cucumber feature:
Given the following my_objects exist:
| property |
| value |
factory_girl_rails
and factory_girl/step_definitions.rb
are required by the support script.
In order to allow attribute names to define attributes without having a block argument, factory_girl evaluates the definition block using instance_eval
and undefines most private methods on Object
, including binding
. That means that when you call binding.pry
above, you're not calling pry
on the binding for that block; instead, you're defining a new attribute with a name of "binding" and invoking pry
on the created attribute definition.
You can get around this by using Kernel.binding.pry
instead.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With