为什么每次都会运行我的rake文件代码?

时间:2014-07-18 22:04:55

标签: ruby-on-rails rake

我想在输入文件发生更改时运行一些代码。这是我在seed.rake中写的:

INPUT_FILE = 'input-file'
INPUT_FILE_PROCESSED = '.input-file-processed'

file INPUT_FILE_PROCESSED => [INPUT_FILE, :environment].flatten do
    # Expensive code omitted.
    touch INPUT_FILE_PROCESSED
end

task all: [INPUT_FILE_PROCESSED]

我认为仅当INPUT_FILEINPUT_FILE_PROCESSED更新时才会运行昂贵的代码,但每次运行rake seed:all时,都会运行昂贵的代码:

$ rake seed:all
[2 minutes pass]
$ ls -al  .input-file-processed input-file
Jul 18 14:56 .input-file-processed
Jul 18 14:12 input-file
$ rake seed:all
[2 minutes pass]
$ ls -al  .input-file-processed input-file
Jul 18 15:01 .input-file-processed
Jul 18 14:12 input-file

我正在使用rake 10.3.1。

1 个答案:

答案 0 :(得分:1)

依赖于:environment任务搞砸了文件修改时依赖性检查(我想这是因为:环境任务总是在运行)。

您可以仅依赖文件,然后手动需要环境:

file INPUT_FILE_PROCESSED => INPUT_FILE do
  require_relative '../../config/environment'