【发布时间】:2015-09-10 12:46:57
【问题描述】:
我正在使用 fastlane 和快照自动创建屏幕截图。为此,我需要将数据复制到应用程序中。在这种情况下,一系列文件夹和文档从一个文件夹到 .app 容器中的另一个文件夹。
到目前为止,正在创建 Documents 文件夹,但从未将任何文件复制到其中。在这一点上,我不确定我是否错误地提供了路径,或者我可能做错了什么导致这种情况。可能只是因为我对 Ruby 不太熟悉,所以我编写了错误的代码。
任何建议将不胜感激,所以请告诉我,我缺少什么?
example_files = "./sample_data/Documents"
folder_name = "Documents"
setup_for_device_change do |lang, device|
app_path = "/tmp/snapshot/build/SyncSpace.app/"
FileUtils.mkdir_p(File.join(app_path, folder_name))
Dir.glob(File.join(example_files, '*')).each do |example_path|
FileUtils.cp_r(example_path, File.join(app_path, folder_name)) rescue nil # in case the file already exists
end
end
更新 - 最后我的问题是我使用的路径对于我要传输的文件不能正常工作。当我给它一个从根级别到我需要的文件夹的完整路径时,它就可以工作了。尝试使用较短的路径仅包含工作目录上的其他文件夹会失败。
作为跟进,当我的工作目录是 .../fastlane 并且我的数据在 .../fastlane/sample_data/Documents 中时,为什么不直接使用 ./sample_data/Documents 工作?
【问题讨论】:
-
我看到了两个选项:要么你的 glob 没有返回任何东西(因此永远不会进入块),要么你的
rescue nil引发并吞下了异常。 -
我在其中添加了一些 puts 行来检查,你是对的,它永远不会进入块。我是否认为这意味着它从一开始就没有找到要复制的文件?
-
使用
puts可以进行调试,但它非常原始并且是一种霰弹枪方法。我强烈建议学习如何使用调试器或 Pry 或 IRB 作为调试器。调试器让您可以窥视正在运行的代码,准确了解正在发生的事情,并准确跟踪程序编写时的逻辑。
标签: ruby ios-simulator fileutils fastlane