加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 文件不存在时Rake clean raise错误

发布时间:2020-12-17 02:42:50 所属栏目:百科 来源:网络整理
导读:我有一个像这样的Rakefile task :clean do sh 'rm ./foo'end 我想阻止它在文件’foo’不存在时报告错误.怎么做? 我想我想要的是:有没有办法首先检查文件,然后决定下一步做什么. 例如: file 'aaa' = 'bbb' do sh 'cp bbb aaa'end 这个任务取决于文件’bbb
我有一个像这样的Rakefile

task :clean do
  sh 'rm ./foo'
end

我想阻止它在文件’foo’不存在时报告错误.怎么做?

我想我想要的是:有没有办法首先检查文件,然后决定下一步做什么.

例如:

file 'aaa' => 'bbb' do
  sh 'cp bbb aaa'
end

这个任务取决于文件’bbb’的存在,所以我想知道我可以告诉Rake我的任务取决于文件’foo’不存在吗?

解决方法

你可以通过扩展rake来做到这一点:

Rake文件:

require File.join(File.dirname(__FILE__),'unfile_rake_ext')

unfile 'target.txt' do
  File.delete('target.txt')
end

unfile_rake_ext.rb:

class UnFileTask < Rake::FileTask
  def needed?
    File.exist?(name)
  end
end

def unfile(*args,&block)
  UnFileTask.define_task(*args,&block)
end

我的控制台输出:

D:ProjectsZPersonaltmp>ls
Rakefile  unfile_rake_ext.rb

D:ProjectsZPersonaltmp>touch target.txt && ls
Rakefile  target.txt  unfile_rake_ext.rb

D:ProjectsZPersonaltmp>rake target.txt --trace
** Invoke target.txt (first_time)
** Execute target.txt

D:ProjectsZPersonaltmp>ls
Rakefile  unfile_rake_ext.rb

D:ProjectsZPersonaltmp>rake target.txt --trace
** Invoke target.txt (first_time,not_needed)

D:ProjectsZPersonaltmp>ls
Rakefile  unfile_rake_ext.rb

希望这可以帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读