UPDATE: Đã có một miếng vá cho vấn đề này: https://github.com/collectiveidea/delayed_job/commit/023444424166ba2ce011bfe2d47954e79edf6798NoMethodError với delayed_job (collectiveidea đá quý)
UPDATE 2: Đối với bất cứ ai chạy vào vấn đề này trên Heroku đặc biệt, tôi đã tìm thấy downgrade để Rake 0.8. 7 và sử dụng công việc trì hoãn phiên bản 2.1.4 hoạt động, trong khi công việc bị trì hoãn v3 không (mặc dù với bản vá nó hoạt động trên máy cục bộ). Đây là trên ngăn xếp Bamboo-mri-1.9.2.
Tôi đang cố triển khai delay_job trên ứng dụng đường ray 3.1.0 cục bộ. Tôi chạy di chuyển và cài đặt các tập tin đá quý:
gem 'delayed_job'
gem 'delayed_job_active_record'
Tiếp theo các tài liệu trên github collectiveidea (https://github.com/collectiveidea/delayed_job). Tôi đang thực hiện cuộc gọi chậm trễ từ bộ điều khiển của tôi như sau:
EventMailer.delay.event_message_email(current_user, @event_message)
Điều này làm cho công việc được bổ sung vào bảng công việc nhưng khi tôi chạy các công việc cào: làm việc nó ghi lại lỗi sau:
Class#event_message_email failed with NoMethodError: undefined method `event_message_email' for Class:Class - 6 failed attempts
Tôi đã xem các câu hỏi lỗi NoMethod delay_job khác trên SO nhưng không giải quyết được lỗi cụ thể này hoặc cung cấp giải pháp cho nó. Trang collectiveidea đề cập rằng định dạng này không có lời gọi phương thức phân phối là một hack cho cách Rails 3 mailers được thiết lập, vì vậy tôi tự hỏi liệu tài liệu này có thể là một số lỗi thời và nếu có cách gọi mailer mới?
Cập nhật: cũng gọi phương thức gửi thư không chậm trễ hoạt động tốt, và tôi đang chạy nó trên máy chủ đường ray mặc định để vấn đề với Thin được đề cập trong faq collectiveidea không áp dụng. Cảm ơn
Lần cuối bạn khởi động lại tác vụ 'rake jobs: work' là khi nào? Nó cần khởi động lại sau mỗi lần thay đổi mã. – iwasrobbed
EventMailer.event_message_email (current_user, @event_message) .delay.deliver có hoạt động không? – Unixmonkey
@iWasRobbed: có, tôi đã thử rằng – tks