CentOS5.3にRuby on Railsを入れる、そして使う
なぜなら卒業制作で使ってみたいから。
CentOS5.3(32bit) をインストール
うちのデスクトップはHDDをリムーバブルにしているので、
普段使ってる Ubuntu * WinXP のデュアルブートHDDは一旦退避して、
実験用HDD(300GB)を装着。
学校で使えるHDDと同じ、40GBの領域をパーティションで区切って、
CentOS32bit版をインストール。
ほとんどデフォルトのままだが、途中「今すぐカスタマイズする」にチェックを入れ、
「開発」カテゴリにある「開発ツール」と「開発用ライブラリ」を追加して進める。
インストール完了。
# yum update
だけしておく。
ruby と mysql を入れる
RoR 2.x系は、デフォルトでSQLiteが使われる。
けど、mysqlが使いたいのでrubyとともにインストールしておく。
# yum install ruby ruby-devel rdoc mysql mysql-server mysql-devel
(中略)
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
mysql i386 5.0.45-7.el5 base 4.1 M
mysql-devel i386 5.0.45-7.el5 base 2.4 M
mysql-server i386 5.0.45-7.el5 base 9.7 M
ruby i386 1.8.5-5.el5_3.7 updates 274 k
ruby-devel i386 1.8.5-5.el5_3.7 updates 555 k
ruby-rdoc i386 1.8.5-5.el5_3.7 updates 134 k
Installing for dependencies:
perl-DBD-MySQL i386 3.0007-2.el5 base 148 k
perl-DBI i386 1.52-2.el5 base 600 k
ruby-irb i386 1.8.5-5.el5_3.7 updates 68 k
ruby-libs i386 1.8.5-5.el5_3.7 updates 1.6 MTransaction Summary
================================================================================
Install 10 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
Total download size: 20 M
Is this ok [y/N]: y
そこは張り切ってYesで。
Installed: mysql.i386 0:5.0.45-7.el5 mysql-devel.i386 0:5.0.45-7.el5 mysql-server.i386 0:5.0.45-7.el5 ruby.i386 0:1.8.5-5.el5_3.7 ruby-devel.i386 0:1.8.5-5.el5_3.7 ruby-rdoc.i386 0:1.8.5-5.el5_3.7
Dependency Installed: perl-DBD-MySQL.i386 0:3.0007-2.el5 perl-DBI.i386 0:1.52-2.el5 ruby-irb.i386 0:1.8.5-5.el5_3.7 ruby-libs.i386 0:1.8.5-5.el5_3.7
Complete!
Complete!ヒュー!
gem を入れる
Rubyの関連パッケージは、RubyGemsというパッケージ管理システムで管理する。
ということで、gemをインストールする。
RubyGemsのソースコードをダウンロード。
現時点での最新版は1.3.4でした。
# wget http://rubyforge.org/frs/download.php/57643/rubygems-1.3.4.tgz
100%[=======================================>] 293,275 161K/s in 1.8s
15:33:46 (161 KB/s) - `rubygems-1.3.4.tgz' を保存しました [293275/293275]
そして解凍し、中にあるセットアップスクリプトを実行する。
# tar zxvf rubygems-1.3.4.tgz
# cd rubygems-1.3.4
# ruby setup.rb
ここでちょっと時間がかかる。数十秒?あと、
Oh-no! Unable to find release notes!
というメッセージが出るけど、開発者のお茶目さの表れなので
とりあえず気にしなくていい、そうな。
Railsのインストール
# gem install rails
カップラーメンができるくらいの間、待つ。
んで、できたら次へ。
Rubyでmysqlを使うためのパッケージをインストール
# gem install mysql
Building native extensions. This could take a while...
ERROR: Error installing mysql:
ERROR: Failed to build gem native extension.
ここに来てエラーが。
「Check the mkmf.log file for more details. 」
と言われたので、c言語のエラーが出力されたようなログを眺めてみる。
"/usr/lib"とか"/usr/lib/mysql"ってのがたくさん出ている。
ちょっとした試行錯誤を経た後、オプションでその場所を指定して実行してみる。
# gem install mysql -- --with-mysql-lib=/usr/lib/mysql
Building native extensions. This could take a while...
Successfully installed mysql-2.7
1 gem installed
Installing ri documentation for mysql-2.7...
Installing RDoc documentation for mysql-2.7...
成功した。
でも、ググってみると、mysql_configというファイルの場所をオプションで指定せよ、
という解決策がたくさん出てきました。
その場合はこういうオプションを付けて実行することになる。
# gem install mysql -- --with-mysql-config=/usr/bin/mysql_config
うーむ、今回のように、libの場所を指定という方法でもいいんですかね?
よく分かりません。わかりま千円。
これはよく分かるようになっておきたいけど、とりあえず今は先に進む。
ひとまず、これでインストールはできた。
mysqlの設定をしとく
mysqlを起動する。
# /etc/init.d/mysqld start
$ mysql -u root -p
Enter password: (何も入力しないでEnter)Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.0.45 Source distributionType 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysqlのrootパスワードを設定。
mysql> SET PASSWORD FOR 'root'@'localhost'=password('rootのパスワード');
Query OK, 0 rows affected (0.01 sec)
RoRの開発に使うデータベースを作っておく。
mysql> CREATE DATABASE dev;
Query OK, 0 rows affected (0.01 sec)
RoRにmysqlの設定をする。
config/database.ymlというファイルを編集する。
$ vim config/database.yml
development:
adapter: mysql
encoding: utf8
reconnect: false
database: dev (さっき作ったデータベースの名前にする)
pool: 5
username: root
password: (さっき設定したmysqlのrootパスワード)
host: localhost
とりあえず、「development:」というセクション内にある
「database:」にさっき作ったデータベース名(dev)、
「password:」にmysqlのrootユーザのパスワードを設定する。
それ以外は放っとく。
RoRのサーバを起動しとく
RoRのプロジェクトを好き勝手にいじるためのディレクトリを作る。
HelloWorldを表示するためだけのプロジェクトを一つ作る。
データベースはmysqlを使う、というオプション付き。
オプションを省略するとSQLiteになる。
RoRのサーバを起動する。
$ ruby hello/script/server
=> Booting WEBrick
=> Rails 2.3.2 application starting on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2009-07-20 17:03:34] INFO WEBrick 1.3.1
[2009-07-20 17:03:34] INFO ruby 1.8.5 (2006-08-25) [i386-linux]
[2009-07-20 17:03:44] INFO WEBrick::HTTPServer#start: pid=29734 port=3000
ブラウザでhttp://localhost:3000にアクセスしてみて、
Welcome aboard
You’re riding Ruby on Rails!
というようなページが表示されるのを確認する。
これは、/hello/public/index.htmlが表示されている。
Hello Worldをやってみる
では、試しにHello Worldを表示してみる。
RoRのアプリとしては、publicディレクトリじゃなくて
appディレクトリ以下にMVC(Model, VIew, Controller)を配置する。
次の手順で作れる。
1)コントローラ Hello を作る
$ ruby script/generate controller Hello
これで、app/controllers/hello_controller.rb が作成された。
2)hello_controller.rbの中身をちょっといじる
Helloコントローラの実態は、HelloControllerクラス。
ここに、indexアクションを定義する。アクションの実態は
オブジェクト指向で言うところのメソッド。
$ vim app/controllers/hello_controller.rb
class HelloController < ApplicationController
def index
@message = "Hello, world"
render
end
end
3)ビュー index.rhtml を作る
さっき、Helloコントローラの中に定義したアクションと
同じ名前("index")を使って、rhtmlファイルを作る。
場所は app/views/hello/ 以下。
$ vim app/views/hello/index.rhtml
Hello World
<%= @message %>
4)ブラウザでアクセスしてみる。
http://localhost:3000/hello/index
を開くと、
Hello, world
とだけ表示される。そっけないけどできた(゚Д゚)