Nginx を使用して本番環境にDelayed_Job_Active_Record gem を実装する際に問題があります。ユーザーが「お問い合わせ」フォームを送信すると、関連するコントローラー アクションが Nginx によって呼び出され、次のコード行が失敗します。
@contact.delay.send_contact_form
関連するメソッドは次のとおりです。
def send_contact_form
ContactMailer.contact_us(self).deliver
end
開発環境:OK
- 私のローカル マシンには、Webrick が提供するページがあります。すべてが正常に実行され、遅延ジョブは「Delayed_Jobs」テーブルを通過し、電子メールが送信されます。
本番環境 - Rails コンソール: OK
- サーバー上で手動で作成
@contact
して呼び出すと@contact.delay.send_contact_form
、遅延ジョブは遅延ジョブ テーブルを通過し、電子メールが送信されます。
本番環境 - Webrick: OK
- サーバー上で Rails Webrick サーバーを起動し
@contact
、Web インターフェイスを介してデータを入力し、ジョブを送信すると、遅延ジョブ テーブルが通過し、電子メールが送信されます。
本番環境 - Nginx: エラー
- アプリケーションは現在、Nginx によって提供されています。
- Nginx 経由でインターフェイスにアクセスし、データを入力して
@contact
送信すると、ページがハングします。 - プロダクション ログには、コントローラ アクションで次のエラーが表示されます (上記の行を参照)。
NoMethodError (未定義のメソッド `delay' for #< Contact:0x000000052962b0>)
Rails、Ruby、Delayed_Job_Active_Record および Daemons gem のバージョンが両方の環境で同じであることも確認しました。
私はしばらくこれにこだわっていたので、どんな助けも大歓迎です。Nginx で動作し、「遅延ジョブ」と同じ機能を提供するソリューションを見つけたいと考えています。
ありがとう。