我的Rails3项目中不能包含SendGrid

时间:2011-09-22 22:35:34

标签: ruby-on-rails include gem sendgrid

我对ruby和rails很新(3天和计数),所以我的问题可能是愚蠢的。但是,通过在线搜索答案似乎无法解决这个问题。 :(

我正在按照本指南创建一个简单的博客应用:http://guides.rubyonrails.org/getting_started.html。它工作正常,没有问题。

然后我设置了SendGrid,我也可以通过它发送电子邮件。

现在,我正在尝试使用这个sendgrid gem:https://github.com/stephenb/sendgrid。我使用'gem install sendgrid'安装它,它似乎没有问题。

根据github上的说明,我只需要在我的邮件程序类中添加“include SendGrid”,我很高兴。我做到了这一点:

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

但是当我运行应用程序时,我收到此错误:未初始化的常量Emailer :: SendGrid

根据我到目前为止所阅读的内容,我做了其他一些似乎有意义的事情:

  • 在我的Gemfile中添加了'gem sendgrid'。这为我的Gemfile.lock添加了三行:
    • sendgrid(1.0.1)
    • JS​​ON
    • JS​​ON
  • 在我的environment.rb文件中添加了'require sendgrid'。

然而,错误仍然存​​在。可能表明存在问题的一件事是,当我查看$ LOAD_PATH时,它没有sendgrid目录。为了比较,以相同的方式包含的另一个gem是sqlite3,我在那里看到“... / sqlite3-1.3.4 / lib”路径,但是我没有看到“... / sendgrid-1.0.1 / lib ”

有人能辨别出这次困扰我的愚蠢行为吗?

编辑:

我发现了一些非常有趣的东西。至少对我来说......如果我进入rails控制台,事情看起来似乎工作正常。这是我的会话的输出:

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表示在两种情况下都发送了电子邮件......

1 个答案:

答案 0 :(得分:2)

对于那些没有阅读原帖的评论的人来说,答案是一旦你对应用程序的依赖关系或配置进行了更改,就需要重新启动服务器。

就事情在控制台中工作的原因而言,每次加载Rails控制台时,都会重新加载整个应用程序,包括新的依赖项和配置文件。