ruby-on-rails file heroku delayed-job tmp

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."