So verwenden Sie mehrere Datenbanken in einer Rails-App: Verwenden Sie die Datei database.yml
Ich habe in der Dokumentation nachgelesen, wie das geht, aber in der Praxis habe ich Probleme. In meiner App habe ich 2 verschiedene Datenbanken, wie unten in meiner database.yml-Datei beschrieben.
<code>sqlite_test: adapter: sqlite3 database: db/sqlite_test.sqlite3 table: plots pool: 5 timeout: 5000 development: adapter: mysql2 encoding: utf8 reconnect: false database: test pool: 5 username: myname password: mypassword host: localhost </code>
Meine Anwendung ist ein dynamischer Plotter, der die Daten in einer (Basis-) Datenbank plottet, ohne zu wissen, was in der Datenbank enthalten ist oder wie diese strukturiert ist. Diese beiden Datenbanken enthalten unterschiedliche Daten. Die SQLite-Datenbank habe ich in einer separaten Rails-App erstellt.
Die aktuelle App, die ich verwende, basiert auf der MYSQL-Datenbank, die ich extern erstellt habe. Ich habe die SQLite-Datenbank in das Verzeichnis / db kopiert. Also in meinem Hauptmodell, wenn ich sage:
<code> class Plot < ActiveRecord::Base establish_connection :development set_table_name "stock_test" set_primary_key :id </code>
Alles klappt prima und gut. Wenn ich es jedoch ändere in:
<code> establish_connection :sqlite_test set_table_name "plots" </code>
Wenn ich versuche, über die Rails-Konsole auf diese Datenbank zuzugreifen, erhalte ich die Fehlermeldung:
<code>>>ActiveRecord::AdapterNotSpecified: database configuration does not specify adapter </code>
Ich weiß nicht, warum das so ist, da die Datei database.yml eindeutig einen Adapter angibt. Wenn ich es in meinem Modell von Hand mache, funktioniert alles genau so, wie es sollte.
<code>class Plot < ActiveRecord::Base establish_connection(:adapter => "sqlite3", :database => "db/sqlite_test.sqlite3", :pool => 5 ) </code>
Warum funktioniert das alles, wenn ich manuell spezifiziere, was in der database.yml ist, aber nicht, wenn ich nur die database.yml-Referenz verwende?
Vielen Dank!