SFCが計画停電グループ1なのでしょっちゅう停電している。
ほぼ1日1回停電するし、停電するとサーバーで長い処理をしている人や3Dプリンタを使っている人はレジュームができなくて大変らしいので簡単にSFCの状況を調べられるツール作った。

gem install sfc_ikiteru
して(適宜sudoつける)

sfc_ikiteru

すると

というふうにどれぐらい生きてるかわかる。
物理的に離れてそうなサーバーがいくつか入っているので、これでどの建物が停電しているかもなんとなく察しがつくはず。


もちろん、gemなのでmoduleとしても使える。返り値はtupleで受け取る
require 'rubygems'
require 'sfc_ikiteru'
per, details = SfcIkiteru.ikiteru
p per
p details
perは1.0〜0.0の少数が返ってくる。生きているサーバーの割合。
detailsはhashで、詳細な値が入っている。


ソースはここにある https://github.com/shokai/sfc_ikiteru

作るうえでいくつか学んだこと

■binフォルダ
rubygemにbinというフォルダを作っておくと、gem installした時に適当にパスを通してくれる。
bin/sfc_ikiteru作ってchmod +xしておいた。


■terminal出力に色をつける
rainbow使った。
require 'rainbow'
puts "正常です".color(:green)
puts "応答なし".color(:red)
のように使う


■ping
rubyの標準ライブラリでpingがうてる
require 'ping'
Ping.pingecho('shokai.org', 5, 'echo') # timeout5秒
Ping.pingecho('shokai.org', 5, 'http') # timeout5秒、httpで

第三引数はechoを返さないサーバーならhttpとか適当な外向きに動いてるportを使うといい
でも1.9.2ではpingそのものが無くなってた。jrubyでは動くけどエラーがたくさんでる。


■newgemのエラー
newgemでgemの雛形を作っているんだけど、newgemはactive_support2系を使っている。
newgemもactivesupport2系も地味アップデートされていて、しかしactive_support3系が既に俺のマシンに入っているのでgem updateでも2系がアップデートされずよく依存のエラーがでる。よくある。


いつも適当に新しいバージョンのactivesupport2系を入れるとなんとかなる。
gem install activesupport --version=2.3.11