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



我有以下简单的代码,它在 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

我收到以下错误:

未初始化的常量 对象::Gmail

如果我添加require 'gmail',这将得到解决.我的问题是:

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

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

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

最新更新