2008-09-02 4 views
0

J'ai une application rails dans laquelle chaque utilisateur dispose d'une base de données distincte. (prenant le conseil de Joel Spolsky à ce sujet). Je veux exécuter des migrations DB à partir de l'application rails pour créer une nouvelle base de données et des tables pour cet utilisateur.Exécution des migrations de base de données à partir de l'application

Quelle est la manière la plus simple de le faire? Peut-être que la migration db n'est pas la meilleure pour ce genre de choses. Merci!


Ce serait bien si cela pouvait être un processus complètement automatisé. Le processus suivant serait idéal.

  1. Un utilisateur se inscrit sur notre site pour utiliser cette application Web
  2. Les migrations sont gérées pour créer cette base de données des utilisateurs et obtenir la configuration des tables correctement

Est-il possible d'appeler une tâche de coupe de une application de rubis?

Répondre

1

Pour répondre à une partie de votre question, voici comment vous exécutez une tâche Rake à partir du code Rails à l'intérieur:

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

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

Rappelez-vous, je ne sais pas comment (ou pourquoi), vous pourriez avoir une base de données par utilisateur.

+0

> Rappelez-vous, j'ai aucune idée comment (ou pourquoi) vous pourriez avoir une base de données par utilisateur. Le lien suivant couvre le comment et le pourquoi de plusieurs bases de données (Peut-être que cela devrait être une autre question sur stackoverflow?) [http://wiki.rubyonrails.org/rails/pages/HowtoUseMultipleDatabases](http://wiki.rubyonrails. org/rails/pages/HowtoUseMultipleDatabases) –

1

Nous utilisons des fichiers de configuration séparés pour chaque utilisateur. Donc, dans le répertoire config/dir, nous aurions roo.database.yml qui se connecterait à ma base de données personnelle, et je copierais cela sur le fichier database.yml utilisé par les rails.

Nous envisagions d'étendre les rails Rakefile afin que nous puissions spécifier le développeur comme variable d'environnement, qui sélectionnerait alors une configuration de base de données spécifique, nous permettant de n'avoir qu'un seul fichier database.yml. Nous n'avons pas fait cela cependant que la méthode ci-dessus fonctionne assez bien.

0

En fait, j'ai découvert une bonne façon de gérer les migrations DB à partir d'une application:

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

Questions connexes