【问题标题】:Method to delete all files in Ruby删除Ruby中所有文件的方法
【发布时间】:2015-04-09 09:01:06
【问题描述】:

我可能会在这之后踢自己,但我在我的黄瓜应用程序中创建了一个方法,该方法将删除目录中的所有文件,但它似乎没有执行,因为运行它后文件仍然存在,但如果我跳入我的控制台并逐步运行命令。

调用方法本身时这不起作用的任何原因?

def clean_reports
  js_error_path = File.join(File.dirname(__FILE__), '/report/js_errors')
  screenshot_path = File.join(File.dirname(__FILE__), '/report/screenshots')
  FileUtils.rm_rf(Dir.glob(js_error_path + '/*'))
  FileUtils.rm_rf(Dir.glob(screenshot_path + '/*'))
end

如果我可以只调用一次FileUtils.rm_rf 会很方便吗?这可能吗?

我的目录结构是这样的

-cucumber_tests
  -report
   -js_errors
     (files)
   -screenshots
     (files)

谢谢

【问题讨论】:

  • puts "#{js_error_path}" 在它被分配之后——给你什么?顺便说一句,Dir 接受枚举表示法:Dir['report/{js_errors,screenshots}/**/*']
  • puts 输出 './report/js_errors'
  • nil?这几乎是不可能的,因为File.join 是字符串感知的连接函数。无论如何,在您的环境中 File.dirname __FILE__ 可能与您在控制台中获得的环境不同。
  • 抱歉,我的错误,已经编辑了我之前的评论
  • 所以我需要使用与File.dirname __FILE__ 不同的东西吗?我宁愿不硬编码路径,因为根目录的位置可能位于其他人机器上的不同位置

标签: ruby


【解决方案1】:

以下行会有所帮助,

FileUtils.rm_rf(Dir['./report/js_errors', './report/screenshots']) 

【讨论】:

  • Dir['./report/{js_errors,screenshots}'] 看起来更漂亮。
  • 谢谢两位,非常有帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-24
  • 2021-03-06
  • 1970-01-01
  • 1970-01-01
  • 2018-12-02
相关资源
最近更新 更多