开发者

uninitialized constant error when run my rake task, why?

开发者 https://www.devze.com 2023-02-17 08:51 出处:网络
I 开发者_开发知识库have a class which is NOT an ActiveRecord. the class is located under lib/room/

I 开发者_开发知识库have a class which is NOT an ActiveRecord. the class is located under lib/room/

lib/room/car_painter.rb

class ROOM::CarPainter

  def paint_car
    ...
  end

end

Then, I have a rake task: under /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

When I run rake new_car:paint, I got the error message "uninitialized constant ROOM::CarPainter", Why??

--EDIT---

I also tried to use class function instead of instance function, like following:

class ROOM::CarPainter

   def self.paint_car
        ...
   end

end

and

namespace :new_car do

  desc "Paint new cars"
  task :paint => :environment do
    ROOM::CarPainter.paint_car #ERROR HERE- uninitialized constant
  end

end

But I get the same error message...why again


This is rake file.

desc 'This is just a testing rake task'
  task :update_ts => :environment do |t,args|
  puts 'ashish is great'
  include TestLib
  print_sm
end

This is lib/test_lib.rb file.

module TestLib
 def print_sm
  puts "Hello World in Lib Directory"
 end
end

You just need to include that module.

Edited:

I guess problem is your lib/* folder loading. Try with this in your application.rb file:

 config.autoload_paths += Dir["#{config.root}/lib/**/"]


In rails you need to require from the root and rails 3 practice is the following

require Rails.root.join('path')
0

精彩评论

暂无评论...
验证码 换一张
取 消