2012-04-16 46 views
5

爲了調試一個工廠,我在一個問題行的末尾插入rescue binding.pry如何在Factory Girl Rails中使用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由支撐腳本必需的。

+0

我認爲回調塊只有一個參數。無論如何,您可以將'binding.pry'移動到救援塊,將其放在第二行上方,看看會發生什麼。 – luacassus 2012-04-16 13:02:28

+0

你能告訴我們你到底要做什麼嗎? – luacassus 2012-04-16 13:04:51

+0

@luacassus:回購有兩個參數[示例](https://github.com/thoughtbot/factory_girl/blob/master/GETTING_STARTED.md)。 – l0b0 2012-04-16 13:06:44

回答

12

爲了允許屬性名稱定義不帶block參數的屬性,factory_girl使用instance_eval評估定義塊並取消定義Object上的大多數私有方法,包括binding。這意味着當您撥打上面的binding.pry時,您不會在該塊的綁定上調用pry;相反,您正在定義一個名稱爲「binding」的新屬性,並在創建的屬性定義上調用pry

您可以使用Kernel.binding.pry來解決此問題。

+0

謝謝你。這一直困擾着我一段時間:) – josh 2017-04-26 15:30:59

相關問題