10

为了调试我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_object和操作?proxy

该代码被称为 Cucumber 功能背景的一部分:

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

factory_girl_rails并且factory_girl/step_definitions.rb是支持脚本所必需的。

4

1 回答 1

24

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

你可以通过使用Kernel.binding.pry来解决这个问题。

于 2012-05-03T17:45:18.833 回答