延迟作业和 Mandrill:未初始化常量 Mandrill::API

2024-02-21

我有邮件服务,用户可以上传包含电子邮件和其他一些用户相关数据的 .xls 文件来发送电子邮件活动。

我遇到了一些超时问题,因为它需要几秒钟的时间来处理(因为我对每封要发送的电子邮件进行了一些验证和配置,例如:将记录保存到数据库、检查过去 30 天内是否发送了电子邮件、创建个性化 html每封电子邮件的代码(用于创建包含电子邮件地址作为参数的链接等)。

经过一番研究后,将其移至延迟工作 https://github.com/collectiveidea/delayed_job似乎合理,如建议的那样该导轨铸造 http://railscasts.com/episodes/171-delayed-job-revised?view=asciicast。唯一的问题是我遇到一个错误: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但似乎没有任何作用


确保重新启动delayed_job守护进程以获取任何代码更改。它不会像 Rails 开发环境那样自动重新加载。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

延迟作业和 Mandrill:未初始化常量 Mandrill::API 的相关文章

随机推荐