无法使用 Ruby 测试 Fastlane 中的目录是不是已存在
Posted
技术标签:
【中文标题】无法使用 Ruby 测试 Fastlane 中的目录是不是已存在【英文标题】:Can't test if directory already exists from within Fastlane with Ruby无法使用 Ruby 测试 Fastlane 中的目录是否已存在 【发布时间】:2018-11-09 03:25:46 【问题描述】:我无法从 Fastlane 操作或通道中测试目录是否存在。对于当前目录中的save_path = "./dir_name"
和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)
我什至尝试扩展相对路径:
File.exists? File.expand_path(save_path)
我提到了以下内容:
-
Check if directory is empty in Ruby
How to check if a given directory exists in Ruby
https://blog.bigbinary.com/2017/02/28/dir-emtpy-included-in-ruby-2-4.html
https://ruby-doc.org/core-2.2.0/Dir.html
如何测试一个目录是否存在于 Fastlane 中?感谢您的阅读和帮助!
【问题讨论】:
【参考方案1】:检查这个的正确格式:
Dir.exist? "#save_path"
如果存在则返回 true,否则返回 false。
【讨论】:
感谢您的回复!如上所述,此语法不等同于Dir.exist?(save_path)
吗?感谢您的洞察力!
是的,你是对的,我没有看到你也是这样写的。很高兴你找到了解决方案!【参考方案2】:
LOL 好吧,我发现了我的问题。我没有意识到我必须包含每个语句的完整路径,因为我使用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 Dir
和 FileUtil
库在路径的其余部分看起来相对于当前目录。
【讨论】:
以上是关于无法使用 Ruby 测试 Fastlane 中的目录是不是已存在的主要内容,如果未能解决你的问题,请参考以下文章
运行 UI 测试时,Fastlane 扫描“无法合成事件”,适用于 Xcode
运行 sudo gem install fastlane -NV 在安装 fastlane rubyzip 需要 ruby version >= 2.4 时抛出错误