我想在输入文件发生更改时运行一些代码。这是我在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_FILE
比INPUT_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。
答案 0 :(得分:1)
依赖于:environment任务搞砸了文件修改时依赖性检查(我想这是因为:环境任务总是在运行)。
您可以仅依赖文件,然后手动需要环境:
file INPUT_FILE_PROCESSED => INPUT_FILE do
require_relative '../../config/environment'