Rails:使用ruby-gmail gem会导致问题

时间:2012-04-04 23:16:24

标签: ruby-on-rails ruby gem gmail gemfile

我有简单的以下代码,它在ruby(而不是rails)应用程序中工作:

require 'gmail'

Gmail.new('my_account', 'my_password') do |gmail|
end

我可以与Gmail帐户建立连接并在那里做一些事情。

但是,我想在Rails应用程序中使用这个Gem,因此我尝试将以下内容添加到Gemfile中:

gem "ruby-gmail",         "0.2.1"
gem "mime",               "0.1"

然而,当我尝试在rake任务中使用它时,如下所示:

task :scrap_receipts_gmail => :environment do
  Gmail.new('my_account', 'my_password') do |gmail|
    puts gmail.inspect
  end
end

我收到以下错误:

  

未初始化的常量Object :: Gmail

如果我添加require 'gmail',这就解决了。我的问题是:

为什么我必须require gmail,如果我已经在Gemfile中指定了它?

1 个答案:

答案 0 :(得分:1)

模块/类命名空间必须与目录结构匹配。例如,在lib/foo/bar.rb中,当且仅当命名空间为Foo::Bar时,Rails才能自动加载,否则您必须明确要求它。

在这种情况下,Gmail被定义为一个类,它与目录结构不匹配。如果Gmail被定义为模块(名称空间::Gmail与目录结构匹配),那么您将永远不需要明确require "gmail"