高橋征義(監修):はじめよう Ruby on Rails |
作成日: 2007-03-31 最終更新日: |
サポートページ や検索サイトを手がかりに進めているが、 試行錯誤が続く。
Ruby のバージョンは 1.8.2 以上である。 私は Vine Linux 3.2 のバージョンを使っていて 1.8.2 と出ているので 安心していたが、これはプリリリースのものだった。 従って、ソースからコンパイルして入れた。 私が現在使っているのは、 ruby 1.8.6 (2007-03-13 patchlevel 0) [i686-linux] である。
MySQL は 4.1 以上である。同じく Vine Linux 3.2 では、 MySQL は 4.0 である。承知の上で使っていたら、 Unicode の扱いが 4.0 ではできず、挫折した。 現在は、バイナリーで出ている MySQL を使っている。 私が現在使っているのは、 mysql Ver 14.12 Distrib 5.0.37, for pc-linux-gnu (i686) using readline 5.0 である。
gem install rails --include-dependencies とやってみたが、 なかなかインストールできない。 どこかで --remote オプションがいるということがわかったので、 これを入れる。
本では、mysql -u root mysql でデータベースを作成することになっている。 しかし、ルートのパスワードを設定しないのではまずいという指摘があった。 そこで、 http://travelonrails.blog68.fc2.com/blog-category-2.html に倣って、作り直す。 まず、今まで作ってしまったデータベースを消す。
$ mysql -u root mysql
mysql> drop database scheduler_development;
Query OK, 2 rows affected (0.25 sec)
...
$ mysqladmin -u root password password_for_root
あとは、上記のblogの通りに行えばよい。
プロジェクトを指定すれば、その名前でカレントディレクトリに新たなディレクトリができる。 だから、新たに新しいディレクトリを作る必要はない。
$ cd /home/marinkyo/rails; ls
(何もない)
$ rails scheduler --database=mysql
create
create app/controllers
(中略)
create log/test.log
$ ls
schedule
次のようにした
development:
adapter: mysql
database: scheduler_development
username: rails
password: password_for_rails
socket: /tmp/mysql.sock
host: localhost
encoding: utf8
「はじめよう Ruby on Rails」には、socket のエントリーがないが、 rails で作ったとき入っていたので、そのままにしている。 パスワードは、grant 文で作ったときに入力したパスワードである。 注意として、エントリーのインデントはタブではなく、スペースで入力する。
p.64 でテーブルを表示するときには、パスワード入力を行う -p オプションを入れる。
$ mysql -u rails scheduler_development -p
enter password (ここでパスワードを入れる)
68 ページでrake が何もなく通るが、 実際にはこんなエラーが出る。
1) Error:
test_create(SchedulesControllerTest):
StandardError: No fixture with name 'first' found for table 'schedules'
/usr/local/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/fixtures.rb:503:in `schedules'
./test/functional/schedules_controller_test.rb:15:in `setup_without_fixtures'
/usr/local/lib/ruby/gems/1.8/gems/activerecord-1.15.3/lib/active_record/fixtures.rb:576:in `setup'
(後略)
この対処は、http://www.sato-noriaki.net/diary/20070324.html にある通り。schedules_controller_test.rb の setup メソッドの一部を、 次のように書き換える。
# @first_id = schedules(:first).id @first_id = Schedule.find(:first).
まりんきょ学問所 > Rubyの浮き輪 > 高橋征義(監修):はじめよう Ruby on Rails