4

私はRubyとRails(3日とカウント)に非常に慣れていないので、私の問題はおそらく愚かなことです。しかし、それはオンラインで答えを検索することによって解決することができなかった愚かな何かのようです。:(

このガイドに従って簡単なブログアプリを作成しています:http://guides.rubyonrails.org/getting_started.html。正常に動作し、問題はありません。

次に、SendGridを設定すると、SendGridを介してメールを送信することもできます。

今、私はこのsendgrid gemを使おうとしています:https ://github.com/stephenb/sendgrid 。'gem install sendgrid'を使用してインストールしましたが、問題なく動作しているようです。

githubの指示によると、メーラークラスに「includeSendGrid」を追加するだけで、準備は完了です。私はまさにそれをしました:

class Emailer < ActionMailer::Base
    include SendGrid
    ...
end

しかし、アプリを実行すると、次のエラーが発生します:初期化されていない定数Emailer :: SendGrid

これまでに読んだ内容に基づいて、理にかなっていると思われる他のいくつかのことを行いました。

  • Gemfileに「gemsendgrid」を追加しました。これにより、Gemfile.lockに3行が追加されました。
    • sendgrid(1.0.1)
    • json
    • json
  • 私のenvironment.rbファイルに「requiresendgrid」を追加しました。

それでも、エラーは引き続き発生します。問題を示している可能性があるのは、$ LOAD_PATHを見ると、sendgridディレクトリがないことです。比較のために、同じ方法で含まれている別の宝石はsqlite3であり、そこに「... / sqlite3-1.3.4 / lib」パスが表示されますが、「... / sendgrid-1.0.1/lib」は表示されません。 "。

今回、どんな愚かさが私を苦しめたのか、誰かが見分けることができますか?

編集:

とても面白いものを発見しました。少なくとも私にとっては...レールコンソールに入ると、実際には問題なく動作しているように見えます。これが私のセッションの出力です:

ruby-1.9.2-p290 :006 > include SendGrid
 => Object 
ruby-1.9.2-p290 :007 > sendgrid_category :use_subject_lines
 => :use_subject_lines 
ruby-1.9.2-p290 :008 > sendgrid_category "Welcome"
 => "Welcome" 
ruby-1.9.2-p290 :009 > p = Post.new(:title => "A new post", :content => "With garbage text")
 => #<Post id: nil, name: nil, title: "A new post", content: "With garbage text", created_at: nil, updated_at: nil> 
ruby-1.9.2-p290 :010 > Emailer.send_email("nick@sidebark.com", p).deliver
 => #<Mail::Message:2194904560, Multipart: false, Headers: <Date: Thu, 22 Sep 2011 16:52:41 -0700>, <From: ... blah, bah, blah...>>

電子メールが送信され、カテゴリがSendGridによって登録されました(統計ページで確認できました)。

したがって、大きな問題は、コンソールからコマンドを実行しているときに、アプリでSendGridのみを含めることができるのはなぜですか?環境などの違いは何ですか?

また、development.logに両方の状況でメールが送信されたと記載されている場合でも、メールはコンソールから送信されますが、アプリフローからは送信されないことに注意してください...

4

1 に答える 1

2

元の投稿のコメントを読んでいない人にとっては、依存関係やアプリの構成を変更したら、サーバーを再起動する必要があるというのが答えです。

コンソールで動作していた理由については、Railsコンソールをロードするたびに、新しい依存関係と構成ファイルを含むアプリ全体をリロードしています。

于 2012-04-16T22:16:03.770 に答える