lib / tasks中的tasks.rake可以查看lib中的其他ruby文件吗? [滑轨]

时间:2015-04-22 01:59:17

标签: ruby-on-rails ruby rake

我一直在收到一个错误,因为它无法从rake任务中“看到”我的lib中的一个类。

即我有我的佣金任务:

task task_name: :environment do

    object=ClassA.new
    ModuleA.read(object)
end

moduleA.rbclassA.rb都在lib,而佣金任务在lib/tasks.rake

我尝试运行rake task_name时遇到的错误是:

rake aborted!
NameError: uninitialized constant ClassA

我试图要求模块/类,但我最终得到:

rake aborted!
LoadError: cannot load such file -- lib/classA

2 个答案:

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

那应该有用。