2014-07-18 206 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' 
相關問題