【发布时间】:2014-05-19 23:57:01
【问题描述】:
在我的 Rails 项目中,我有一个我想使用 Rake 处理的外部提供文件的特定列表。我的目标是能够将这些文件的源目录指定为如下参数:
rake foofiles:process[vendor/sources]
目前我正在使用分配给常量的FileList 指定文件名(以及它们在源目录中的相对路径):
REQUIRED_FILES = FileList[
'blah.csv',
'subdir/something.csv',
'subdir/monkeys/foo.bar',
...
]
如何在每个文件前面加上我的源目录参数,以便我可以创建一个依赖于该目录中存在的文件的任务? (理想情况下,如果没有所有这些文件,什么都不会发生)
例如,如果我使用上面键入的rake 命令,我需要我的任务依赖于vendor/sources/blah.csv, vendor/sources/subdir/something.csv, vendor/sources/subdir/monkeys/foo.bar 等。
编辑: 为数组/列表中的每个元素添加前缀相对来说是微不足道的,我对如何构建我的任务及其依赖关系感到更加困惑,因此我可以实际访问我提供的源文件夹参数,然后使用新的前置文件列表作为实际完成工作的处理任务的依赖项。
如果我想要我在顶部使用的语法,主要调用的任务将不得不看起来像这样:
namespace :foofiles do
task :process, [:source_directory] => [???, my_newly_prepended_file_list] do |t, args|
# Do stuff
end
end
但我不知道如何将 :source_directory 参数提供给执行前置任务的任务,然后将前置文件列表作为依赖项返回给 :process 任务。
【问题讨论】:
-
“我需要我的任务依赖于 vendor/sources/blah.csv、vendor/sources/subdir/something.csv、vendor/sources/subdir/monkeys/foo 是什么意思.bar 等”?您希望将这些文件作为参数传递给您的 rake 任务,或者您是在谈论 rake 任务之间的依赖关系,还是完全不同的东西?
标签: ruby-on-rails ruby rake rake-task rakefile