こんにちは @sonots です。

GrowthForecast のグラフの色を変更したり、複合グラフを作ったり、という作業を手動でなんてやってられない!ヽ(`Д´)ノ と思ったので、@mikeda さんの記事を参考に growthforecast-client という gem をつくりました。Thanks @mikeda さん !!


ちなみに @tagomoris さんが rb-growthforecast という gem をすでに作っているので、この gem は2番煎じであり、たぶん私以外の人は使わないでしょう。でも、いいんだ。自分で書き始めちゃってたから gem にしたかっただけなんだ。※ そもそも GrowthForecast に JSON API を追加したのは @tagomoris さんです。圧倒的感謝!=> http://tiqav.com/3xe 

設計思想とか

思想とかいうほどじゃないんですが、カジュアルにハッシュを JSON にしたものを GrowthForecast API に投げて、受け取った JSON をハッシュにして返すだけにしました。特にオブジェクト化もしてないですし、IndiffrentAccess 化もしてないです。

で、ハッシュのキーも symbol 投げたのに、JSON 受け取ったら string になっていた …  何が起こったのか(ry という「Symbol <-> String」問題も面倒くさいので、入力も出力も、ハッシュのキーは string に統一、という仕様にしています。

使い方

という前置きの上で、使い方サンプル。

たとえばグラフの色など、グラフの設定を変えたい場合には、こんかかんじに書きます。

クライアントオブジェクト作って、#edit_graph にグラフのパス( service_name, section_name, graph_name )と、更新パラメータを渡しているだけですね。
どんなパラメータを使えるのかは、コードにハッシュサンプル載せてるので、それを参考にしてもらうとわかると思います(手抜き

複合グラフも作れますよ。こんなかんじ。
あとは、グラフ一覧を取得する #list_graph, セクション一覧を取得する #list_section, サービス一覧を取得する #list_service などもあるので、それらを使ってループまわせば全グラフの設定ができたりしますね。捗る!グラフの削除メソッドなんかも用意してあるのであとはコードみてください!(手抜き

実装(テスト)の話

横道にそれますが … なんか書きたくなったので ...

growthforecast-client のテストコードは https://github.com/bblimke/webmock を使って、GrowthForecast が立っていなくても流せるようにしています。Travis でもテストながせるようになったし便利!

さらに環境変数 MOCK に off をセットすると、webmock を使わずに本物と実際につなげてテストを流せるようにしています。

$ rspec # webmock
$ MOCK=off rspec # http://localhost:5125 の GrowthForecast にアクセス

モックテストだけ書いて安心する人もいますが、私はそれだと安心できない派です。本物とつないだテストも流せるようにしておかないとジョイントテストできないですからね。GrowthForecast がバージョンアップしたら死んじゃうじゃないですか。

ちなみにどうやって MOCK=off しているのかというか、簡単にいうと spec_helper.rb に


ENV['MOCK'] ||= 'on' 
require 'webmock/rspec' if ENV['MOCK'] == 'on'


のようなコードを書いて、あと webmock 関連のコードは shared_context にまとめてそれらにも適宜 if ENV['MOCK'] == 'on' をつけているかんじですね。

最後に

というわけでグラフ設定が捗るようになったのでハッピーです。再度 thanks @mikeda さん、@tagomoris さん!