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!

questionAnswers(1)

yourAnswerToTheQuestion