【问题标题】:Rake runs function twiceRake 运行函数两次
【发布时间】:2015-08-19 17:48:01
【问题描述】:

我开始创建一组 Rake 任务(我的第一次,Ruby 经验有限),当我使用 rake testrake db 从命令行运行第一个任务时,我得到两个输出,即使有只是相关目录中的一个文件。

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 只会被复制一次,否则第二个副本会覆盖 第一个。

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 是否像这里看起来那样运行两次?我错过了什么?我是不是做错了什么?

【问题讨论】:

    标签: ruby rake rakefile


    【解决方案1】:

    问题是您将foo.db 添加到files FileList 两次:

    files.include Dir.glob("#{src}/*.*")
    FILES.each {|ext| files.include "#{src}/*.#{ext}"}
    

    因为FILES(这是一个具有误导性的变量名)包含"db",所以在第一行您将*.* 添加到files,在第二行您将*.db 添加到@987654329 @。

    不清楚为什么你有这两行,因为第一行会添加目录中的每个文件,所以第二行只会添加你已经添加的文件。

    【讨论】:

    • 撞到额头我完全错过了@Jordan。我在想我会限制可以包含的文件的扩展名,所以我会重写并只做一次。我还将重命名变量以反映它是文件扩展名。
    猜你喜欢
    • 2017-02-16
    • 1970-01-01
    • 2020-11-29
    • 2021-06-29
    • 2017-05-20
    • 2015-07-06
    • 2021-10-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多