ruby on rails - Almacenar el archivo en el directorio tmp en heroku Rails
ruby-on-rails file (1)
En mi trabajo retrasado, intenté crear un archivo en la carpeta tmp
file_path = Rails.root.join(''tmp'', "#{file_name}." + file_extension);
exported_file = kit.to_pdf
# Save file to disk
File.open(file_path, ''wb'') do |file|
file << exported_file
end
Funciona bien en local, pero en Heroku hay un error en la Tarea Retrasada "No existe tal archivo o directorio - /app/tmp/test.pdf"
Entonces, ¿cómo puedo resolver este problema. No quiero almacenar el archivo en S3. Gracias
Heroku utiliza lo que se llama un sistema de archivos efímero . Esto significa que solo se puede acceder a su sistema de archivos local a un único dinamómetro, y una vez que el dinamómetro se detiene, reinicia o mueve, todos los archivos del sistema de archivos local se destruyen.
La única forma para que su proceso de Trabajo demorado transfiera archivos a un proceso externo sería almacenar los archivos en una ubicación más permanente. Esto podría ser S3, una base de datos, archivos de Rackspace, etc., pero para Heroku no puede ser el sistema de archivos local.
Sin embargo, si solo está buscando almacenar el archivo en una ubicación temporal temporal, está bien usar el sistema de archivos local. Parece que puede estar teniendo problemas porque el directorio /app/tmp
puede no existir.
Intente agregar esto a su trabajador:
Dir.mkdir(Rails.root.join(''tmp''))
O, agregue el directorio tmp
a su repositorio git.
mkdir tmp
touch tmp/.keep
git add tmp/.keep
git commit -m "Add tmp directory to app repository."