Rails 2.2 をとりあえず動かしてみる

2.2 がリリースされたようなのでさっそく Mac に導入。Windows は git を動かすだけでめんどくさいので、ますますゲーム機化していきます。

とりあえず RubyGems をアップデートして(1.3.1 必須)Rails をインストール。

sudo gem update --system
sudo gem install rails

終わったら一応バージョンを見て 2.2.2 になっている事を確かめます。

では本番。適当にプロジェクトを作って、最初に config/environment.rb をいじります。

 - # config.gem "sqlite3-ruby", :lib => "sqlite"
 + config.gem "sqlite3-ruby", :lib => "sqlite"

28行目、単に sqlite を使うよ、という宣言。

 - # config.time_zone = "UTC"
 + config.time_zone = "Tokyo"

46行目、これは 2.2 系からの新機能ではありませんが、タイムゾーンの設定。

 - # config.i18n.default_locale = :de
 + config.i18n.default_locale = :ja

51行目、日本語でおkなのでデフォルトの言語を日本語にしておきます。続いて国際化用のジェネレータをプラグインとしてインストールします。git 必須なので port あたりで入れてください。また、このジェネレータは gettext が必須なのでそれもインストールしておきます。

sudo gem install gettext
script/plugin install git://github.com/amatsuda/i18n_generators.git

なお i18n_generators についてはリポジトリを確認してください。

ここまで終わったらジェネレータを動かしてみます。

script/generate i18n ja

正しく動くと config/locales 以下に色々ファイルが作られます。これで日本語化の準備は完了。

後は試しに動作を確認してみるだけ。

script generate scaffold category name:string

category.rb を開いて、バリデーションを追加。

class Category < ActiveRecord::Base
  validates_presence_of :name
end

名前を空にして Category を作成すると、確かに各種標示が日本語になっています!まあ、もちろんモデルやカラムの名称は自分で設定するわけですが、それはまた別の話。

スレッドセーフ云々については、ローカルで遊んでいるレベルだとよく分からないので保留。一応 environment.rb なり、各種実行環境のコンフィグなりに以下のように書けばスレッドセーフになるようです。

config.threadsafe!

誰かがテストして確かめてくれるでしょう。とりあえず動かせる状態にするまでは以上。