ブログトップ 記事一覧 ログイン 無料ブログ開設

肩書「シニアコンサルタント」のつぶやき このページをアンテナに追加

過去の日記の一覧はこちら

2006-05-17 チュートリアルを動かしてみる このエントリーを含むブックマーク

[Ruby]チュートリアルを動かしてみる

進まないなあ・・・

平日睡眠時間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 <db\create.yml

を実行し、テーブルを登録する。一応OKのメッセージが出た。よしよし、順調。

んでもって、けっこうウキウキしながら、足場作りである。

ruby script/generate scaffold Product Admin

うちのパソコン君は、ちょっとの間ノンレスで、そのあとどっさりログを吐き出した。

ではでは、WEBricsを立ち上げてみてみると・・・うんうん、うまくできている。本通りに動いてますよ〜

さて、実際にDBにエントリを登録してみる。本の名前は「たのしいRuby」適当にディスクリプションを入れて登録。すると・・・お??文字化けしている。

日本語対応ってめんどくさい

おっかしいなあ、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の世界の人にとっては常識なんだろうか。

とういことで、次回も(多分)お勉強を続けるのであった。

*1:前はDOS窓って言い方をしたもんだが、昨今そう言っている人を見かけなくなった。死語なんだろうか・・・

dokonodareodokonodareo 2006/05/18 00:49  ご無沙汰しております。
 MySQL 絡みでコマンドプロンプトからSQLを叩くのもアリですが、Apache でも揚げておいでであれば、phpMyAdmin (http://www.phpmyadmin.net) が利用でき、相応に便利でもあります。

 DOS窓の件は、些末な話をすれば、素のままで”DOS”窓だったのは Win98 までであるように思います。(WinMe の扱いはは良くわかりませんが...)更に些末な話になりますと、Win32 系のコマンドシェル CMD.EXE を起動する代わりに COMMAND.COM を起動すると ”Windows DOS” があがります。こっちならその名の通りでDOS窓ってことになるんでしょうか...だから何だってこともありませんが..

dokonodareodokonodareo 2006/05/18 04:57 ruby だってのに phpモノを紹介するなんて...
数時間経ってきがつきました。すんません。

ftmoonftmoon 2006/05/18 13:02 dokonodareoさん、ご無沙汰しております。コメントありがとうございます。

実は、InstantRailsには、ご紹介いただいたphpMyAdminがついてきていて、デフォルトで使えるようになっているんです。ただ、Apacheのサービスをあげておくと、開発用WEBサーバのWEBricsで検証ができないので、サービスを止めて、今は勉強中なのです。
もちろん、開発用WEBサーバをApacheにすることは当然できるんですが、その設定をするところまでたどり着いていないという次第でございます。

トラックバック - http://d.hatena.ne.jp/ftmoon/20060517