0

スクリーンショットを自動的に作成するために fastlane と snapshot を使用しています。これを容易にするために、データをアプリにコピーする必要があります。この場合、.app コンテナー内の 1 つのフォルダーから別のフォルダーへの一連のフォルダーとドキュメント。

これまでのところ、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 に答える