What's New in Rails 4

最近全然見れてなかったRailscastsですが、
Rails4の紹介が400回記念として出ていたので見てみました。
#400 What's New in Rails 4 - RailsCasts


準備

railscastsの中でpostgresを使うようにしていたのでinstallしました。

環境は、mountain lion(10.8.2)。

brew install postgresql
sudo sysctl -w kern.sysv.shmall=65536
sudo sysctl -w kern.sysv.shmmax=16777216

参考:Fixing Postgres on Mac 10.7 Tiger for Django

initdb /usr/local/var/postgres -E utf8

あとは

動画にそって写経。

bundlerはpreを使う

gem install bundler --pre

edge railsを使ってprojectを作成する

ローカルにrails/rails.gitをcloneして
railties/bin/rails を使うのですが
このときedgeオプションを付けることでgithubの最新railsを使うようです。

railties/bin/rails new ~/code/blog --edge -d postgresql
postgresで配列を格納する

migrationファイルに'array: true'とすることで
配列として格納することができます。

      t.string :tags, array: true

テーブル定義。

 tags         | character varying(255)[]    | 

select結果。

{ruby,rails} 
postgresでpstoreを使う

rake db:migrate時にpstoreが作成できないというエラーが発生しました。

解決方法は、下記。

CREATE EXTENSION hstore;

参考:Schneems • You got NoSQL in my Postgres! Using Hstore in Rails


こちらで紹介されているように、migrationファイルを作成しておくのが良さそうです。

他には

ActiveRecordのwhere.not、order
・scaffoldで生成されるMass Assignmentのprivateメソッド
・collection_check_boxes ヘルパー
・erbではなく、edit.html.rubyとしてruby scriptをviewに置ける

content_tag(:h1, "Edit") + render("form")

などなど。

全然関係ありませんが

irb / rails consoleで最後にセミコロンを付けると
実行結果が表示されないんですね。
いつも、表示させたくないときは、"...some commands; false"みたいなことをやっていました。


追記

index.html について

Rails4から public/index.html がなくなりました。
rails/welcome#index が実行されているとのこと。