如何在Factory Girl Rails中使用Pry?

l0b*_*0b0 8 ruby-on-rails ruby-on-rails-3 pry factory-bot

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

after_create do |my_object, proxy|
  my_object.foreign_key_id = proxy.generated_attribute rescue binding.pry
Run Code Online (Sandbox Code Playgroud)

不幸的是,在结果FactoryGirl::Declaration::Implicit上下文中,我似乎无法访问上下文,就像我在"普通"代码(NameError: undefined local variable or method `proxy' for #<FactoryGirl::Declaration::Implicit:0x0...>)中那样.如何检查和处理my_object,并proxy撬开会话中?

该代码作为黄瓜功能背景的一部分调用:

Given the following my_objects exist:
| property |
| value    |
Run Code Online (Sandbox Code Playgroud)

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

Joe*_*ris 17

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

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

  • 谢谢你。这已经困扰我一段时间了:) (2认同)