2016-10-04 5 views
1

開発環境と運用環境でデータベースをホストしています。私は要求のパラメータに基づいて、環境または生産DBのいずれかのテーブルに書き込むapiを書いています。実行時にrubyで2つの異なるデータベースに接続する

開発:
アダプタ:mysql2
データベース:DB1
ユーザ名:ルート
パスワード:
タイムアウト:5000
ホスト:ABCD
私はdatabase.yamlファイルでの両方の項目を入れています プール:5
ポート:1234

生産: アダプタ:mysql2 データベース:DB1 ユーザ名:ルート
パスワード:
タイムアウト:5000
ホスト:ABCE
プール:5
ポート:1234

これは私のアクティブなレコードです:

class table1 < ActiveRecord::Base 
self.table_name = 'table1' 
end 

要求パラメータに基づいて異なる環境に書き込むにはどうすればよいですか?

+0

各環境でアプリが動作していますか?上記のパラメータに応じて異なるアプリに投稿するAPIを書くのはなぜですか? –

+0

いいえ、アプリケーションは1つの環境でのみ動作しています。最初に開発環境にプッシュしてテストしたいと思います。そしてそれを本番データベース用に呼び出します。 – NooB8374

+1

あなたはしません。レールでの設定は、通常、レールサーバが起動するときに読み込まれます。あなたは[複数のデータベース接続](http:// stackoverflow。com/questions/6122508/connecting-rails-3-1-multiple-databases) - あなたが最も必要とするのは、ステージング環境(本番環境を反映します)です。これは通常、別のレールアプリを作成し、 'ENV ['DATABASE_URL']'。 – max

答えて

1

同じテーブルに対して2つのモデルを使用できます.1つは本番データベースに接続し、もう1つは開発データベースに接続します。

接続パラメータが変数$production$developentにあるとします。

また、使用するモデルを知るためにコードを修正する必要があります。

class table1 < ActiveRecord::Base 
establish_connection($production) 
self.table_name = 'table1' 
end 

class table1test < ActiveRecord::Base 
establish_connection($developent) 
self.table_name = 'table1' 
end 
+0

ありがとう、これは動作します。 – NooB8374

3

この1つに行ってください。 [ActiveRecord Firebird Adapter] [1]

[1]:https://github.com/rowland/activerecord-fb-adapterローカルのレールアプリを他のプロダクションサーバーデータベースに接続するために使用しましたが、レールアプリを使用してデータベースにアクセスするのに役立つモデルを追加することを忘れないでください。 よろしくお願いします。私はこの宝石

https://github.com/thiagopradi/octopus

を使用する自分のアプリケーションのために

1

は良いドキュメントとサンプルを持っています。

establish_connectionを使用すると、接続に問題が発生します。

関連する問題