2

我对 Ruby on Rails 很陌生,希望异步发送电子邮件以使我的应用程序响应更快。同步发送工作正常,将是我的替代方案。

我找到了一些站点并在我的 Gemfile 中定义了 gem 'resque_mailer'、'redis' 和 'resque' 并通过bundle install命令安装了它们。我的邮件看起来像:

class Contact < ActionMailer::Base 
include Resque::Mailer  

default from: "<private>"

  def contact(email, bandName, respondMail, message)
    @message = message
    @respondMail = respondMail
    @bandName = bandName

    mail(:to => email,
         :subject => "subject")
  end
end

发送邮件的 Controller-Call 如下所示:

Contact.contact(band.email, band.name, params[:respondMail].to_s, params[:message].to_s).deliver

如果我现在尝试异步发送邮件,我会收到以下由“联系人”调用引起的错误:

Timed out connecting to Redis on 127.0.0.1:6379

不幸的是,我不知道如何解决这个问题。有人可以告诉我异步发送邮件必须采取哪些步骤吗?如果可能,不应该有额外的数据库列。

4

1 回答 1

1

为了让 resque 和 resque_mailer 工作,你需要安装 redis。你可以在这里找到更多关于 redis 的信息:http ://redis.io/download

如果您是 Rails 新手,那么所有外部工具和依赖项都可能会让人不知所措。如果您的应用程序没有极端负载,您应该考虑使用更简单的作业队列,例如https://github.com/collectiveidea/delayed_job。它不依赖于进一步的外部服务,并使用您当前的数据库来存储作业。你唯一需要做的就是让工人保持清醒。

于 2013-01-05T19:11:50.357 回答