2012-02-08 10 views
7

Tengo una utilidad de importación que me gustaría usar para crear registros en heroku.Carga de un archivo local durante la tarea de rastrillo heroku

Quiero usar eso para importar datos desde un archivo en mi máquina de desarrollo sin tener que verificar el archivo en el repositorio. ¿Hay alguna manera de hacer esto con una tarea de rake o la joya heroku?

Pude cargar el archivo en un formulario web que podría agotar el tiempo de espera, o podría almacenar el archivo en S3, pero parece bastante excesivo.

¿Alguna manera fácil de hacer esto?

Respuesta

2

No, no es posible acceder a los archivos locales en su máquina de desarrollo desde cualquier dispositivo ejecutado con heroku run (que incluye tareas de rake, suponiendo que está en cedro).

que he tomado el siguiente enfoque:

  • datos semilla se almacena en el repositorio y cargado usando seed_fu datos

  • no semilla se carga en S3 a través de un formulario web, y vinculado a un modelo DataFile usando clip (un poco exagerado, pero lo estaba usando para imágenes en otro lugar). Luego puedo usar tareas de rake o trabajo retrasado para procesar los archivos. Definitivamente es un poco sobrecargado.

5

Puede leer desde el estándar en su máquina.

heroku run rake whatever <./file 
+2

Cuál sería la sintaxis para acceder a estos datos de archivos dentro de la definición de la tarea? – zrisher

+1

'$ stdin.read' funciona para mí. – dojosto

1

He encontrado un enfoque realmente simple para esto es utilizar gist para los datos de entrada. Copie y pegue sus datos en una esencia y luego pase el enlace a la esencia sin procesar como un param a su tarea de rake. Luego, en la tarea de rake, abre el archivo remoto.

Por ejemplo, si está cargando un archivo YAML:

YAML.parse(open(file_name)).to_ruby.with_indifferent_access 
Cuestiones relacionadas