Rails 3.1と複数のデータベースを接続する
2023-10-22 07:58:57
質問
ShowNearby では、PHP から RoR 3.1 への非常に大きな移行を行っていますが、いくつかの問題に直面しています。
私たちは大量のデータを持っており、DB をいくつかの DB に分離し、別々に処理できるようにすることにしました。たとえば、私たちのアカウント、場所、ログ、およびその他は、いくつかのデータベースに分割されています。
私たちは、マイグレーション、フィクスチャ、モデルをうまく動作させる必要がありますが、これまでのところ、かなり厄介なことになっています。許容できるソリューションに対する私たちの要求の一部です。
- 1つのモデルは、1つのデータベースの1つのテーブルに関連している必要があります。
- rake db:drop - database.yml で指定した全てのデータベース環境を削除します。
- rake db:create - database.yml で指定したすべてのデータベースの環境を作成する
- rake db:migrate - 様々なデータベースへのマイグレーションを実行する。
- rake db:test - フィクスチャを取得して様々なデータベースに落とし込み、ユニットや関数などをテストする。
各データベースごとに別々のrailsプロジェクトを設定し、ActiveResourceで接続することを検討していますが、これはあまり効率的ではないように感じています。同じような問題に対処したことのある方はいらっしゃいますか?
どのように解決しましたか?
Wukerplankさんの回答ですが、通常通りdatabase.ymlに接続の詳細を以下のような名前で記述することも可能です。
log_database_production:
adapter: mysql
host: other_host
username: logmein
password: supersecret
database: logs
次に、特殊なモデルで
class AccessLog < ActiveRecord::Base
establish_connection "log_database_#{Rails.env}".to_sym
end
アプリケーションのコードに厄介なクレデンシャルが入らないようにするため。
編集してください。 この接続を複数のモデルで再利用したい場合、接続はクラスと密結合しているので、新しい抽象クラスを作成し、それを継承する必要があります(説明したように ここで , ここ そして ここ を参照)、各クラスごとに新しい接続が作成されます。
その場合は、このように設定します。
class LogDatabase < ActiveRecord::Base
self.abstract_class = true
establish_connection "log_database_#{Rails.env}".to_sym
end
class AccessLog < LogDatabase
end
class CheckoutLog < LogDatabase
end
関連
-
[解決済み】コレクションをDESCで並べる方法
-
[解決済み] pg gem をインストールしようとすると 'libpq-fe.h' ヘッダが見つからない
-
[解決済み】PG::ConnectionBad: fe_sendauth: パスワードが供給されない
-
[解決済み] nil:NilClass の未定義メソッド `each'... なぜでしょうか?
-
[解決済み] Rubyで変数をインクリメントする [重複]。
-
[解決済み] Railsコントローラからホスト名を取得する
-
[解決済み] Ruby on Railsのマイグレーションでデータベースのカラムの名前を変更するにはどうすればよいですか?
-
[解決済み] Ruby on Railsで現在の絶対URLを取得するにはどうすればよいですか?
-
[解決済み] Rails update_attributes without save?
-
[解決済み】Railsの認証トークンを理解する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] サーバーに接続できませんでした。そのようなファイルまたはディレクトリがありません (PG::ConnectionBad)
-
[解決済み] pg gem をインストールしようとすると 'libpq-fe.h' ヘッダが見つからない
-
[解決済み] nil:NilClass の未定義メソッド `each'... なぜでしょうか?
-
[解決済み] Ruby on Railsのランナー
-
[解決済み] DestroyとDeleteの違い
-
[解決済み] Errno::EACCESS: パーミッションが拒否された @ dir_s_mkdir
-
[解決済み] nil:NilClass の未定義メソッド `each' - しかし、なぜ?
-
[解決済み] Railsはsaveでモデル内の検証をスキップしますか?
-
[解決済み] railsで':remote => true'はどのように動作するのでしょうか?
-
[解決済み] Ruby on Rails の新規セットアップ : "Expected string default value for '--rc'; got false (boolean)".