Pregunta

Tengo una aplicación Rails donde cada usuario tiene una base de datos separada.(siguiendo el consejo de Joel Spolsky al respecto).Quiero ejecutar migraciones de bases de datos desde la aplicación Rails para crear una nueva base de datos y tablas para este usuario.

¿Cuál es la forma más sencilla de hacer esto?

Quizás la migración de la base de datos no sea la mejor para este tipo de cosas.¡Gracias!


Sería bueno si pudiera ser un proceso completamente automatizado.El siguiente proceso sería ideal.

  1. Un usuario se registra en nuestro sitio para utilizar esta aplicación web
  2. Se ejecutan migraciones para crear esta base de datos de usuarios y configurar las tablas correctamente.

¿Existe alguna forma de llamar a una tarea de rake desde una aplicación Ruby?

¿Fue útil?

Solución

Para responder parte de su pregunta, así es como ejecutaría una tarea de rake desde dentro del código Rails:

require 'rake'
load 'path/to/task.rake'

Rake::Task['foo:bar:baz'].invoke

Eso sí, no tengo idea de cómo (o por qué) podrías tener una base de datos por usuario.

Otros consejos

Usamos archivos de configuración separados para cada usuario.Entonces, en el directorio config/ tendríamos roo.database.yml que se conectaría a mi base de datos personal, y lo copiaría sobre el archivo Database.yml que utilizan Rails.

Estábamos pensando en expandir Rails Rakefile para poder especificar el desarrollador como una variable de entorno, que luego seleccionaría una configuración de base de datos específica, permitiéndonos tener solo un archivo base de datos.yml.Sin embargo, no hemos hecho esto porque el método anterior funciona bastante bien.

De hecho, he descubierto una buena forma de ejecutar migraciones de bases de datos desde una aplicación:

ActiveRecord::Migrator.migrate("db/migrate/")

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top