ARを読もうとする試み establish_connection

お約束のestablish_connectionメソッドあたりの感想。

require 'rubygems'
require_gem 'activerecord'
 
ActiveRecord::Base.establish_connection(
  :adapter => 'mysql',
  :host => 'localhost',
  :username => 'rails',
  :password => '',
  :database => 'rubima'
)

こんな感じであります。

ActiveSupportによる拡張メソッドが随所にみられる

require_library_or_gemとかsymbolize_keysとか

このActiveSupportの拡張がなにかとつまづきの元。
これが醍醐味なんだろうけど。。
組み込みのメソッドなのかActiveSupportなのかパッと見ではわからん。
こんなん覚えられるんか??
まあ組み込みのメソッドを知らないというのもあり。

active_record.rbでやってることの確認

activerecordをrequireしたときにロードされるのはactive_record.rb

active_supportをrequire
いろんなモジュールをrequire
技を覚えまくる(舞波)

ActiveRecord::Baseクラスの定義時(class_eval実行時)にいろんなモジュール
をincludeしてmixin、(モジュール側で)extendしたりもしてる

いろんなデータベースへのadapterをrequire
ほかにもrequire

require先にもActiveRecord::Baseがいる。
mysql_adapter.rbの中とか。
あーこういうとこでクラスメソッド定義しとくと、requireでクラスメソッドを増やすこともできるのか。
なんか節操ない感じもするけど、なんかルールはあるんだろうか。


ActiveRecord::Baseってめちゃめちゃいろんな技持ってるなあ。

データベースに接続するconnectionメソッドはどこにつながってる?

establish_connectionメソッドではデータベースに接続していない。
適当な設定でestablish_connectionを呼んでもエラーにならず、
そのあとでActiveRecord::Base.connectionを呼んだときにエラーになるかられす。
abstructとかいう文字が垣間見られてるからそのあたりなのだろうナー。