2012-04-16 22 views
5

Để gỡ lỗi một nhà máy tôi đã chèn rescue binding.pry ở phần cuối của một dòng có vấn đề:Làm thế nào để sử dụng Pry trong phạm vi Factory Rails?

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

Thật không may, bên trong kết quả FactoryGirl::Declaration::Implicit bối cảnh tôi dường như không thể truy cập vào bối cảnh như tôi sẽ ở "bình thường "mã (NameError: undefined local variable or method `proxy' for #<FactoryGirl::Declaration::Implicit:0x0...>). Làm cách nào để kiểm tra và thao tác my_objectproxy trong phiên Pry?

Mã này được gọi là một phần của nền tảng của một tính năng Dưa chuột:

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

factory_girl_railsfactory_girl/step_definitions.rb được yêu cầu của kịch bản hỗ trợ.

+0

Tôi nghĩ rằng khối gọi lại chỉ nhận một đối số. Dù sao bạn có thể di chuyển 'binding.pry' tạo thành khối cứu hộ, đặt nó lên trên dòng thứ hai và xem điều gì xảy ra. – luacassus

+0

Bạn có thể cho chúng tôi biết chính xác bạn sẽ đạt được điều gì không? – luacassus

+0

@luacassus: Repo có [ví dụ] (https://github.com/thoughtbot/factory_girl/blob/master/GETTING_STARTED.md) với hai đối số. – l0b0

Trả lời

12

Để cho phép tên thuộc tính xác định thuộc tính mà không có đối số khối, factory_girl sẽ đánh giá khối định nghĩa bằng cách sử dụng instance_eval và xác định phương pháp riêng tư nhất trên Object, bao gồm binding. Điều đó có nghĩa là khi bạn gọi số binding.pry ở trên, bạn không gọi số pry về việc ràng buộc cho khối đó; thay vào đó, bạn đang xác định thuộc tính mới có tên là "ràng buộc" và gọi pry trên định nghĩa thuộc tính đã tạo.

Thay vào đó, bạn có thể thực hiện việc này bằng cách sử dụng Kernel.binding.pry.

+0

Cảm ơn vì điều này. Điều này đã ám ảnh tôi một lúc rồi :) – josh

Các vấn đề liên quan