2016-05-10 4 views
0

ActiveJob/ActionMailerとSidekiq/Redis with Deviseを使用してRails 4.2アプリを使用して認証しています。私はサインアップの際に電子メールの確認が必要です。これはDeviseによって処理されます。ユーザーがサインアップするときに問題が発生していますが、確認メールが送信されないことがあります。Rails ActiveJob/Sidekiqが電子メールを一貫して送信しない。時々送信します。

ログには、確認メールがActiveJobによってエンキューされていることが表示されます。処理されることもありますが、処理されないこともあります。確認メールが処理されず、ユーザーが再度確認すると、新しい確認メールが送信されます。

これはなぜ起こっているのですか?

また、どのユーザーでも反復処理を行っているわけではありません。標準のDevise登録プロセスを使用しています。 So this doesn't apply

答えて

0

私は矛盾した電子メールの理由を知っていると思います。私は同じredis serverインスタンスを使用して2つの別々のステージング環境を持っていました。説明のため、私はそれらをstaging1とstaging2と呼ぶことにする。

私は、ユーザー(ID = 1)がstaging2で作成されたとき、staging1がそのユーザー(ID = 1)の電子メールを処理することがあるため、staging2のユーザーは電子メールを取得するが、電子メールはstaging1からユーザーに送信されていた。

この問題を解決するには、次の2つのうちのいずれかを実行します。

  1. 環境ごとに個別のRedisサーバを使用してください。
  2. 各環境にredis名前空間を使用します。
関連する問題