私は、ActiveRecord(2.3.12)を使ってMySQLデータベースにアクセスしているRubyスクリプトを持っています。このフローは、「設定ファイルからデータベース値を読み込む」、「データベースに接続する」、「テーブルが作成されていない場合はA
を作成する」、「ファイルをダウンロードして解析する」、「解析されたレコードをA
に保存する」などです。ActiveRecordは実際にどの時点でデータベースに接続しますか?
コードは次のようになります。
ActiveRecord::Base.establish_connection(
:adapter => 'mysql',
:database => database_name,
:username => username,
:password => password,
:host => "localhost",
:port => 3306
)
...
ActiveRecord::Schema.define do
create_table a, :force => true do |t|
t.string :last_name, :limit => 60, :default => "", :null => false
t.string :first_name, :limit => 30, :default => "", :null => false
t.string :middle_initial, :limit => 2, :default => ""
t.string :dob, :limit => 12, :default => "", :null => false
end
end unless A.table_exists?
私はestablish_connection
法に間違ったDBの資格情報、または存在しないデータベース名を入れる場合は、このスクリプトは、すべてのエラーを与えていないようですか実際にデータベース上で何らかの操作を実行しようとするまで(つまり、テーブルA
を作成するまで)例外をスローします。私はbegin-rescue-end
を約establish_connection
にしようとしましたが、ブロックrescue
には決して行きませんでした。
なぜestablish_connection
は実際にはそうではないようですね...よく接続を確立しますか?そして、私の人生のために、私はそれが戻ってくるはずのものを理解することができません。ドキュメントHEREは必ずしも役立たないようです。
または何か間違っていますか?助けてください!