2014-07-18 113 views
0

我想要一些代码来运行,只要输入文件被改变。以下是我在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

对环境任务的依赖关闭了文件修改时间依赖性检查(我想这是因为:environment任务总是运行)。

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

file INPUT_FILE_PROCESSED => INPUT_FILE do 
    require_relative '../../config/environment' 
相关问题