ようへいの日々精進XP

よかろうもん

Ruby から Excel を扱うメモ(2)(serverspec のテスト結果を Excel にまとめる)

はじめに

  • 前の記事の続き
  • Ruby から Excel を扱うモジュールのうち win32olespreadsheet 以外に Axlsx というモジュールがあったので試す

参考


Axlsx とは

こちらの記事を受け売りになってしまうが、以下のような特徴がある。

  • Office Open XML Spreadsheet の生成ツール
  • Excel をはじめ、OpenOffice などの各オフィスアプリケーションで閲覧することのできる表計算データを作成することが出来る
  • xlsx 形式をサポートする(従来の xls はサポートされていないかも)

Hello World

早速、Hello World してみる。

実行すると以下のような結果が Excel ファイルで出力される。

f:id:inokara:20130917044158p:plain


Axlsx を使って serverspec の結果を Excel に出力する

こちらを参考に serverspec のテスト結果を同じように Excel ファイルに出力出来ないか試してみた。

準備

Gem のインストール

以下のように必要な Gem をインストールする。

sudo gem install axlsx --no-ri --no-rdoc -V
sudo gem install serverspec --no-ri --no-rdoc -V

テストする環境を用意する

LXC でテストをする環境をコンテナで用意する。用意したコンテナは以下のような構成。

  • Debian 6.0.7
  • Apache が標準の設定で稼働(ポート 80 番で Listen)

spec_helper.rb を修正する

以下のように serverspec 側の spec_helper.rb に関して axlsx を扱えるように修正する。

spec ファイルを作成

以下のような spec ファイルを作成する。

serverspec-init を実行した後に生成される httpd_spec.rb をそのまま流用した。

実行

コマンドラインから

rake spec

を実行すると、以下のようにテストが終了する。

f:id:inokara:20130917042452p:plain

Excel ファイルに出力された結果を確認する

result.xlsx という Excel ファイルに出力されたテスト結果を確認してみる。

f:id:inokara:20130917041559p:plain

おお、それっぽく出力されている。

テストを失敗させてみる

テストするコンテナの Apache を止めたりしてテストでわざと失敗させてみる。

f:id:inokara:20130917042443p:plain

上記のように Failure/Error: it { should be_listening } のテストでエラーとなっているので、結果を result.xlsx で確認すると...

f:id:inokara:20130917042603p:plain

ちゃんと記録されている。

ということで

Axlsx について

  • spreadsheet 同様に手軽に Excel ファイルを作ることが出来た
  • また、examplesに掲載れているように普段使いでは十分すぎる位の機能があるようなので適宜試していきたい

serverspec の結果を Excel で出力することについて

  • ニーズはありそうな気がする
  • 今回、複数のホストを一気に試したが Excel の出力が思ったように(ヘッダにホスト名を入れたかった等...)出来なかった...
  • spec_helper.rb に大幅に手を入れることになってしまったのが、個人的には気持ち悪いので別の方法が無いかも模索中

その他

  • Rspec 知識ゼロなのが非常にキツイ
  • spec_helper.rb 内の c.before :suite doc.after :each do 等が何を意味するのかはこちらが参考になった
  • flattern メソッドについても調べることが出来た
  • flattern メソッドについてはこちらの動画がとても参考になった(短いけど)