RailsでDBの接続が切れた場合に再接続する設定
昔は
mysql_retry_lost_connection
というものがあったのですが、最近 (Rails-2.3以降) は config/database.yml の中で
yaml>>
production:
reconnect: true
<<--
とやるだけで、接続が切れた場合に再接続してくれるようです。
まあ、ここまで用意するならデフォルトでそうなってても良いと思うんですけどね。
昔は
mysql_retry_lost_connection
というものがあったのですが、最近 (Rails-2.3以降) は config/database.yml の中で
yaml>>
production:
reconnect: true
<<--
とやるだけで、接続が切れた場合に再接続してくれるようです。
まあ、ここまで用意するならデフォルトでそうなってても良いと思うんですけどね。
merbにはautomigrateやautoupgradeがあるので、Railsほどmigrationを手で書く機会は少ないのですが、それでもデータ移行や、カラムの削除などの破壊的もしくは単純ではないDB操作を行う必要が発生した場合は、Railsと同様のmigrationを行う事になります。
merbの場合、以下のようなコマンドでマイグレーションファイルを作成します。
pre>>
% merb-gen migration name_of_migration
<<--
schema/migrations/001_name_of_migration.rbという感じでマイグレーションファイルが生成されます。中身はこんな感じ。
ruby>>
migration 1, :name_of_migration do
up do
end
down do
end
end
<<--
See Also
テストの実行時に利用されるDBは、通常development環境のstructureがコピーされますが、何らかの事情でproduction環境のものを使って欲しい場合もあります。
そんなときは、以下のRakeタスクを実行すればOK.
pre>>
% rake db:test:clone RAILS_ENV=production
<<--
これによって、production環境のstructureがコピーされます。
TokyoCabinet
のBDBが使いたくなったので導入手順をメモ。
といっても非常に簡単で、上記リンクからLatest Packageをダウンロードしてきて
/usr/local/src等の場所に展開し、
sh>>
<<--
でOK。あとはRubyBindingも
こちら
から最新版をダウンロードしてきて展開し、
sh>>
<<--
でOK。tokyocabinet.soが生成されてインストールされます。
あとは、Rubyから
ruby>>
require 'tokyocabinet'
bdb = TokyoCabinet::BDB.new
bdb.open("somefile",
TokyoCabinet::BDB::OCREAT | TokyoCabinet::BDB::OWRITER)
bdb.close
<<--
等のようにして使えます。
This is just a signpost.
Does anyone know other tools?
See Also
Rails 2.0(RC1)でチェックしてみたところ、以下のような構文で migration
コードの生成時に追加・削除を行うcolumnを指定できるようです。
shell>>
% ./script/generate migration add_fullname_to_users fullname:string
<<--
この結果、生成生成されるコードは以下の通り。
db/migrate/XXX_add_fullname_to_users.rb
rails>>
class AddFullnameToUsers < ActiveRecord::Migration
def self.up
add_column :users, :fullname, :string
end
def self.down
remove_column :users, :fullname
end
end
<<--
ちょっと前まで、add_xxxx_to_yyyy で yyyyテーブルにxxxxカラムを
追加するという感じの挙動をしていたのですが、それは無くなったみたいですね。
まだRC1なので最終的にどういう形に落ち着くか分かりませんが、
なかなかいい感じです。