たごもりすメモ

コードとかその他の話とか。

serverspecのアーキテクチャ

serverspecは以下のようなソフトウェアですね。

  • サーバがどのような状態かをRuby DSL(RSpec記法)で記述する
  • 記述されたspecの状態になっているかどうかをチェックする
  • チェックはローカルマシンに対して行われるか、もしくはSSHを経由してリモートサーバに対して行われる
  • チェックはOSコマンドを叩くことによって行われる

これがどのように有用なのはかもうあちこちに書かれているので置いておいて、アーキテクチャを理解すると、以下のようなことがわかります。

  • specの実行にはRubyが必要
  • チェック対象サーバにはRubyは必要「ではない」

なので、チェック対象サーバの状態を取得するためにRubyの機能が問題になることはありません。もしうまく状態をとれていない項目があればそれはspecの書き方が悪いか、あるいはOSコマンドに落とす部分(matcher)がうまく作れていないかなので、どちらかを直しましょう。*1

ということで
http://sharl.haun.org/d/2013122401

このエントリ、たぶんこの人はチェック自体がRubyで走ると思っているんだと思うんですね。Rubyの機能とバージョンについてこのような問題があったのは自分もなんか記憶にあるし。
でもserverspecはチェック自体はOSコマンドを叩いて実行するので、関係ありません。こういった問題は無いか、もしくはあったとしても、Ruby 1.8.x でも解決できます。叩かれるOSコマンドを直せばよいだけなので。

ということで、上述エントリの内容は誤解にもとづく誤りであると思います。

なお

自分はserverspecいいなーと思うものの、手元でインストールしたことは一度もありません。いや将来やるリストには積まれてるんだけど、その、あの……。

*1:matcherであればpullreqを送るのがよいでしょう。