我一直在收到一个错误,因为它无法从rake任务中“看到”我的lib中的一个类。
即我有我的佣金任务:
task task_name: :environment do
object=ClassA.new
ModuleA.read(object)
end
moduleA.rb
和classA.rb
都在lib
,而佣金任务在lib/tasks.rake
我尝试运行rake task_name
时遇到的错误是:
rake aborted!
NameError: uninitialized constant ClassA
我试图要求模块/类,但我最终得到:
rake aborted!
LoadError: cannot load such file -- lib/classA
答案 0 :(得分:0)
您需要提取文件。请记住,您的路径需要相对于rakefile所在的目录。
load './ClassA.rb'
load './moduleA.rb'
require 'ClassA'
需求是多余的,但如果您的classA.rb
文件非常复杂,则可能需要。另请注意,您的命名风格与Rails中的默认Inflector不匹配,但如果您只使用纯ruby,这应该不重要,尽管您应遵循惯例。
答案 1 :(得分:0)
如果你的lib/
文件夹被Rails加载,你不需要任何东西来调用其他的库,因为Rails自动加载器会为你完成这项任务。
默认情况下,Rails不包含lib/
文件夹,因此您必须将此行添加到config/application.rb
文件中:
config.autoload_paths << File.join(config.root, 'lib')
那应该有用。