Frage

Ich habe eine Rails-Anwendung, bei der jeder Benutzer eine separate Datenbank hat.(Ich befolge Joel Spolskys Rat zu diesem Thema).Ich möchte DB-Migrationen über die Rails-Anwendung ausführen, um eine neue Datenbank und Tabellen für diesen Benutzer zu erstellen.

Wie geht das am einfachsten?

Möglicherweise ist die Datenbankmigration für so etwas nicht die beste Lösung.Danke!


Es wäre schön, wenn es einen vollständig automatisierten Prozess geben könnte.Ideal wäre folgender Ablauf.

  1. Ein Benutzer meldet sich auf unserer Website an, um diese Web-App zu nutzen
  2. Migrationen werden ausgeführt, um diese Benutzerdatenbank zu erstellen und die Tabellen korrekt einzurichten

Gibt es eine Möglichkeit, eine Rake-Aufgabe aus einer Ruby-Anwendung heraus aufzurufen?

War es hilfreich?

Lösung

Um einen Teil Ihrer Frage zu beantworten, sehen Sie hier, wie Sie eine Rake-Aufgabe innerhalb des Rails-Codes ausführen würden:

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

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

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

Andere Tipps

Wir verwenden für jeden Benutzer separate Konfigurationsdateien.Im config/-Verzeichnis hätten wir also roo.database.yml, das eine Verbindung zu meiner persönlichen Datenbank herstellt, und ich würde das über die Datei „database.yml“ kopieren, die von Rails verwendet wird.

Wir dachten darüber nach, die Rails-Rake-Datei zu erweitern, damit wir den Entwickler als Umgebungsvariable angeben können, der dann eine spezifische Datenbankkonfiguration auswählen würde, sodass wir nur eine Datenbank.yml-Datei haben könnten.Wir haben dies jedoch nicht getan, da die obige Methode gut genug funktioniert.

Tatsächlich habe ich eine gute Möglichkeit entdeckt, DB-Migrationen aus einer Anwendung auszuführen:

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top