ruby on rails」カテゴリーアーカイブ

Ruby on Rails アノテーション TODO,FIXME,OPTIMIZE

後から実装はアノテーションのコメントをいれて後で参照する。

コードに下記のように入れておくと

def validate_each(record, attributes, value)
  # TODO: 後から実装
end

下記のコマンドであとから参照できる。

$ rake notes

ウィンドウズだと日本語が文字化けするらしいので注意

Ruby on Rails 3.2.0 ビヘイビア駆動型開発RSpecのスタートアップ

アプリケーションが複雑になってきて、疎結合でがんばっていてもどうしてもひとつ直すと一方に影響してしまう状況になったので、やっぱりテストもきちんとしなければと思いなおし調べた結果、RSpecというのがどうやらよいらしい。

一応デフォルトのTest:Unitを使っていたのですが、どうせ本格的に導入するならみなさんが「いい」といっているほうがいいにきまってます。

ということでRSpecをはじめました。

が、情報が少ない!いきなりつまずいてしまいました。

ネット上の記事によっていろいろ違うことが書いてあります。どれも環境によって使い方が違うのか、短い間に仕様がいろいろ変わったのかなと想像していますが。
なのであくまで私の環境においてどのようにはじめたかを記述します。

環境は下記のとおり

  • OS:Windows7上にVirtualBoxにてUbuntuをインストール
  • ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-linux]
  • Rails 3.2.0

まず、インストールです。Gemfileに下記を記入

gem ‘rspec-rails’, ‘>= 2.6.0’, :group => [:development, :test]

$ bundle installを実行してインストールされたことを確認。

次にプロジェクトにRSpecを初期設定します。
$rails g rspec:install

この状態でscaffoldなどを使うと自動的にspec/のなかにmodels/hoge_spec.rbなどのファイルができます。

これらのファイルは自分で作ってもOKなのですが、だーっと作ってもらえるのはやっぱりうれしい。
ところが私の場合プロジェクトの途中ですのですでにたくさんのモデルやcontrollerを作ってしまっていました。

すでに存在するものに対してspecファイルを作るには以下のとおり。

$ rails generate rspec:model Hogehoge

コントローラも同様に作れる模様。

その後で
$ rake  spec
ですべてのテストを実行できます。

■なやんだところ

一部の記事にはRSpecをインストールした後、
$ spec -v
でインストールされたかどうかを確認する。とありましたが
$ rspec -v
で確認することができました。

Gemファイルとして提供されているものではなくRailsのプラグインとして導入するよいと薦めている記事もあります。 これによってその後の操作が違うようです。

Ruby on Rails Ver.3.2.0: generate scaffoldを取り消す手順

$ rails destroy scaffold 取り消したいScaffold名

でappのmodel,view,controllerの各要素やhelper,javascript,stylesheetなどgenerate scaffoldで作られたものがすべて削除される。

が、DBが残っている。

のでそれも消す。下記はsqlite3でgtoupsテーブルを削除する例

sqlite3 db/development.sqlite3 #接続
sqlite> .tables #テーブルがあることを確認
sqlite> DROP TABLE groups; #削除
sqlite> .tables  #テーブルが削除されたことを確認