私はdelayed_job宝石の使用を検討し始めました。それをテストするDelayed_job in railsが失敗しました
、私は歓迎メール機能に「遅延」を追加し、これは、Userモデルのafter_create内部で呼び出され
UserMailer.welcome_email(self).deliver
から
UserMailer.delay.welcome_email(self)
にそのコールを変更しました。関数が実行された後、delayed_jobテーブルにエントリが表示されます。今、私は「すくいの仕事:仕事」を実行し、コマンドラインでタスクを開始するが、私は
def self.welcome_email(user)
(とクラスメソッドにwelcome_emailメソッド宣言を変更した場合と考え
[Worker(host:Sanjay-PC pid:7008)] Starting job worker
[Worker(host:Sanjay-PC pid:7008)] Class#welcome_email failed with NoMethodError: undefined method `welcome_email' for #<Class:0x4871d60> - 0 failed attempts
[Worker(host:Sanjay-PC pid:7008)] 1 jobs processed at 0.0939 j/s, 1 failed ...
以下のようにエラーが発生します追加された自己の前に)助けるかもしれません。しかし、私は熊手のジョブを実行するときに:仕事は、私は次のエラー
rake aborted!
undefined method `welcome_email' for class `UserMailer'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/activesupport-3.0.5/lib/active_support/core_ext/module/aliasing.rb:31:in `alias_method'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/activesupport-3.0.5/lib/active_support/core_ext/module/aliasing.rb:31:in `alias_method_chain'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/delayed_job-2.1.4/lib/delayed/message_sending.rb:50:in `handle_asynchronously'
c:/mgn/mgn-r3/app/mailers/user_mailer.rb:10:in `<class:UserMailer>'
c:/mgn/mgn-r3/app/mailers/user_mailer.rb:1:in `<top (required)>'
C:/Ruby192/lib/ruby/gems/1.9.1/gems/activesupport-3.0.5/lib/active_support/dependencies.rb:454:in `load'
<Stack truncated>
を得ることは今UserMailerとしてクラスを知っているようだが、それは何らかの形でクラスメソッドwelcome_emailは表示されません。
私はRailsの3.0.5にしていますが、Rubyの1.9.2p180およびインストールdelayed_job宝石は2.1.4です -
のWindows
上の任意の場所に関連するすべての答えを見つけるように見えることはできません。あなたの考えをありがとう。
-S
私のソリューションは、(あなたのためにそれがUserMailerクラスだ)
def self.taguri
'tag:ruby.yaml.org,2002:class'
end
がそれだハンドラクラスで機能を再定義することでした
class UserMailer < ActionMailer::Base
default :from => "[email protected]"
def welcome_email(user)
@user = user
@url = "http://example.com/login"
mail(:to => user.email,
:subject => "Welcome to My Awesome Site")
end
end
お使いのメーラークラスのコードを追加してください使用して 'UserMailer.welcome_email(自己)でした。仕事を送りますか? – pjammer