0

シンプルな Ruby on Rails サービスから自分宛に通知メールを送信する機能を実装しようとしています。私はhttp://guides.rubyonrails.org/action_mailer_basics.htmlの ActionMailer の使用に関するガイドとhttp://api.rubyonrails.org/classes/ActionMailer/Base.htmlのドキュメントに従ってい ます。 / ガイドのコードを貼り付けましたが、実行しようとすると構文エラーが大量に発生します。

私は周りを検索しましたが、同じ問題を抱えている人に出くわしたことはありません。それに加えて、Rails と Ruby の経験が不足していることを考えると、根本的な何かが欠けているのではないかと思います。

これは私のメーラーです:

class NotificationMailer < ActionMailer::Base
    default from: 'info@mydomain.com'

  def uploadNotification
    mail(to: "jim@mydomain.com", subject: "Upload Notification")
  end
end

そして、私はそれを次のように呼んでいます:

NotificationMailer.uploadNotification.send

アプリがメソッドを呼び出そうとすると、次のエラーが発生します。

SyntaxError (/Users/jimmcgowan/Sites/RoR/upload/app/models/notification_mailer.rb:2: syntax error, unexpected ':', expecting kEND
default from: 'info@mydomain.com'
             ^
/Users/jimmcgowan/Sites/RoR/upload/app/models/notification_mailer.rb:5: syntax error, unexpected ':', expecting ')'
mail(to: "jim@mmydomain.com", subject: "Upload Notification")
        ^
/Users/jimmcgowan/Sites/RoR/upload/app/models/notification_mailer.rb:5: syntax error, unexpected ',', expecting kEND
mail(to: "jim@mmydomain.com", subject: "Upload Notification")
                              ^
/Users/jimmcgowan/Sites/RoR/upload/app/models/notification_mailer.rb:5: syntax error, unexpected ')', expecting kEND):

より簡単なテストを行うために、「default from:」行を削除し、uploadNotification メソッド内の mail() 呼び出しを単純なログに置き換え、呼び出しコードを NotificationMailer.uploadNotification に変更しました。ただし、代わりに NoMethodError が発生しました。

私が間違っている場所について誰かが私にいくつかの指針を与えることができますか?

アップデート

bgates の回答は正しいようで、これは Ruby のバージョン 1.8 と 1.9 の構文の違いが原因です。ただし、ホストされている仮想サーバー (古いバージョンの Suse を実行している) の Ruby インストールをアップグレードすることは非現実的でした。そのため、代わりに、Ruby 1.8 に準拠するようにクラスを書き直しました。アーカイブのために、ここに作業バージョンを示します。

class NotificationMailer < ActionMailer::Base
  def uploadNotification
    from "My Server <info@mydomain.com>"
    recipients "jim@mydomain.com"
    subject "New Notification"
  end
end

そして、私はそれを次のように呼びます:

NotificationMailer.deliver_uploadNotification
4

2 に答える 2