チュートリアルを動かしてみる
進まないなあ・・・
平日睡眠時間4時間の生活をバシバシ続けているなかで、土日は子供の相手をしつつ、Ruby/Railsの本を読んでやってみる、っつうのは、なかなかに時間の制約があるねえ、といった感じの今日この頃である。とはいえ、実は楽しいので、ゆっくりながら進むのである。
今回は、InstantRailsを使って、Rails本のチュートリアルを動かしてみるのである。
なにはともあれ、Install
InstantRailsのインストールは簡単で、ファイルを展開するだけ。あとは、エディタがいるので、TeraPadを使うのである。
両方とも、レジストリに登録しなくていいので、私は、USBメモリの中に両方とも入れて持ち歩き、ちょっと時間があったら手近のパソコンでやってみる、という使い方をしている。うーむ、便利便利。
両方ともメジャーなものなので、必要ないかなあ、と思うものの、一応ダウンロード先を。
InstantRails
http://instantrails.rubyforge.org/wiki/wiki.pl?Instant_Rails
TeraPad
http://www.vector.co.jp/soft/win95/writing/se104390.html
Mysqlの日本語対応
さて次に、Mysqlに日本語のデータが入るようにしなければならないのである。デフォルトのキャラクターセットをutf-8にするのである。
InstantRailsのConfigメニューに、MysqlのConfigファイルへのショートカットがあるので、それを選択。Mysql日本ユーザ会ホームページにあるFAQを参考に、以下の設定を入れる。
http://www.mysql.gr.jp/
FAQの真ん中くらいにある。
[mysqld] ・・・(初めから入ってる部分) default-character-set = utf8 # 5.0.13-rc 以上 skip-character-set-client-handshake [mysqldump] default-character-set = utf8 [mysql] default-character-set = utf8
よっし、始めよう
チュートリアルでは、depotというショッピングカートアプリケーションを作ることになっているらしい。ということで、まずはdepotの骨格を作るのである。
チュートリアルでは、Railsのアプリケーションを作るフォルダに移動して、Railsというコマンドをうつことになっている。InstantRailsでは、
InstantRails RailsApplication ->Manege Rails application
というメニューパスを通って、出てくる画面で、
Create New Rails Application
を選ぶと、rails_appsのフォルダに移動した状態で、コマンドプロンプト*1が立ち上がる。その状態で、おもむろに、
Rails depot
と入力し、骨格を作るのである。
しばし待つと、ぞろぞろぞろ、とメッセージが出てきて、なんか出来上がった模様である。
データベースを作る
データベースは、Mysqlを起動して、Createするらしい。
ということで、「Mysql」としてみると、なんかエラーが出る。なにやら、'ODBC'@'localhost'なるユーザで起動をかけようとして、エラーになっているようだ。
ならば、ユーザとパスワードを指定して起動するのである。
mysql -u root -p
パスワードは、ブランクでEnterを押せばOK。セキュリティもへったくれもないが、インストールしたばかりだから、当たり前といえば当たり前ですな。
で、Databaseを作る。
mysql>create database depot_debelopment;
テーブルを作って、足場作り
InstantRailsには、MysqladminというPHPベースのユーティリティがついているので、これを使ってテーブルの定義をやるのも一手なのだが、Rails本にある、.ymlのファイルで履歴管理をする、という話に惹かれて、初心者にも関わらず、コマンドラインでのテーブル作成を決意するのである。
ついでといってはなんだが、チュートリアルの前提が、WEBricsになっているので、Apachを起動させておく必要はなくなったため、おもむろにサービスを停止するのであった。
で、depot\db以下のフォルダに、チュートリアル通りのテーブル作成SQLを書いて保存。
>mysql depot_development
日本語対応ってめんどくさい
おっかしいなあ、Mysqlのデフォルト言語はutf-8にしたはずなのに・・・と、Rails本を読み返すと、あれ、欄外に日本語の注意書きがしてある。いわく、Railsのデフォルト言語(utf-8)を記述すべし、DBとの接続パラメータも同様にutf-8を指定すべし、と、書いてある。あー、これですね〜
\rails_apps\depot\app\controllers以下のapplication.rbに、
class ApplicationController < ActionController::Base before_filter :set_charset private def set_charset headers["Content-Type"] = "text/html; charset=UTF-8" end end
を、追加。んでもって、database.ymlにもキャラセットを入れる
development: adapter: mysql database: depot_development username: root password: host: localhost encoding: utf8
これで、文字化けはなくなった。
あとはチュートリアル通りに進む。列の追加もうまくいって、標準のエラーメッセージ出力もOK。そして、エラーメッセージを日本語で出すようにProduct.rbにコードを追加すると・・・またしても文字化け。
うーん、今度はなんだろう。もう一度Rails本を見直してみるが、とんと検討がつかない。まいったなあ・・・
で、ここでハッと気がつく。Product.rbを保存したとき、sjisで保存されてるのかも??って、特に指定していないから、きっとsjisだ!!ということで、TeraPadの文字コード指定保存のオプションで、UTF-8Nを指定してみると、めでたく解消。
うーん、けどこれ、メモ帳を使ってコーディングしていたら、一生気がつかないなあ・・・Webの世界の人にとっては常識なんだろうか。
とういことで、次回も(多分)お勉強を続けるのであった。