高橋征義(監修):はじめよう Ruby on Rails

作成日: 2007-03-31
最終更新日:

試行錯誤

サポートページ や検索サイトを手がかりに進めているが、 試行錯誤が続く。

Ruby のインストール

Ruby のバージョンは 1.8.2 以上である。 私は Vine Linux 3.2 のバージョンを使っていて 1.8.2 と出ているので 安心していたが、これはプリリリースのものだった。 従って、ソースからコンパイルして入れた。 私が現在使っているのは、 ruby 1.8.6 (2007-03-13 patchlevel 0) [i686-linux] である。

MySQL のインストール

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 である。

Rails のインストール

gem install rails --include-dependencies とやってみたが、 なかなかインストールできない。 どこかで --remote オプションがいるということがわかったので、 これを入れる。

MySQL のデータベース作成

本では、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

config.yml

次のようにした


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 (ここでパスワードを入れる)

rake

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


MARUYAMA Satosi