1

我是新手,所以可能有一个简单的解释。我想为一个简单的安装脚本创建一些目录并复制一些文件,例如

task :default => ['mktd1', 'mktd2' ] do
end

task :mktd1 do
  mkdir "testdata"
  cp "x.tmp", "testdata/x.tmp"
end

task :mktd2 do
  directory "testdata1"
  cp "x.tmp", "testdata1/x.tmp"
end

只要 testdata 目录不存在,mkdir 就可以工作,但是“目录”会默默地失败(即什么都不做),导致 rake 中止,因为该目录不存在用于 cp 命令。

我是否误解了目录指令应该做什么?

4

1 回答 1

1

所以答案是我误解了 rake 应该如何工作。为了实现我想要的,我需要声明一个依赖于 testdata1 目录的任务。例如

task :default => [ 'testdata1/x.tmp' ] do
end

directory "testdata1"

file "testdata1/x.tmp" => ["testdata1"] do
  cp "x.tmp", "testdata1/x.tmp"
end

这当然会创建一个依赖于 testdata1 目录的 file_creation 任务 x.tmp,以及一个依赖于 x.tmp 文件创建任务的默认任务。我觉得很笨。

于 2013-06-20T12:47:31.903 回答