後半はrakeについてです。
- edgeで追加されたrake
- 2.0から追加されたrake
を中心に、rakeを一通り見てゆきました。まず、
rake rails:freeze:edge
でedgeをインストール。
edgeで追加されたrake
edgeでは、migrationファイル名が20080420...みたいなファイル名になってたのに驚く。管理しやすいのかなあ?
とりあえず、migration時のバージョン設定が
db:migrate VERSION=2008...
みたいになって面倒になった。その影響か、まず
rake db:migrate:up
rake db:migrate:down
のように、相対指定でのマイグレーション用rakeができてた。
また、
rake time:zones:all
のような、timezoneを表示するrakeもできていた。
rake time:zone:us
これは自分のプロジェクトのタイムゾーンを表示・・・と思いきや、UnitedStatesのタイムゾーンを表示するrake。
他にはgem系のrakeもできてた。
rake gems
railsの中で使われているgemを表示する。
rake gems:install
必要なgemsがインストールされていない場合、インストールしてくれる。
必要なgemsとして登録するにはconfig/environmentに記述する方法がある。他にもあるのかも?
デプロイするときに便利そう。
rake gems:unpack
installされたgemsをvendor/gemsに入れる
rake abort_if_pending_migration
これはよくわからんかった。
2.0で使えるrake
2.0から使えるようになったかどうかは調べるのが手間なので、2.0で使えるというくくりでお届けします。
rake db:create
config/database.ymlをみてデータベースを作ってくれる。便利。
rake db:create:all
db:createだとRAILS_ENVのやつしか作らないけど、これは全部(test, development, production)作る。
rake db:migrate:redo
一つ前のversionに戻してから, もう一度migrateしてくれる。あんまり使いどころがわからない。
rake db:charset
rake db:reset
テーブルを消してmigrate
rake reset
db消して、schemaを見て作り直す。
rake db:collation
よくわからん。ちなみにcollationは照合という意味らしい。
rake db:drop
読んで字のごとく。dbをdrop。
rake db:fixtures:identify
fixtureの指定したデータのIDかlabelを表示。なんに使うのかはよくわからない。
rake db:fixtures:load
指定されたenironmentのdbにfixtureのデータを入れる。
rake db:rollbadk
versionを一つ戻す。STEP=nで戻す段階を指定できる。db:migrate:downと一緒かな?
rake db:schema:dump
schema.rbを作る。使いどころがわからない・・・
rake db:structure:dump
dbのテーブル構成をdumpしてsqlにしてくれる。mysqlならできるけどsqliteじゃできない。
rake db:test:clone
current environmentのdatabaseからtestのdatabaseへコピー
rake db:test:clone_structure
developmentのdatabaseからtestへ。
rake db:test:purge
テーブルを消す。databaseは残る。
rake db:version
versionを表示(edgeだと2008....)
rake notes
#TODOとか#FIXMEとか書いとくとそれを列挙してくれる。これは便利かも。
annotations.rakeをいじると#ATODEとか自由に追加できる。
rake rails:freeze:gems
ローカルにあるgemの中身をvendor配下に格納
rake rails:unfreeze
freezeしたやつを消す
rake routes
routes.rbの設定で実際にどんなルートになったかを表示。たくさんでるからgrepと併用するといい。
rake test:plugins
感想
これまで使ってなかったけどこれは使えそうだなーっていうのはこれくらいかな。
- db:create:all
- db:reset
- db:fixtures:load
- notes
edgeはgems:installが簡単にできたら使えそう。