2008-09-02 10 views
0

Ich habe eine Rails-Anwendung, bei der jeder Benutzer über eine separate Datenbank verfügt. (unter Berücksichtigung von Joel Spolsky). Ich möchte DB-Migrationen von der Rails-Anwendung ausführen, um eine neue Datenbank und Tabellen für diesen Benutzer zu erstellen.Ausführen von DB-Migrationen von der Anwendung

Was ist der einfachste Weg, dies zu tun?

Vielleicht ist die DB-Migration nicht die beste für diese Art von Sache. Vielen Dank!


Es wäre schön, wenn es ein vollständig automatisierter Prozess wäre. Der folgende Prozess wäre ideal.

  1. Ein Benutzer meldet sich auf unserer Website bis zu verwenden, diese Web-App
  2. Migrations ausgeführt werden diese Benutzer-Datenbank zu erstellen und korrekt Tabellen Setup

Gibt es eine Möglichkeit, eine Harke Aufgabe Aufruf Suche von eine Rubin-Anwendung?

Antwort

1

Zum Teil Ihrer Frage zu beantworten, ist hier, wie Sie eine Harke Aufgabe innerhalb gerannt von Rails-Code:

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

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

Wohlgemerkt, ich habe keine Ahnung, wie (oder warum) Sie eine Datenbank haben könnten pro Benutzer.

+0

> Wohlgemerkt, ich habe keine Ahnung wie (oder warum) Sie eine Datenbank pro Benutzer haben könnten. Der folgende Link behandelt das Wie und Warum von mehreren Datenbanken (Vielleicht sollte das eine andere Frage zu Stackoverflow sein?) [http://wiki.rubyonrails.org/rails/pages/HowtoUseMultipleDatabases](http://wiki.rubyonrails. org/rails/pages/HowtoUseMultipleDatenbanken) –

1

Wir verwenden separate Konfigurationsdateien für jeden Benutzer. Also würden wir in der config/dir Roo.database.yml haben, die mit meiner persönlichen Datenbank verbinden würde, und ich würde das über die Datenbank.yml-Datei kopieren, die von Schienen verwendet wird.

Wir haben uns überlegt, die Rake-Datei für Rails zu erweitern, damit wir den Entwickler als Umgebungsvariable angeben können, die dann eine spezifische Datenbankkonfiguration auswählt, sodass wir nur eine einzige Datenbank.yml-Datei haben. Wir haben dies jedoch nicht getan, da die obige Methode gut genug funktioniert.

0

Eigentlich habe ich eine gute Art und Weise entdeckt DB-Migrationen von einer Anwendung ausgeführt wird:

Active :: Migrator.migrate ("db/Migration /")

Verwandte Themen