运行我的rake任务时未初始化的常量错误,为什么?

时间:2011-03-15 08:31:05

标签: ruby-on-rails ruby-on-rails-3

我有一个不是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

但是我得到了同样的错误信息......为什么又一次

2 个答案:

答案 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')