Rails勉強会@東京第29回に参加してきた#2

結構長くなるんで,ログの続きを分割.

rake taskを見てみる

ひとまず流す
  • edge railsで見てみることに.
    • とりあえずdiffをとっておく.
% rake -T > ../rake_tasks_2-0-2
% rake rails:freeze:edge
% rake -T > ../rake_tasks_edge
% diff ../rake_tasks_2-0-2 ../rake_taskes_edge
1c1
< (in /home/rust/program/ruby/gitexample3)
---
> (in /home/rust/program/ruby/gitexample)
11a12
> rake db:migrate:down                 # Runs the "down" for a given migratio...
13a15
> rake db:migrate:up                   # Runs the "up" for a given migration ...
33a36,39
> rake gems                            # List the gems that this rails applic...
> rake gems:build                      # Build any native extensions for unpa...
> rake gems:install                    # Installs all required gems for this ...
> rake gems:unpack                     # Unpacks the specified gem into vendo...
49c55
< rake test                            # Test all units and functionals
---
> rake test                            # Run all unit, functional and integra...
55a62,64
> rake time:zones:all                  # Displays names of all time zones rec...
> rake time:zones:local                # Displays names of time zones recogni...
> rake time:zones:us                   # Displays names of US time zones reco...
    • edge railsとは開発版らしい.
    • [rake -D RAKE_TASK]でメッセージ全文表示できるそうな.
rake db:migrate:[up|down|redo|restart]
データベースのマイグレーションを操作する
up 1つschema_versionを上げる
down 1つschema_versionを下げる
redo 最後のmigrationをrevertして再実行
reset create databaseからやり直す
rake fixtures
identify:fixtureにある&$58;oneなどから固有のIDを取得する(らしい.まだ未調査)
rake db:rollback
migrationを一つ戻す
rake time:
zone:local:ローカルの(で設定できる?)タイムゾーンを表示
rake db:schema:dump
db/schema.rbにschemaをdumpする(そのまま)
rake db:test:clone[_structure]
いまのenvironmentのデータベースからテスト用のデータベースを構築[構造のみ]
rake db:test:purge
drop databaseを実行

:rake db:test:truncateする

rake db:version
最新のmigration versionを表示する
rake notes[:todo|:fixme|:optimize]
ソースコード中に記載されたコメントを表示する[#TODO comments....|#FIXME comments....|#OPTIMIZE comments....]
    • コメント自身はSourceAnnotationExtractor.enumerate("XXXX")で拾っている.
migration周りの変更点まとめ
  • migrationのversion管理が,番号からタイムスタンプになってた.
      • 20080414124549_XXXXXXXXXX.rb
    • ただし旧記法(001_XXXXXXXXX.rb)と共存は可能.
      • ソート順では001, 002の方が先に来る
    • タイムスタンプになってるので開発環境のタイムゾーンに注意が必要になるかも.
rake gems関連
  • 準備
    • config/environment.rbのconfig.gemsに必要なgemを記述する.
config.gems = [
  Ruby::GemDependency.new 'uuidtools'
]
rake gems:install
上記configで指定したgemをシステムにインストールする
rake gems:unpack
インストールされているgemをvender配下にコピーする.環境をひとまとめにできる.deploy時にも便利そう.
  • denendencyを簡単に書けるようにして欲しいよねー的な
  • この機能によってgemのdeployができるようになると便利そう.

その他

  • データベースをfixtureにするpluginがあるらしい.
  • initializersに書くかenvironment.rbに書くか,どちらが良いんだろうか.
  • rak 'words'でいい具合にgrep検索できるようだ.結構便利.
  • config.plugins=[]でpluginの指定やload順序を指定可能らしい.

まとめ

ためになりました.もっといろいろ勉強しないといけないなぁと,さらに思いました.できれば発表などできるようになりたいな.