目前,我正在尝试拆分rake文件以更好地组织它们。为此,我在rake
目录中添加了assets
文件夹,该文件夹为每组任务保留一个rake文件。
因为我来自PHP,所以我只具备Ruby / Rake的非常基础的知识,并且在加载文件后无法运行我的 namespace 默认操作。Rake :: Task ...
中被赞扬的app:init
-string向我的CL抛出了错误:
rake aborted! uninitialized constant TASK
这是 namespace /类(如果这是正确的词)。
task :default => [ 'app:init' ]
namespace :app do
rake_dir = "#{Dir.pwd}/assets/rake/"
rake_files = FileList.new( "#{rake_dir}*" )
desc "Loads rake modules (Default action)"
task :init do
puts "\t Importing rake files for processing"
puts "\t loading..."
rake_files.each() { |rake|
puts "\t #{rake}"
require rake
# @link rubular.com
name = rake.split( rake_dir ).last.gsub( /.rb\z/, '' )
puts "\t #{name}"
#Rake :: Task[ "#{name}:default" ].invoke
}
end
end
提前致谢。
编辑:至少,我可以确定文件已加载,因为回显了这些文件开头的纯
puts "file loaded"
。问题似乎仅在于未加载已加载rake文件中 namespace 的:default
操作。
最佳答案
您可以将任务放入rakelib/
默认加载的rake
文件夹中,也可以通过以下方式在Rakefile
中添加特定的文件夹:
Rake.add_rakelib 'lib/tasks'
关于rake - 加载rake文件并运行其他文件中的任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13762152/