真的是新手问题......
我的项目中的许多应用程序在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。
(我发誓,我撕掉我的头发试图弄清楚如何在这个语言之间进行模块和类之间的沟通!这总是“我在这里引用了哪些代码?”和“为什么它找不到我写的那课?“)
答案 0 :(得分:1)
您可能需要编写::Utilities::Cleanup.perform
来明确使用顶级命名空间。