Рішення, що відповідає лише основній бібліотеці, було неповним. Якщо ви хочете використовувати лише основні бібліотеки, використовуйте наступне:
target_dir = ""
Dir.glob("/#{File.join("**", "path/to/parent_of_some_dir")}") do |folder|
target_dir = "#{File.expand_path(folder)}/somedir/some_subdir/"
end
# Splits name into pieces
tokens = target_dir.split(/\//)
# Start at '/'
new_dir = '/'
# Iterate over array of directory names
1.upto(tokens.size - 1) do |n|
# Builds directory path one folder at a time from top to bottom
unless n == (tokens.size - 1)
new_dir << "#{tokens[n].to_s}/" # All folders except innermost folder
else
new_dir << "#{tokens[n].to_s}" # Innermost folder
end
# Creates directory as long as it doesn't already exist
Dir.mkdir(new_dir) unless Dir.exist?(new_dir)
end
Мені потрібно було це рішення, тому що дорогоцінний камінь залежності FileUtils rmagick заважав моєму додатку Rails розгортатися на веб-сервісах Amazon, оскільки rmagick залежить від належної роботи пакета libmagickwand-dev (Ubuntu) / imagemagick (OSX).