エクスポートの成功・失敗の判定
現在の実装では、エクスポート完了後のメール送信まで成功しないと、エクスポートの状態が「完了」にならず「失敗」になります。 メール送信を設定していない環境でもエクスポートは行われるため、この実装は適当ではないと思います。実際にエクスポートが完了したら、メール送信の前に「完了」に変更するのがよいと思うのですが、いかがでしょうか。
メール送信ではなくて、メッセージ送信まで完了したら、完了でよいと思いますが、いかがでしょうか?
私もそれが妥当だと思います。
じゃあ、それ(メッセージ送信まで完了したら完了)でよいとおもいます。
この問題ですが、「失敗」となるのはメール送信ではなく、メールの本文を作成するとき、アプリケーションへのリンク先URLの作成に失敗していたのが原因でした、仮にメールサーバの設定を行っていなかったとしても、設定ファイル(config/environments/production.rb)で以下のようにホスト名を設定すれば、期待した動作になりました。
config.action_mailer.default_url_options = {host: 'enju.next-l.jp'}
この設定はインストールスクリプトで追加されるようになっていますが、今回はスクリプトができる前に構築したHerokuの環境で確認していました。
原因がわかったのはよかったですね。 それはそれとして、
メール送信ではなくて、メッセージ送信まで完了したら、完了
にするという方針でわかりなくてよいですよね?
メール送信ではなくて、メッセージ送信まで完了したら、完了でよいと思いますが、いかがでしょうか?
現状では、以下のようになっていますので、当初の問題は解決されていると考えています。
- インポートの処理が「完了」もしくは「失敗」になってから、メッセージを送る
- メールの送信設定が行われていなくても、メッセージ送信は行われる。つまり、インポート・エクスポートの処理とメッセージ送信が完了していれば、メール送信に失敗しても「完了」となる