8/20/2007

railsでgettext+gettext_scaffoldを使って早く日本語対応WebDBを作る方法

↑そういうことで備忘録。
  1. rails proj ; cd proj # railsでプロジェクト作成。
  2. mysql ; create database proj # MySQLサーバにデータベースを登録。
  3. ./script/plugin install svn:/rubyforge.org/var/svn/gettextscaffold/gettext_scaffold # プラグインインストール
  4. rake gettext:setup # GetTextの準備
  5. ./config/enviroment.rbの最後に次の2行をいれる。
    require 'gettext/rails'

    GetText.locale ='ja'
  6. さらに、./app/controller/application.rbに次の1行をいれる。
    init_gettext 'プロジェクト名'

  7. ./script/generate model Table # モデルを作成
  8. ./db/migrate/001_create_tables.rb を編集してやる
  9. rake db.migrate # MySQLにテーブルを作成
  10. ./script/generate gettext_scaffold Table # GetText雛型を作成
  11. rake gettext:update_po
  12. ./po/ja/Table.poを編集。日本語ラベルを定義
  13. rake gettext:make_mo
おおよその流れはこうです。

8/10/2007

Ubuntu 7.04 FeistyでのRails - つづき

家で仕事はしないつもりだったが、自宅のノートPCにもRails+GetText環境を入れておこうと思っていると、またまたはまってしまった。折角の週末の夜に仕事をするものだから、新婚の妻はふて寝してしまった。

今日見つけた方法、つまりgem,rails以下aptを使わない直接叩き込む方法でインストールしていると、最後のgettextでたくさんエラーが出てきた。mswin用のgettextなら入るが、rake gettext:***でうまくいかない(あたりまえか)。ruby-gettextインストール時のエラーを見ると、stdio.hが無い!とか言われている。




えー!標準ヘッダがないの〜?

updatedbしてlocate stdio.hでも見当たらない・・・・・

'ubuntu stdio.h'でぐぐったら、やっぱり・・・・orz

ubuntuはデフォルトでちゃんとC開発環境がインストールされないこともあるそうだ。debパッケージ build-essentialをインストールする。無事ruby-gettextがインストールされる。

Ubuntu 7.04 FeistyでのRails

Ubuntu 7.04 FeistyでパッケージマネージャでインストールしたRailsでのトラブル記録。

  1. gettext_scaffoldを導入し国際化したWebアプリケーションは、scaffoldが吐いたコントローラのメソッドcreateで"stack level too deep "といって、どうやら無限ループに行ってしまうようだ。
  2. つらつら情報を探しているうち こういう 情報を入手。
  3. どうも、libgettext-ruby-1.8パッケージのバージョンが良くないようだ、アップデートしようと思ったがない。こまった。
  4. いっそ、gemを叩いて直接gettext-rubyをインストールしよう。そう思い立ってgettext-ruby-1.10.1をインストールしてみる。1で起こったようなループが起こらず処理が帰ってきている。よかた。
  5. ところが、poファイルを更新する等してrake gettext:make_moなどをおこなうと "gettext/utils"がありませんよといわれる。どうやらrakeが見ているディレクトリがうまく設定されていないようだ。
  6. しかたないので、ubuntuパッケージで提供されてるrails, rubygems(え?これも!!)のパッケージを削除し、直接インストールする。
  7. gemでrails、gettextをインストールすると件のWebアプリケーションは正常に動いた。
パッケージマネージャでruby関係をインストールするとgem周りで不具合(ディレクトリ構成の違い)があるらしい。
ちなみにubuntu提供のrailsで作ったWebアプリは/usr/shareあたりにシンボリックリンクを張るので、ソースをtarでかためてもっていくなど、可搬性がない。railsはパッケージでなく、gemでインストールというのは鉄則のようだ。