2016-12-20 9 views
0

私は最初のレーキタスクをレールに書きました。私はHerokuスケジューラでセットアップしていますが、メールは送信されません。私のメール設定は、他のさまざまなものに使用しているのでうまくいきます。レーキタスクのコードに問題があると思います。どんな助けでも大歓迎です。すくいuncomplete_formを実行することにより レイクタスクがメールレールを送信しない

desc "Remind users if they haven't completed quote form" 
task uncomplete_form: :environment do 
    puts 'Reminding users of uncomplete quote form' 
    date = Date.parse('december 18 2016') 
    quickcontacts = Quickcontact.where(created_at: date.midnight..Time.now) 
     quickcontacts.each do |quickcontact| 
      next unless quickcontact.created_at > 1.hour.ago 
       if quickcontact.p_p = nil 
        QuickcontactMailer.uncomplete_form(@quickcontact).deliver 
       end 
      end 
    puts 'done.' 
end 

uncomplete_form.rake

のlib /タスク/ Iが行わuncomplete見積もりフォーム

思い出させるユーザーを取得します。

そして Herokuの実行の熊手を実行しているuncomplete_form 私はそれがどんなquickcontactsをピックアップしていないよう

Reminding users of uncomplete quote form 
Quickcontact Load (1.5ms) SELECT "quickcontacts".* FROM "quickcontacts" WHERE ("quickcontacts"."created_at" BETWEEN '2016-12-18 00:00:00.000000' AND '2016-12-20 12:09:23.683977') 
done. 

を得る - しかし、私は実行するコンソールでの場合:

続い
date = Date.parse('december 18 2016') 

quickcontacts = Quickcontact.where(created_at: date.midnight..Time.now) 

これは、 ected連絡先

+0

タイムゾーンの問題である可能性があります。 HerokuスケジュールはUTCで動作します。その方法でデバッグを試みてください。 – Jayaprakash

+0

私はそれについて考えましたが、UTCの時間は私の前で2時間であり、いくつかのクイックコンタクトは昨日(12月19日)に作成されたので、違いはないと思います。 – DanRio

答えて

3

あなたは

QuickcontactMailer.uncomplete_form(@quickcontact).deliver_now 

を試してみましたか?

編集:.p_pとは何ですか?比較する必要があったはずのif節で代入をしています。

if quickcontact.p_p = nil 
+0

ちょうどそれを試みましたが、変更はありません – DanRio

+0

ああ、私の愚かなこと... p_pがゼロであることを確認していると思います。 (p_pは見積もりフォームの最後の部分なので、フォームが完成していないとフォームが完成しないため、未完成のフォームメールが送信されます) quickcontact.p_p == nilならば、 quickcontact.p_p.nil? '私はそれがそれをするべきだと思います。ありがとう、私はそれが動作するかどうかをお知らせします。 – DanRio

1

解決済み:自分のところに2つのエラーがあります。最初の@matijaのおかげでありがとう。問題は私のレーキのタスクコードでした。最初のエラーは、 'quickcontact.p_p = nil'を 'quickcontact.p_p.nilならば'に変更する必要がある場合です。 - 私は誤ってそれをチェックするのではなく、ゼロの値を割り当てていました。 2番目のエラーは、次の行の下に、quickcontactがインスタンス変数であってはならないということでした。これは更新された機能コードです。

desc "Remind users if they haven't completed quote form" 
task uncomplete_form: :environment do 
    puts 'Reminding users of uncomplete quote form' 
    date = Date.parse('december 18 2016') 
    quickcontacts = Quickcontact.where(created_at: date.midnight..Time.now) 
     quickcontacts.each do |quickcontact| 
      next unless quickcontact.created_at > 1.hour.ago 
       if quickcontact.p_p.nil? 
        QuickcontactMailer.uncomplete_form(quickcontact).deliver 
      end 
     end 
puts 'done.' 
end 
関連する問題