ページ

2011年9月25日日曜日

autotestとRSpecを使う

色々見たけどgithub見るのが一番早かった
https://github.com/rspec/rspec/wiki/autotest

まずはRSpecとZenTestをインストールする。
% gem install rspec
% gem install ZenTest
~/.rspecに書いたRSpecの設定はこんなん。
# /.rspec
--format nested
--color
ファイル保存のタイミングでテストを実行してくれるようにautotest-fseventを、
テスト結果をgrowlで通知してくれるようにautotest-growlを入れる。

% gem install autotest-fsevent autotest-growl
~/.autotestを作って、以下を書く。
# Include plugins
require 'autotest/fsevent'
require 'autotest/growl'

# Skip some paths
Autotest.add_hook :initialize do |autotest|
%w{.git .DS_Store ._* vendor}.each { |exception| autotest.add_exception(exception) }
false
end
プロジェクト毎の設定はプロジェクトのrootに./.autotestを作る。

# ./.autotest
Autotest.add_hook(:initialize) {|at|
at.add_exception %r{^\.git} # ignore Version Control System
at.add_exception %r{^./tmp} # ignore temp files, lest autotest will run again, and again...
# at.clear_mappings # take out the default (test/test*rb)
at.add_mapping(%r{^lib/.*\.rb$}) {|f, _|
Dir['spec/**/*_spec.rb']
}
nil
}

大体の設定は以上。

そして実際に使う。

ディレクトリ構造はこんな感じに。
テストファイルをspec下、テスト対象をlib下に置く。
hoge/
|-- autotest/
|    `-- discover.rb
|-- lib/
|    `-- hoge.rb
`-- spec/
     `-- hoge_spec.rb

discover.rbには、rspec2を使う的なことを書いておく。
#./autotest/discover.rb

Autotest.add_discovery { "rspec2" }

あとは心の赴くままにテスト駆動すればいい。

2011年9月2日金曜日

SinatraとSlimでInternal Server Errorが出てた

さくらのVPSでrvmとrubyをアップデートしたら各所に弊害が出てた。

Passengerがエラー吐いてたので /etc/apache2/conf.d/passenger を修正。
LoadModule passenger_module /home/zakuni/.rvm/gems/ruby-1.9.2-p290@global/gems/passenger-3.0.8/ext/apache2/mod_passenger.so
PassengerRoot /home/zakuni/.rvm/gems/ruby-1.9.2-p290@global/gems/passenger-3.0.8
PassengerRuby /home/zakuni/.rvm/wrappers/ruby-1.9.2-p290@global/ruby
rubyのバージョンに依存しない書き方にしたいところだけど、とりあえずこれで保留。

apacheをリロード
sudo /etc/init.d/apache2 reload

そして輝くInternal Server Error。

悩む。

どうやらSlimがおかしいと突き止める。

Slimの公式サイト(http://slim-lang.com/)と見比べる。

1行目
! doctype html
になってたのを
doctype html
に変えてやる。

エラー消えた。

いつの間にかSlimの仕様が変わってたらしい。