2012-04-28 13 views
5

私はこれを行う方法に関するドキュメントを読みましたが、実際には問題があります。 私のアプリケーションでは、以下の2つのデータベースがdatabase.ymlファイルに記述されています。Railsアプリケーションで複数のデータベースを使用する方法database.ymlを使用する

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 

私のアプリケーションは、データベースの内容やその構造を知らなくても、(基本的な)データベースにデータをプロットするダイナミックプロッタです。これらのデータベースにはそれぞれ異なるデータが含まれています。別のRailsアプリケーションで作成したSQLiteデータベース。

私が使用している現在のアプリケーションは、私が外部で構築するMYSQLデータベースの周りに構築されています。 SQLiteデータベースを/ dbディレクトリにコピーしました。だから私の主なモデルでは、私が言うとき:

class Plot < ActiveRecord::Base 

    establish_connection :development 
    set_table_name "stock_test" 
    set_primary_key :id 

すべてがうまくいき、素敵です。しかし、私はそれを変更する場合:つまり、なぜ

>>ActiveRecord::AdapterNotSpecified: database configuration does not specify adapter 

私は知らない、以来:

establish_connection :sqlite_test 
set_table_name "plots" 

とRailsコンソールを介して、そのデータベースにアクセスしようと、私はエラーが言ってもらいますdatabase.ymlファイルは明らかにアダプタを指定していますか? 私のモデルで手作業で行うと、すべてが正確に動作するはずです。

class Plot < ActiveRecord::Base 
establish_connection(:adapter => "sqlite3", :database => "db/sqlite_test.sqlite3", :pool => 5) 

なぜそれは私が手動でいただきましたdatabase.ymlの中ですべての作業を指定しない場合、私はちょうどdatabase.ymlの参照を使用しない場合は?

ありがとうございます!

答えて

4

私は複製しようとして、それを動作させました。 あなたは開発モードにあり、ARは開発タグを探しますが、あなたの場合はsqliteには存在しません。

class Plot < ActiveRecord::Base 
    establish_connection 'sqlite_' + Rails.env 
end 

私の仕事:ここ

development: 
    adapter: mysql2 
    database: se_development 
    username: root 
    pool: 5 
    timeout: 5000 

sqlite_development: 
    adapter: sqlite3 
    database: db/development.sqlite3 
    pool: 5 
    timeout: 5000 

がモデルである:

は、ここに私のdatabase.ymlをです。お役に立てれば。

+0

異なるkey/valueを持つ 'development:'が2つある場合、これは機能しませんか? – vol7ron

関連する問題