2016-04-20 12 views
0

バックグラウンドで自分のメールアプリをメールで送信できません。私はバックグラウンド以外の状況でそれをやろうとすると、まったく同じウェルカムメールを送信することができます。私はherokuでこのアプリをテストしており、heroku redisを追加し、ダッシュボードで作業者の機能を有効にしました。私はredisまたはsidekiqでこの問題を解決するのに十分な経験がありません。この問題の修正方法に関する提案を探してください。ここでHeroku Redisでバックグラウンドでメールを送信しないメール

は私の工夫登録コントローラーでのコマンドです:

class RegistrationsController < Devise::RegistrationsController 

    def create 
    super 
    if @user.persisted? 
     WelcomeEmailJob.perform_later(current_user.id) 
    end 
    end 
end 

バックグラウンドジョブコード:

class WelcomeEmailJob < ActiveJob::Base 
    queue_as :default 

    def perform(user_id) 
    user = User.find(user_id) 
    WelcomeMailer.welcome_email(user).deliver  
    end 
end 

ウェルカムメール:

class WelcomeMailer < ApplicationMailer 
def welcome_email(user) 
    @user = user 
    @url = 'http://example.com/login' 
    mail(to: @user.email, subject: 'Welcome to My Website') 
    end 
end 

私はこの応答のようなものを見続けますヒロク丸太の中で

2016-04-20T00:11:25+00:00 app[heroku-redis]: source=REDIS sample#active-connections=1 sample#load-avg-1m=0.09 sample#load-avg-5m=0.125 sample#load-avg-15m=0.12 sample#read-iops=0 sample#write-iops=0.020492 sample#memory-total=15405632.0kB sample#memory-free=13388156.0kB sample#memory-cached=493144kB sample#memory-redis=295880bytes sample#hit-rate=1 sample#evicted-keys=0 

+0

メールアドオンとして何を使用していますか?正しく構成されていることを確認できますか? – M00B

+0

私のメール設定は実際に正しく設定されています。私はHerokuでSendgridを使用していて、遅延を使用しないと正常に動作します。 – JohnOHFS

+0

http://blog.remarkablelabs.com/2013/01/using-sidekiq-to-send-emails-asynchronously – illusionist

答えて

0

どのようにジョブを開始していますか?あなたはcronジョブのセットアップを持っていますか?また、Railsの最近のバージョンを使用している場合、配信は廃止され、deliver_nowに置き換えられました。

試してみてください。

class RegistrationsController < Devise::RegistrationsController 

    def create 
    super 
    if @user.persisted? 
     WelcomeMailer.welcome_email(user).deliver_later 
    end 
    end 
end 

これは、メーラーのキューにエンキューします。アクションメーラーがあなたのためにそれを世話するので、追加の職業クラスは必要ありません。あなたは、すべての労働者が解雇されていることを確かめる必要があります。私はheroku固有のドキュメンテーションに従う必要があると思うジョブを処理する必要があります(私は英雄を使用しません。

+0

これはRails 5の関数です。私はRails 4を使用しています。私の現在のバージョンを修正するのは大したことですか? – JohnOHFS

+0

これはRails 4.2以降です。 – rorykoehler