トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

Ruby on Rails 3.0 俺メモ

決まったレールの上を走ればできるというけど、決まりをおぼえてられなそうなので…。

というかいまだに何をどうしたらよいのやら状態。

インスコ

Rubyをいれる。1.9系もよさげになってきたので、そっちで。Debianなら

# aptitude install ruby1.9.1

中身は1.9.2だけど、パッケージの名前は1.9.1。なんでそうなのかはaptitude showしたら出てきた。

RubyGemsを入れる。と思ったら、1.9からはRubyに添付されているので何もしなくてよい。

Railsをaptで入れるかgemで入れるかは微妙なとこだけど、個人的ポリシーでgemにする。

# gem install rails

いろいろ入る。

何かデータベースを入れないといけない。最近のrailsではSQLite3が標準らしい。ぽすぐれやMySQLを入れるまでもないし、SQLite3にします。

ポリシーに従ってgemで入れる編

# aptitude install ruby1.9.1-dev libsqlite3-dev
# gem install sqlite3

あれ…gemで入れるとか言ってるくせに、必要なヘッダとかのためにapt使ってるぞ…。いままで名前がsqlite3-rubyだったけど、sqlite3に改名したみたい。

apt編

# aptitude install libsqlite3-ruby1.9.1

こっちのが簡単かも…。

つくってみる

$ rails new AppName -J

このとき-Jをつけるとprototype.jsが入らないので、jQueryを使いたいときにはつける。

で、jQueryを使うにはどうするのよというと、jquery-ujsを使えばよいらしい。

$ cd AppName
$ vi Gemfile

以下の内容を追記。

gem 'jquery-rails', '>= 1.0.12'
$ bundle install

sudoしなくても、必要なら勝手に昇格してくれるっぽい。

$ rails generate jquery:install

htmlからjsを読むように、config/application.rbを編集。

config.action_view.javascript_expansions[:defaults] = %w(jquery.min rails)

Model

$ rails generate model member name:text note:text ...

RoRの慣習ではModel名は単数形で小文字はじまり。Classが頭文字大文字、DBのテーブル名が複数形に自動的になる。

(あとでmigrateするとできるテーブルには)idカラムがActiveRecordによって追加される。あとcreate_atとupdate_atも自動でできるけど、こっちはいらないなら消せる。後述のmigrateスクリプトを編集すべし。

$ rake db:migrate

あとでカラム増やしたり減らしたりするにはどうすればええねん…→db/migrate以下にスクリプトがあるので編集してmigrateする。…と思ったらできない。

どうやらDBにスキーマのバージョンを持ってて、それより新しい番号のスクリプトのupメソッドが呼ばれる模様。downもちゃんと書いとけば

$ rake db:migrate VERSION=hoge

で戻したりできる。

そんな似たようなスクリプトまた書くのめんどくさー!過去バージョンなんていらない!まだDBに何も書いてないし!という場合。VERSION=0を指定すると初期状態に戻せるので、自動生成のスクリプトにカラムを書き足してから

$ rake db:migrate VERSION=0
$ rake db:migrate