Tengo esta afirmación:
File.open(some_path, 'w+') { |f| f.write(builder.to_html) }
Dónde
some_path = "somedir/some_subdir/some-file.html"
Lo que quiero que suceda es, si no hay un directorio llamado somediro some_subdiro ambos en el camino, yo quiero que crean que automágicamente.
¿Cómo puedo hacer eso?

FileUtils.mkdir_p(que es el método dedicado a su caso de uso)FileUtils#mkdir_pfunciona incluso si la jerarquía de directorios ya existe (simplemente no hace nada), por lo que esta solución se puede comprimir en esta línea única más una declaración de requerimiento:FileUtils.mkdir_p(File.dirname(some_path))Para aquellos que buscan una manera de crear un directorio si no existe , aquí está la solución simple:
Basado en el comentario de Eureka .
fuente
FileUtils.mkdir_p(File.dirname(some_path))"fuente
Según las respuestas de los demás, no pasó nada (no funcionó). No hubo error y no se creó ningún directorio.
Esto es lo que necesitaba hacer:
Necesitaba crear una variable para captar la respuesta que
FileUtils.mkdir_p('dir_name')envía de vuelta ... ¡entonces todo funcionó de maravilla!fuente
response = FileUtils.mkdir_p('dir_name'). Si no creé esta variable,FileUtils.mkdir_p('dir_name')no estaba funcionando para mí ... o al menos eso es lo que recuerdo que sucedió (esta respuesta tiene más de 1 año). No me sorprendería si una versión más nueva de Ruby corrige este problema.¿Qué tal el uso
Pathname?fuente
some_path.dirname.mkpathlugar desome_path.dirname.mkdir_pmkpath. Además, si solo tiene el directorio y no la ruta, no es necesariodirname, por ejemplo, Nombre de ruta ("somedir / some_subdir"). Mkpath funcionará de la misma manera.En líneas similares (y dependiendo de su estructura), así es como resolvimos dónde almacenar capturas de pantalla:
En nuestra configuración env (env.rb)
Y en nuestros hooks.rb
fuente
La única solución de la "biblioteca principal" de la respuesta superior estaba incompleta. Si solo desea usar bibliotecas principales, use lo siguiente:
Necesitaba esta solución porque la gema de dependencia de FileUtils, rmagick, impidió que mi aplicación Rails se implementara en Amazon Web Services, ya que rmagick depende del paquete libmagickwand-dev (Ubuntu) / imagemagick (OSX) para funcionar correctamente.
fuente