如何引用gem中的类?

时间:2012-11-05 06:06:13

标签: ruby gem

真的是新手问题......

我的项目中的许多应用程序在gem中有很多共享代码。我正在尝试在该gem中添加一个例程,该例程将由多个应用程序中的rake任务共享。

所以在gem lib / utilities目录中我有cleanup.rb:

module Utilities
  class Cleanup

    def self.perform
      puts "Performing cleanup"
    end

  end
end

然后在应用程序中,在lib / tasks中,我有cleanup.rake:

require "utilities/cleanup"

namespace :mynamespace do
  task :do_cleanup => :environment do
    Utilities::Cleanup.perform
  end
end

我从rake mynamespace获得的所有内容:do_cleanup是“未初始化的常量Utilities :: Cleanup”。

我尝试了以上几种变体。我的宝石是用bundler管理的,但是“bundle exec rake ...”给出了相同的结果。我尝试使用gem "utilities/cleanup"代替require。

(我发誓,我撕掉我的头发试图弄清楚如何在这个语言之间进行模块和类之间的沟通!这总是“我在这里引用了哪些代码?”和“为什么它找不到我写的那课?“)

1 个答案:

答案 0 :(得分:1)

您可能需要编写::Utilities::Cleanup.perform来明确使用顶级命名空间。