『はじめる!Rails3 (1)』をRails 3.1で読み進めるときのポイント その1

『はじめる!Rails3(1)』(黒田努 著 / 達人出版会)はRails3.0をベースに記述されている為、3.1環境でチュートリアルを進めていくと何点かつまずくポイントがある。自分用のメモとして記述しておく。

2.3 Ruby on Railsのインストール

以下のコマンドでrailsをインストールするが、1行だけエラーが出た。

$ gem install rails

とすると、結果ログに1行

$ file 'lib' not found

と表示される。
これは、以下の方法で解決できる・・・らしい。が、今回はスルーして先に進めた。得に問題は起こっていないので、スルーでも大丈夫だと思われる。

特にそのままでも問題もなさそうだったけれど、気になったので調べてみた。
そしたらlibディレクトリを作ったら無事解決しました。

cd /usr/local/lib/ruby/gems/1.9.1/gems/rails-3.0.5
sudo mkdir lib
sudo gem install rails

NS2とかLinuxのブログ : gem install railsでFile not found: lib

5.5 部分テンプレート

webアプリのロゴ画像を表示する部分。画像ファイルを public/images ディレクトリ配下に置くように指定されるが、ここにおいても表示されない。

これはRails 3.1からAsset Pipelineという仕組みが導入された為で、public/imagesではなく、assets/imagesに配置する。JavaScriptやStylesheetも同様で、それぞれassets/javascriptsassets/stylesheetsに配置する。

6.2 マイグレーション

新しくテーブルを作成するマイグレーションスクリプトについて。書籍内では以下のようにself.upとself.downが定義されている。

Class CreateTasks <ActiveRecord::Migration
  def self.up
    create_table :tasks do |t|
      t.string :name
      t.text :description
      t.date :due_date
      t.boolean :done

      t.timestamps
    end
  end

  def self.down
    drop_table :tasks
  end
end

Rails3.1からはこれが変更になり、upとdownをまとめてchangeメソッドで記述するようになった。以下のように書く。

Class CreateTasks <ActiveRecord::Migration
  def change
    create_table :tasks do |t|
      t.string :name
      t.text :description
      t.date :due_date
      t.boolean :done

      t.timestamps
    end
  end
end

selfが抜けてインスタンスメソッドになっている点に注意。

次回へ続く