一部の Rails アプリケーションでは、ActiveRecord モデルは初期化時に db 接続を確立するように見えますが (たとえば、私が実行した場合rails console
)、他のアプリケーションでは、モデル クラスを参照するか、モデル オブジェクトをインスタンス化するときにのみ接続が確立されるようです。
たとえば、私は 1 つのアプリケーションに移動し、Rails コンソールを開いて次のように書きました。
SomeModel.connected?
そして戻ってきfalse
ました。別のアプリケーションに移動し、(別のモデルに対して) 同じコマンドを入力すると、true
. 3 番目のアプリケーションに移動し、同じコマンドを入力しました。今回は、ちょっと待ってから戻ってきたので、何らかの理由でメソッドが接続をトリガーしたtrue
と思いました。connected?
この動作の違いは、Rails のバージョンやモデルの内容とは関係ないようです。イニシャライザで行った奇妙なことかもしれませんが、そうは思いません。
では、Rails はいつ接続を確立するのでしょうか? または、期待される動作は何ですか?
追加情報
connected?
Railsがデータベースに接続できないため、falseを返すようには見えないことを付け加えておきます。
たとえば、最初のアプリケーションでは次のようにします。
SomeModel.connected?
# => false
SomeModel.table_exists? # or any other command that makes Rails look at db
# => true
SomeModel.connected?
# => true