我已经安装delayed_job用于ActiveMailer使用,所以我可以发送批量电子邮件作为后台作业。问题是,虽然作业正在被安装到数据库中,但当工作人员拿起作业时,不会执行电子邮件。Delayed_job不发送电子邮件与ActiveMailer 3.x
的细节是:
- 的Rails 3.2.2版本
- delayed_job的3.0.3
- delayed_job_active_record 0.3.2
电子邮件作业通过调用放置到队列中,如在ActiveMailer的Delayed_Job Documentation中推荐的那样,其中
MemberMailer.delay.all_member_email(m, @message)
这是一个名为的控制器email_list_controller旨在接受发送给站点的一个或多个成员的消息。执行后的日志文件指示SQL插入delayed_jobs表作为显示:
SQL (0.2ms) INSERT INTO `delayed_jobs` (`attempts`, `created_at`, `failed_at`, `handler`, `last_error`, `locked_at`, `locked_by`, `priority`, `queue`, `run_at`, `updated_at`) VALUES (0, '2012-07-30 11:42:47', NULL, '--- !ruby/object:Delayed::PerformableMailer\nobject: !ruby/class \'MemberMailer\'\nmethod_name: :all_member_email\nargs:\n- !ruby/ActiveRecord:Member\n attributes:\n id: \n family_id: \n title: \n first_name: FirstName\n last_name: LastName\n middle_initial: \n dob: \n gender: \n home_phone: \n work_phone: \n fax: \n mobile: \n email: [email protected]\n user_id: \n boat_event_id: \n ayf: \n guardian: \n consent: \n created_at: \n updated_at: \n- !ruby/ActiveRecord:Message\n attributes:\n id: 1\n subject: ! \'[IGNORE] - Testing\'\n body: ! \"<b>A body</b>\\r\\nMore lines\\r\\nAnother line \\r\\nStuff\\r\\nMore Stuff How\n to do more stuff\\r\\n\"\n created_at: 2012-04-20 04:17:51.000000000 Z\n updated_at: 2012-07-30 10:06:09.000000000 Z\n sent: 1\n date: 2012-04-20\n', NULL, NULL, NULL, 0, NULL, '2012-07-30 11:42:47', '2012-07-30 11:42:47')
(26.8ms) COMMIT
,然后很快的工人删除
SQL (0.2ms) DELETE FROM `delayed_jobs` WHERE `delayed_jobs`.`id` = 8
工人的工作是通过rake任务启动的工作
rake jobs:work
没有发送或接收电子邮件的记录。
电子邮件的过程,而不delayed_job的方法
MemberMailer.all_member_email(m, @message).deliver
以电子邮件的形式发送,通过适当的路径传送测试时正常工作。
有其他人遇到过这个问题吗?一般的“oogling”表明,早期版本的delayed_job和无效对象存在问题。从数据库中的数据看来,YAML序列化的信息看起来没问题。
'MememberMailer'在哪里?没有使用“延迟”工作?如何在all_meember_email中记录一些东西? – shigeya 2012-07-31 04:47:29
您是否在启动rails server之前使用命令'script/delayed_job start'启动delayed_job服务器? – Salil 2012-07-31 05:24:44
我已经测试了MemberMailer没有延迟,它工作正常 – 2012-07-31 11:13:41