2017-03-01 5 views
1

私はメーラーの作業をテストしようとしています。通常、レール上で私は自分のコードロジックをコンソールレベルでテストし、それが成功すると、それを実際のソースコードに入れます。私はApplicationMailerで作業中に同じことをしようとしています。私はいくつかの他のソリューションに続き、最初の最初のactionmailerのNoMethodError:未定義メソッド `mail 'for main:レールコンソールのオブジェクト

ActionMailer::Base.delivery_method = :smtp 
ActionMailer::Base.smtp_settings = { 
    address: 'smtp.gmail.com', 
    port: 587, 
    domain: 'gmail.com', 
    authentication: 'plain', 
    enable_starttls_auto: true, 
    user_name: '***********', 
    password: '******' 
} 

を設定するには、次のレール上のコンソールを実行して、私は自分のコードを実行しました:私は次のエラーを取得しています

y.include? x 
    if true 
    @receiver = Model.where(category_id: "#{x}").pluck(:email) 
    mail(to: @receiver, subject: @subject) 
    end 

NoMethodError: undefined method `mail' for main:Object 
    from (irb):19 

誰かがレールのコンソールでこの作業をどうやって行うのか教えてください。

+0

メーラーの 'mail(to:@receiver、subject:@subject)'という行はありますか? –

+0

か、コンソールで直接実行しています –

+0

これにメーラーがありますか? – ashvin

答えて

6

あなたはRailsが多くの便利を設定し、次のよう

ActionMailer::Base.mail(from: "[email protected]", to: @receiver, subject: @subject, body: "Test").deliver 
+0

レールコンソール? – user3576036

+0

はい、 'rails console'で実行してください – ashvin

+0

実際にこの機能が必要なコントローラでこのメソッドを呼び出せますか? – user3576036

1

を使用してメールをテストすることができますが、例えばできるように、コントローラーから簡単にメールを送信できます。

コンソールでは、コントローラのコンテキスト内にいないため、これを既に設定していません。ビューヘルパーにも同じことが起こります。

メールメソッドを使用するには、Rubyに検索方法を伝える必要があります。

このようにメールを送信するのに十分でなければならない:

ActionMailer::Base.mail(from: "[email protected]", to: @receiver, subject: @subject, body: "Test").deliver 

あなただけのメール世代をテストしたい場合、あなたはまた、別のdelivery_method Sを使用することができますに注意してくださいではなく、まだ統合あなたのSMTPで。

関連する問題