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

メールを非同期で送信しようとすると、「contact」呼び出しが原因で次のエラーが発生します。

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 に答える