如何在Factory Girl Rails中使用Pry?

时间:2012-04-16 12:44:15

标签: ruby-on-rails ruby-on-rails-3 factory-bot pry

为了调试工厂,我在问题行的末尾插入了rescue binding.pry

after_create do |my_object, proxy|
  my_object.foreign_key_id = proxy.generated_attribute rescue binding.pry

不幸的是,在生成的FactoryGirl::Declaration::Implicit上下文中,我似乎无法像“普通”代码(NameError: undefined local variable or method `proxy' for #<FactoryGirl::Declaration::Implicit:0x0...>)那样访问上下文。 如何在Pry会话中检查和操作my_objectproxy

代码被调用为黄瓜特征背景的一部分:

Given the following my_objects exist:
| property |
| value    |

factory_girl_railsfactory_girl/step_definitions.rb是支持脚本所必需的。

1 个答案:

答案 0 :(得分:16)

为了允许属性名称在没有块参数的情况下定义属性,factory_girl使用instance_eval评估定义块,并取消定义Object上的大多数私有方法,包括binding。这意味着当您在上面调用binding.pry时,您不会在该块的绑定上调用pry;相反,您要定义一个名为“binding”的新属性,并在创建的属性定义上调用pry

您可以使用Kernel.binding.pry来解决此问题。