2011-09-22 26 views
4

我對ruby和rails非常陌生(3天和計數),所以我的問題可能是愚蠢的。然而,這似乎是愚蠢的,無法通過在線搜索答案來解決。 :(不能在我的Rails3項目中包含SendGrid

我創建一個簡單的博客應用程序遵循本指南:。http://guides.rubyonrails.org/getting_started.html它工作正常,沒有任何問題

然後,我設置了SendGrid,我能夠通過它來發送郵件也很不錯。

現在,我試圖用這個sendgrid寶石:。它用「創業板安裝sendgrid」 https://github.com/stephenb/sendgrid我裝,它似乎沒有問題工作

據GitHub上的說明,我只需要在我的郵件類中添加「包含SendGrid」,我很好,我只是這麼做的:

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

但是當我運行應用程序,我得到這個錯誤:未初始化不斷的emailer :: SendGrid

我做了一些其他的事情,似乎基於我到目前爲止已經閱讀有道理:

  • 在我的Gemfile中添加了'gem sendgrid'。這增加了三條線我Gemfile.lock的:
    • sendgrid(1.0.1)
    • JSON
    • JSON
  • 加在我的environment.rb文件 '要求sendgrid'。

但是,錯誤仍然存​​在。有一件事可能表明問題是,當我查看$ LOAD_PATH時,它沒有sendgrid目錄。爲了比較,另一個以相同方式包含的gem是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("[email protected]", 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說,電子郵件是在這兩種情況下發送...

+1

所以...我想我找到了答案......我已經完全忘記了我開始的地方鐵軌服務器沿線,而下面的說明。我在某個時候重新啓動它以在調試模式下運行它,並且在此之後一切正常 - SendGrid註冊了該類別,並且發送的電子郵件一切正常。不過,我仍然不太清楚服務器和我正在修改的代碼之間的依賴關係。需要深入挖掘。 –

+0

現在,我已經用鋼軌了一段時間,我的理解是什麼問題:服務器需要以重新加載在配置目錄更改爲重新啓動。事情在控制檯中爲我工作,因爲它每次啓動時都會加載所有內容。似乎合乎邏輯,但可能會混淆新手。希望這可以幫助別人...... –

+1

我建議你把這個作爲一個回答你自己的問題,因爲它會幫助別人,當他們尋找類似的問題。 – ScottJShea

回答

2

對於誰不閱讀原始文章中的評論,答案是一旦您更改了應用程序的依賴關係或配置,就需要重新啓動服務器。

至於原因,事情在控制檯工作,每次加載一個Rails控制檯時,你重裝整個應用程序,包括新的依賴和配置文件。

相關問題