我有邮件服务,用户可以上传一个.xls文件与电子邮件和一些其他用户相关的数据,以发送电子邮件运动。
我有一些超时问题,因为它需要一些秒来处理(就像我为每封要发送的电子邮件做一些验证和配置一样,例如:将记录保存到数据库,检查电子邮件是否在过去30天内发送,为每封电子邮件创建个性化的html代码(创建包含电子邮件地址作为参数的链接等)。
经过一些研究后,将其移到延迟作业似乎是合理的,就像这条钢轨中所建议的那样。唯一的问题是我有一个错误,上面写着uninitialized constant Mandrill::API,似乎当我运行作业时,调用require 'mandrill'不起作用。
我在模型文件中创建了任务。就像这样
class Mailer < ActiveRecord::Base
attr_accessible :email, :lastname, :name
def self.send_mail(emails)
[...a lot of code here...]
require 'mandrill'
m = Mandrill::API.new ENV['MANDRILL_APIKEY']
message = {
:subject=> template.subject,
:from_name=> template.from_name,
:from_email=> from + "@" + email_domain,
:to=>mails,
:global_merge_vars=> [
{ :name => 'GREETING', :content => template.greeting},
{ :name => 'CONT1', :content => template.message},
{ :name => 'IMAGE', :content => image_url},
],
:html=>email_template,
:preserve_recipients => false,
:merge_vars => email_contents,
}
sending = m.messages.send message
end
end在我的控制器中,我调用了Mailer.send_mails(emails),它运行得很好,但是如果我调用Mailer.delay.send_mails(emails),就会得到错误。我怎么才能解决这个问题?
我试过在课程开始时,无论是在require 'mandrill'之前还是之后添加class Mailer < ActiveRecord::Base,但是似乎没有什么效果。
发布于 2014-07-11 05:00:38
确保重新启动delayed_job守护进程以获取任何代码更改。它不像Rails开发环境那样自动重新加载。
https://stackoverflow.com/questions/24582435
复制相似问题