我有一个不是ActiveRecord的课程。 该课程位于lib / room /
下LIB /间/ car_painter.rb
class ROOM::CarPainter
def paint_car
...
end
end
然后,我有一个rake任务: 在/ lib / tasks /
下/lib/tasks/new_car_painting.rake
namespace :new_car do
desc "Paint new cars"
task :paint => :environment do
painter = ROOM::CarPainter.new #ERROR HERE- uninitialized constant
painter.paint_car
end
end
当我运行 rake new_car:paint 时,我收到错误消息“ uninitialized constant ROOM :: CarPainter ”,为什么?
- 编辑 - -
我也尝试使用类函数而不是实例函数,如下所示:
class ROOM::CarPainter
def self.paint_car
...
end
end
和
命名空间:new_car do
desc "Paint new cars"
task :paint => :environment do
ROOM::CarPainter.paint_car #ERROR HERE- uninitialized constant
end
end
但是我得到了同样的错误信息......为什么又一次
答案 0 :(得分:3)
这是rake文件。
desc 'This is just a testing rake task'
task :update_ts => :environment do |t,args|
puts 'ashish is great'
include TestLib
print_sm
end
这是lib / test_lib.rb文件。
module TestLib
def print_sm
puts "Hello World in Lib Directory"
end
end
您只需要包含该模块。
编辑:
我猜问题是你的lib / *文件夹加载。 在application.rb文件中尝试使用它:
config.autoload_paths += Dir["#{config.root}/lib/**/"]
答案 1 :(得分:0)
在rails中你需要从root和rails 3练习如下
require Rails.root.join('path')