Jak korzystać z wielu baz danych w aplikacji Rails przy użyciu bazy danych.yml
Przeczytałem dokumentację, jak to zrobić, ale w praktyce mam problemy. W mojej aplikacji mam 2 różne bazy danych, jak opisano poniżej w moim pliku database.yml.
<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>
Moja aplikacja to dynamiczny ploter, który będzie wykreślał dane w (podstawowej) bazie danych bez wiedzy o tym, co znajduje się w bazie danych, ani o jej strukturze. Obie te bazy danych zawierają różne dane. Baza danych SQLite, którą utworzyłem w oddzielnej aplikacji Rails.
Aktualna aplikacja, której używam, jest zbudowana na bazie danych MYSQL, którą buduję zewnętrznie. Skopiowałem bazę danych SQLite do katalogu / db. Tak więc w moim głównym modelu, kiedy mówię:
<code> class Plot < ActiveRecord::Base establish_connection :development set_table_name "stock_test" set_primary_key :id </code>
Wszystko działa dobrze i elegancko. Jednak gdy zmienię go na:
<code> establish_connection :sqlite_test set_table_name "plots" </code>
i spróbuj uzyskać dostęp do tej bazy danych za pośrednictwem konsoli Rails, pojawia się błąd mówiący:
<code>>>ActiveRecord::AdapterNotSpecified: database configuration does not specify adapter </code>
Nie wiem dlaczego tak jest, ponieważ plik database.yml wyraźnie określa adapter? Kiedy robię to ręcznie w moim modelu, wszystko działa dokładnie tak, jak powinno.
<code>class Plot < ActiveRecord::Base establish_connection(:adapter => "sqlite3", :database => "db/sqlite_test.sqlite3", :pool => 5 ) </code>
Dlaczego to wszystko działa, gdy ręcznie określam, co znajduje się w bazie danych.yml, ale nie wtedy, gdy używam tylko referencji database.yml?
Dzięki!