0

真的是新手问题...

我项目中的许多应用程序在 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”。

我已经尝试了上述几种变体。我的 gem 是用 bundler 管理的,但是“bundle exec rake ...”给出了相同的结果。我尝试使用gem "utilities/cleanup"而不是要求。

(我发誓,我想弄清楚如何在模块和类之间进行通信比用这种语言更重要!它总是“我在这里引用哪个代码?”和“为什么它找不到我的类写的?”)

4

1 回答 1

1

您可能需要编写::Utilities::Cleanup.perform以显式使用顶级命名空间。

于 2012-11-05T08:01:06.370 回答