Не могу проверить, существует ли каталог из Fastlane с Ruby - PullRequest
0 голосов
/ 09 ноября 2018

Я не могу проверить, существует ли каталог в действии 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)

Я сослался на следующее:

  1. Проверить, является ли каталог пустым в Ruby
  2. Как проверить, существует ли данный каталог в Ruby
  3. https://blog.bigbinary.com/2017/02/28/dir-emtpy-included-in-ruby-2-4.html
  4. https://ruby -doc.org / ядро-2.2.0 / Dir.html

Как можно проверить, существует ли каталог из Fastlane? Спасибо за чтение и за помощь!

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

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

Это против File.directory?("#{dir}") в операторе if. Я думал, что библиотеки Ruby Dir и FileUtil будут выглядеть относительно текущего каталога для оставшейся части пути.

0 голосов
/ 09 ноября 2018

Правильный формат, чтобы проверить это:

Dir.exist? "#{save_path}" 

Вернет true, если оно существует, или false, если нет.

...