0

我正在使用 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 工作?

4

1 回答 1

1

不要使用rescue nil. 永远,或者至少在你非常清楚你的代码可以做什么以及为什么要使用它之前。而是使用以下的正常形式:

begin
  do_something
rescue TheExactExceptionYouWantToHandle => e
  # handle the exception
end

这样你就可以处理你所期望的,如果它是你没有预料到的,就会爆炸。

几年前我的一位编程导师告诉我

永远不要测试您不知道如何处理的错误情况。

从表面上看,这听起来很愚蠢,但经验告诉我们,我们可能会遇到程序在试图做正确的事情时做错事情的情况。最好快速安全地崩溃并吐出错误,而不是将其拖出并损坏试图恢复或默默掩盖错误的东西。调试一个救援不当的程序可能是一个很大的痛苦,而拖尾rescue是一个常见的罪魁祸首。

于 2015-09-10T17:00:43.923 回答