最近全然見れてなかった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 が実行されているとのこと。