无法使用Ruby从Fastlane中测试目录是否已存在

时间:2018-11-09 03:25:47

标签: fastlane fileutils ruby-2.5

我无法测试Fastlane动作或通道中是否存在目录。当前目录(从中运行save_path = "./dir_name"的{​​{1}}或save_path = "dir_name"的以下工作均不起作用:

fastlane

我什至试图扩展相对路径:

!Dir.empty?(save_path) !Dir[save_path].empty? Dir.exist?(save_path) File.exist?(save_path) File.directory?(save_path)

我提到了以下内容:

  1. Check if directory is empty in Ruby
  2. How to check if a given directory exists in Ruby
  3. https://blog.bigbinary.com/2017/02/28/dir-emtpy-included-in-ruby-2-4.html
  4. https://ruby-doc.org/core-2.2.0/Dir.html

如何测试Fastlane中是否存在目录?感谢您的阅读和帮助!

2 个答案:

答案 0 :(得分:0)

要检查的正确格式:

Dir.exist? "#{save_path}" 

如果存在则返回true,否则返回false。

答案 1 :(得分:0)

哈哈,好吧,我发现了我的问题。我没有意识到我必须包括所有这些语句的完整路径,因为我正在使用Dir.foreach来遍历文件系统的一部分。更新后的语法是:

Dir.foreach(save_path) do |dir|
   next if dir == '.' or dir == '..'
   if (File.directory?("#{save_path}#{dir}"))
     begin
       FileUtils.mkdir_p("./#{save_path}#{dir}/images")
     rescue StandardError => e
       UI.message("Failed to make directory ./#{save_path}#{dir}/images: #{e.to_s}")
       return
     end
   end
end

在if语句中,这与File.directory?("#{dir}")相对。我认为Ruby DirFileUtil库在路径的其余部分看起来相对于当前目录。