3月 242011
<< sfc_ikiteru || glitchtext.js作った >>
SFCが計画停電グループ1なのでしょっちゅう停電している。
ほぼ1日1回停電するし、停電するとサーバーで長い処理をしている人や3Dプリンタを使っている人はレジュームができなくて大変らしいので簡単にSFCの状況を調べられるツール作った。
gem install sfc_ikiteruして(適宜sudoつける)
sfc_ikiteru
すると
というふうにどれぐらい生きてるかわかる。
物理的に離れてそうなサーバーがいくつか入っているので、これでどの建物が停電しているかもなんとなく察しがつくはず。
もちろん、gemなのでmoduleとしても使える。返り値はtupleで受け取る
require 'rubygems'perは1.0〜0.0の少数が返ってくる。生きているサーバーの割合。
require 'sfc_ikiteru'
per, details = SfcIkiteru.ikiteru
p per
p details
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