railsで既存DBからアプリケーションを作るときは、database.ymlにつなげたいDBの接続情報を記述した上で、
![Railsで既存DBを流用したときのDangerousAttributeErrorを解消 - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/2530f564a819450ad999d3d035da271110ccee6a/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9UmFpbHMlRTMlODElQTclRTYlOTclQTIlRTUlQUQlOThEQiVFMyU4MiU5MiVFNiVCNSU4MSVFNyU5NCVBOCVFMyU4MSU5NyVFMyU4MSU5RiVFMyU4MSVBOCVFMyU4MSU4RCVFMyU4MSVBRURhbmdlcm91c0F0dHJpYnV0ZUVycm9yJUUzJTgyJTkyJUU4JUE3JUEzJUU2JUI2JTg4JnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LWNsaXA9ZWxsaXBzaXMmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz0wMmFhNzc3NThjM2M5ZDc2ZmNmMjU3OGY0YmQ4NGNhZA%26mark-x%3D142%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwZG9pbWFfJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz1hMDBkZGYyM2IwMDNmMGQ2YjM4YTIzMzU5Y2NiNTYwOQ%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3D64450f886acb9862fd3d5d70fa24de0f)
基本的にRailsでは単一のDBを使用するように設計されています。とはいえ負荷軽減のためだったり、あるいは様々なしがらみのために複数のDBに接続しなければいけない場合がたまにあったりすると思います。しかも残念な事に違うDBに同じ名前のテーブルがあったりしてどうすんだよコレとなることも無いとは言えないでしょう。 ActiveRecord が connection pool に対応したのは知識としては知っていましたが複数のDBに実際につなぎにいったばあい connection はどうなるの?と疑問に思ったので調べてみました。 # activerecord-3.0.3/lib/active_record/connection_adapters/abstract/connection_specification.rb 51行目 - 82行目 def self.establish_connectio
前のエントリ(http://d.hatena.ne.jp/raugisu/20120428/1335598633)で、ActiveRecord で別DBに接続するために establish_connection を安易に使うことで発生する地獄について書いた。 んで、その地獄への対策として挙げたもののなかで、一番良いと思われる、「別DBへのコネクションプールを引き受けるクラスを作って継承する」方法を試してみた。 ぶっちゃけ、元ネタ(http://d.hatena.ne.jp/rudeboyjet/20101221/p1 )のほうがキチンとしてるので、そっち見た方が参考になる。 (2012/5/8、コメント欄で「self.abstract_class = true」の設定の指摘をいただいたので訂正しました。ありがとうございました!) (2012/5/29、訂正部分、打ち消し線で訂正とかしてたん
Rails3.1.3の話。 別DBにつなぐときの、ActiveRecordのestablish_connectionに気をつけろ。やつは1クラスごとに独自にdatabase.ymlのpool設定分のコネクションプールを作るぞッ。プールの意味ない!! マスターDB1台で運用しているときは全然問題ない。コネクションプールは大変賢く働いてくれる。だが、2台目を運用し始めたとき、安易にestablish_connectionでつなぐと簡単に too many connections で、落ちる。 たとえば、ワーカー10個で、establish_connectionで別DB「hoge_db」に接続することにしたクラスが10個あったとしよう。その別DBへの接続設定(database.yml)で 「pool: 5」 としたとしよう。 そしてワーカーを立ち上げたとき、hoge_dbへのコネクション数はみる
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く