FSSMで特定条件のLinux環境で使えないバグを修正してプルリクエストを投げた

いきなりまとめ

  • Linux環境のGemのrb-inotifyがインストールされている環境で使用した場合、落ちるエラーを修正した。
  • まだ反応がなくMergeされていないので、GithubからFork版を一旦使ってほしい。 github.com
  • PRはこちら github.com

そもそもFSSMとは?

Rubyでファイルを監視してなにかしらの処理を行うためのGem。 ファイルを監視して、変更を検知した場合にSlackで何か通知したり、ファイルバックアップデータを取ったりするスクリプトをささっと書くために利用されている。 FSSM自体に関してはここではあまり言及しないので下記サイトをご参照してもらえればと。 www.virment.com

どんな不具合があったのか

Gemのrb-inotifyがインストールされており、Linux環境だった場合に下記エラーを吐いて落ちてしまうというものでした。

/home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/fssm-0.2.10/lib/fssm/support.rb:58:in `>': comparison of String with 0 failed (ArgumentError)
    from /home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/fssm-0.2.10/lib/fssm/support.rb:58:in `rb_inotify?'
    from /home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/fssm-0.2.10/lib/fssm/support.rb:9:in `usable_backend'
    from /home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/fssm-0.2.10/lib/fssm/support.rb:25:in `backend'
    from /home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/fssm-0.2.10/lib/fssm.rb:54:in `const_missing'
    from /home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/fssm-0.2.10/lib/fssm/monitor.rb:4:in `initialize'
    from /home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/fssm-0.2.10/lib/fssm.rb:67:in `new'
    from /home/vagrant/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/fssm-0.2.10/lib/fssm.rb:67:in `monitor'
    from app.rb:15:in `<main>'

中身自体は至って単純で、 下記コミットログを参照してもらうとわかるけど、rb-inotifyのINotify::VERSIONがArrayからStringに変更されていた。(ちょっとコミットログが長い…) github.com

なので、下記PRにて、対応をざっくりと行ってとりあえず動くようにしておいた。 github.com

正直修正内容に関しても筋がちょっと悪いかも…と思ってて、 本来はGem::Versionで比較するべきだよなぁ…と思ったのだが、 とにかく動かないことに対して不満だったので、今回はこれで投げて様子を見ることにした。

その後

投げて2日位たったけど、作者や他のメンテナー(いるのか?)から特に反応がない。 もう少しして特に反応がない場合は、メンション付きのコメントをして反応があるかを見てみようと思う。