私のRailsアプリケーションの中には、ActiveRecordモデルが初期化時にdb接続を確立しているようです(例えばrails console
)。モデルクラスを参照したりモデルオブジェクトをインスタンス化したときにのみ接続が確立されているようです。ActiveRecordはいつ接続を確立しますか?
例えば、私は、一つのアプリケーションに行ってきましたRailsのコンソールを開いて、こう書いています
SomeModel.connected?
、それはfalse
を返しました。私は別のアプリケーションに行って、同じコマンドを(別のモデルのために)入力し、true
を返しました。私は3番目のアプリケーションに行き、同じコマンドを入力しました。今回はちょっと待ってからtrue
を返しました。何らかの理由でconnected?
メソッドが接続を開始したと思いました。
この動作の違いは、Railsのバージョンやモデルの内容には関係していないようです。私のイニシャライザでやったことは変わったかもしれないが、私はそうは思わない。
したがって、いつRailsが接続を確立しますか?または、期待される行動は何ですか?
ADDITIONAL INFO
Railsのががデータベースに接続できないので、私はそれがconnected?
戻りますように偽思われないことを追加します。
は例えば、私の最初のアプリケーションで私がやる:いくつかの相違があるいくつかの理由があるかもしれないので、
SomeModel.connected?
# => false
SomeModel.table_exists? # or any other command that makes Rails look at db
# => true
SomeModel.connected?
# => true
おそらく関連するコミットはhttps://github.com/rails/rails/commit/7423a71fc02c0ca3bf37b94e16a1322c0caaa6fd、https://github.com/rails/rails/commit/85cc7122bab1cfec661fdfe3bf4738d9fba55399です。悲しいことに、後者は3.2.x – sayap
にバックポートされていません。これもコミットします:https://github.com/rails/rails/commit/d3688e02ca52c0b72d3092e8498da51e06b7fc58 – sayap
@sayap、リンクありがとう。それらは本当に意図された/予想される行動を説明するのに役立ちます –