serverspecをちょっと使ってみたメモ

serverspecをちょっと使ってみたかったので使ってみたのですよ。
環境:OS X 10.7.5 / rbenv - ruby 2.0.0-p195

Rubyの環境を作る

rbenv + ruby-buildが入った環境で以下を実行します。

$ rbenv install 2.0.0-p195
$ rbenv global 2.0.0-p195
$ gem intsall bundler

rehashしてないけどなんでbundler使えるんだろう?

Gemfileを書く

Gemfileを書きます。まあgemで直にserverspecをインストールしても良いのだろうけど。

source 'http://rubygems.org'

gem 'serverspec'

書いたらbundleを実行してgemをインストールします。

$ bundle install --path vendor/bundle

テストを書く

で、serverspec-initを実行してテンプレートを作ってもらって、テストを追加します。
serverspec-initでSSHかlocalか聞かれますがとりあえずlocalを指定しました。

$ bundle exec serverspec-init
$ vim spec/localhost/vim_spec.rb


何を書こうかなーと思ったのですが、とりあえず$HOMEに.vimrcがあるかどうかをテストしてみようかと以下を書いてみました。

spec/localhost/vim_spec.rb
require 'spec_helper'

describe file("#{ENV['HOME']}/.vimrc") do
  # OS Xだと内部で使っているらしい`stat -c`が動かないらしくて失敗する……
  # it { should be_linked_to "#{ENV['HOME']}/Repos/hg/dotfiles/vim/.vimrc" }
  it { should be_file "#{ENV['HOME']}/.vimrc" }
end

$HOMEにある.vimrcがリポジトリで管理している.vimrcにリンクされてるかどうか見たかったんですけど……
なんか動かなかったのでとりあえずファイルが存在するかどうか見ることに。


ついでにbundleなんちゃらと入力するのが辛かったのでMakefileを書く事に。

Makefile
#!/usr/bin/make -f

.DEFAULT_GOAL := all

.PHONY: all
all:
	@bundle exec rake spec

あと、もともとあったhttpd_spec.rbをリネームしておきます。
Rakefileを見るとわかるんですが、*/*_spec.rbと指定されているのでファイルを追加するときは_spec.rbを付けると良いみたいです。

実行してみる

makeを実行してみると……

$ make
/Users/sasaplus1/.rbenv/versions/2.0.0-p195/bin/ruby -S rspec spec/localhost/vimrc_spec.rb
.

Finished in 0.03725 seconds
1 example, 0 failures

となります。とまあ、こんな感じ。


まだちょっとしか使ってないけれど、手順を見ながら環境を作ったあとにいざ動かしてみると、実は設定が足りてなかった……とか結構あるので、これでちゃんと確認できるようになればほんとに良いものだなあと思いました。
これからもっと使って行って、使いこなしたいなー。