Не могу проверить, существует ли каталог из Fastlane с Ruby

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

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

2 ответа

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

Dir.exist? "#{save_path}" 

Вернет истину, если она существует, или ложь, если нет.

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}") в этом, если заявление. Я думал, что Рубин Dir а также FileUtil библиотеки будут выглядеть относительно текущего каталога для оставшейся части пути.

Другие вопросы по тегам