Я начал создавать набор задач Rake (мой первый раз с ограниченным опытом Ruby), и когда я запускаю первую задачу, используя либо rake test
, либо rake db
, из командной строки я получаю два выхода, хотя там это только один файл в соответствующем каталоге.Rake запускает функцию дважды
rakefile.rb
require 'fileutils'
FILES = ["html", "css", "js", "svg", "otf", "eot", "ttf", "woff", "jpeg", "map", "ico", "map", "png", "db"]
desc 'test script'
task :test => [:db]
task :db do
copy_to 'data/', 'c:/xampp/htdocs/home/shared/data'
end
def copy_to(dest, src)
files = FileList.new()
files.include Dir.glob("#{src}/*.*")
FILES.each {|ext| files.include "#{src}/*.#{ext}"}
files.each do |src|
puts "copying: #{src} to #{dest}"
FileUtils.cp src, dest
end
end
Выход
(in C:/xampp/htdocs/home/gateway)
copying: c:/xampp/htdocs/home/shared/data/foo.db to data/
copying: c:/xampp/htdocs/home/shared/data/foo.db to data/
Когда я rake -T
я получаю следующее (что я бы ожидать):
(in C:/xampp/htdocs/home/gateway)
rake test # test script
Конечно foo.db
только копируется один раз, или вторая копия перезаписывает fi первый.
EDIT побежал rake test --trace
из командной строки
** Invoke test (first_time)
** Invoke db (first_time)
** Execute db
copying: c:/xampp/htdocs/home/shared/data/foo.db to data/
copying: c:/xampp/htdocs/home/shared/data/foo.db to data/
** Execute test
Является ли это выполнение :db
и затем:test
? Или :db
работает в два раза, как представляется, здесь? Что мне не хватает? Я сделал что-то не так?
* ударил лоб * Я полностью пропустил это @ Йордан. Я думал, что ограничу расширения файлов, которые могут быть включены, поэтому я переписал и сделаю это только один раз. Я также переименую эту переменную, чтобы отразить, что это расширения файлов. –