PuppetのFacterでもrspecしたい!

そういうわけです。Rubyなので、Rubyのテストツールでテストできると複雑なCustomFacterの維持・管理がしやすいですよね。

今日は「あるFacterについてのテストを2つ以上書くときテスト毎にそのFacterの値をクリアする」ということをしたのでそれについて書きます。

まずはテストを1つ書いてみる

ホスト名からタグ(何のタグか、は気にしない)を生成するFacterのテストを書く、ということにします。最初のコードはこれ。雑…

テストはこうしましょう。CustomFacter内で別のFacterを使っているので、allowとreceiveを使ってstub化します。

テストを実行します。いいですね。

2つ以上のテストがあると?

さて、次です。いろいろなホスト名に対応したいので、安直にこうしてみます。

テストはこうなりますね。

よさそうです。テストを実行してみましょう。

うーむ、失敗してしまった。追加した「hostname の prefix が piyo の場合」がうまくいっていません。これは、1つ前のテストで一度tag facterが呼び出されたため、その値がメモリに保持されてしまっているためです。

解決策

解決策としては、テスト毎にtag facterの結果をクリアしてやればよい。ベストかどうかは自信が無いですが、今回はbefore(:each)で以下を実行して解決しました。

クリアしたいFacterをピンポイントでflushしてやります。Facter.clearというメソッドもあるのだけど、それを実行すると他のものも消えてしまって面倒だった。最終的なテストコードはこうなります。

実行すると、テストは2つとも通ることが確認できます。

これで、少ないコードでCustomFacterのテストを書けるようになりました。実際のCustomFacterは30行程度のものなので、テストがなくてもまぁ分かるのだけど、滅多に触らないのでテストがあると安心すると思います。

 

CP+と御苗場に行ってきた

初めて行ったのだけど、結構楽しめた。

CP+

オリンパスのOM-D E-M1 Mark II がすごかった。試し撮りができたのだけど、連射速度が半端ない。25mm F1.2のレンズとセットでもうこれでいいんじゃないかな、と思ってしまった。自分は基本50mmを使うし、E-M1は持ったときにすごく手になじむしね。SONYのRX100M5のAFもすごかった。平日、鞄に入れておくのはこれでいいんじゃないかと思わせるすごさ。とはいえ、CANONのフラッグシップなんかはファインダーを覗いたときのクリア度合いが半端ないのであれはあれでいいなあと感じる。結局、どういうものを通して世界を見たいのかということ次第で選ぶべき、といういつのも結論に達するんだけど。

御苗場

CP+の会場からは少し離れていたのだけど、シャトルバスが定期運行されていたので助かった。2階・3階に分かれていて、相当数の写真が展示してあり、一通り見て回るだけでくたくただった。なんでそれを撮ったのだろう?と思えたものがいくつか見つかったので、結構満足。

帰りに寄ったスープカレーのお店で。

事前に登録しておけば入場無料で半日以上いられるのでかなりお得だと思う。ただ、土日だと周囲に食事できる場所が少なそう。スケジュールをうまく組んで、中華街まで行くとかすると丸一日楽しめるんじゃないかな。

写真のワークショップ12回目

カラープリントの回。明かりの無い状態での作業はなかなか難しかった。マゼンタの値をほんの少しだけ変えるだけで印象ががらっと変わって、カラープリントをすると色に繊細になるというのは確かにそうだと感じる。

教育心理学概論読書会 第4回 に参加した

友人が主催している、 教育心理学概論読書会 第4回 に参加してきた。教育心理学概論自体は友人がかなり薦めていてちょくちょく読んでいたのだけど、自分で読むだけじゃなくてちょっと違うこともしたいと思ったのがきっかけ。当日は知識構成型ジグソー法という手法でやったのだけど、以下のような流れで結構よかった。

  1. 同じ箇所を読んだ人で集まって大事な箇所、要点を確認する(エキスパート活動)
  2. 各章を読んだ人で集まって、エキスパート活動で話した内容を共有する(ジグソー活動)
  3. 自分なりの考えを話したり、経験と繋げて説明したりしてさらに理解を深める

単に読むだけじゃなくて、対話することで理解が進むというのはまさにこの本に書かれていることで、それを実感できたのは大きな収穫だと感じる。また、バックグラウンドが異なる(それでも技術系の人が多かったけど)人と話すことで異なる視点も知ることができ、それもよかった。

JasperProjectというものも初めて知ったのだけどなかなか興味深かった。これは解が複数ある、実生活に近い問いを通じて議論・対話を促したり、問いからツール(スマート・ツールと呼ぶらしい)を作ったりというもので、研修などでやってもよさそうだと感じた。

会場のヴァル研究所さんは社内のあちこちでカンバンを使っていて、見学することもどうやらできるらしい。ロビーも綺麗で、初めて生のPepper君を見ました。会場提供、ありがとうございました。来月も伺います。

パーソナルトレーニング10回目

ようやく10回目。ベンチプレスは記録更新に失敗した。とはいえ、割と安定してあげられたのであまり気にせず続けたい。こまめに食べろと言われて、ウイダーのプロテインバーを薦められたのでコンビニとかで探してみたい。