2012-04-16 26 views
5

आदेश में एक कारखाने मैं एक समस्याग्रस्त पंक्ति के अंत में 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...>)। मैं प्रिये सत्र में my_object और proxy का निरीक्षण और कुशलतापूर्वक उपयोग कैसे करूं?

कोड एक ककड़ी सुविधा की पृष्ठभूमि के हिस्से के रूप में कहा जाता है:

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

factory_girl_rails और factory_girl/step_definitions.rb समर्थन स्क्रिप्ट के लिए आवश्यक हैं।

+0

मुझे लगता है कि कॉलबैक ब्लॉक केवल एक तर्क लेता है। वैसे भी आप 'बाध्यकारी.pry' को बचाव ब्लॉक के रूप में स्थानांतरित कर सकते हैं, इसे दूसरी पंक्ति से ऊपर रखें और देखें कि क्या होता है। – luacassus

+0

क्या आप हमें बता सकते हैं कि आप वास्तव में क्या हासिल करने जा रहे हैं? – luacassus

+0

@luacassus: रेपो में दो तर्कों के साथ एक [उदाहरण] (https://github.com/thoughtbot/factory_girl/blob/master/GETTING_STARTED.md) है। – l0b0

उत्तर

12

आदेश विशेषता नाम एक ब्लॉक तर्क बिना विशेषताएं निर्धारित करने की अनुमति देने के लिए, factory_girl Object पर instance_eval और undefines सबसे निजी तरीकों का उपयोग कर, binding सहित परिभाषा ब्लॉक मूल्यांकन करता है। इसका मतलब है कि जब आप ऊपर binding.pry पर कॉल करते हैं, तो आप उस ब्लॉक के लिए बाध्यकारी पर pry पर कॉल नहीं कर रहे हैं; इसके बजाय, आप "बाध्यकारी" के नाम से एक नई विशेषता परिभाषित कर रहे हैं और बनाई गई विशेषता परिभाषा पर pry का आह्वान कर रहे हैं।

इसके बजाय आप Kernel.binding.pry का उपयोग करके इसे प्राप्त कर सकते हैं।

+0

इसके लिए धन्यवाद। यह मुझे थोड़ी देर के लिए परेशान कर रहा था :) – josh

संबंधित मुद्दे