その時以下のようなエラーが。パッと見て何が起きたか何も分からない。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[3] pry(main)> RGhost::Convert.new(nil).to :jpeg | |
NoMethodError: undefined method `empty?' for nil:NilClass | |
from /Users/atton/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/bundler/gems/rghost-141a28abb655/lib/rghost/ruby_ghost_engine.rb:156:in `shellescape' | |
[5] pry(main)> RGhost::Convert.new(true).to :jpeg | |
NoMethodError: undefined method `empty?' for nil:NilClass | |
from /Users/atton/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/bundler/gems/rghost-141a28abb655/lib/rghost/ruby_ghost_engine.rb:156:in `shellescape' |
ちょっと困ったなー、ということで調べてみる。
具体的にエラーが発生しているのは shellescape というメソッド。
これを呼んでるのはこことかこことかここ。
RGhost は ImageMagick を使って画像を変換するのでそれ用に引数を shellescape しているようです。
(書いてて思ったけれど ImageMagick 側は何もAPIとか提供してないのかな)
それで、よくよく見てみると file_in は case を使って @document のクラスで確定するらしい。
あー、それなら Tempfile は扱えないな。
ということで File にして一時の問題は解決。
他の人にも同じ轍を踏んで欲しくないので、対応してないのならメッセージが出るとかした方が良いな、と思う。
ということで PR にしてみました。
やったことは単純で、case に else 節を足して例外を投げるように変更。
RGhost::Document と File と String しか対応してないよー、と例外経由でメッセージが出るようになった。
RSpec ももちろん追加。
gemspec に RSpec のバージョンが指定されていないのが若干ひやひやものである。
3.0 未満の RSpec だと raise_error とか無かった気がする。
あと浮動小数の値がちょっと違う。なんか最近YARVに変更入ったっけ。分からない。
そのあたりも含めて最新に合わせつつ、バージョン情報とかを PR に書いて投げた。
そしたら一晩でマージしてくれた。対応早くてうれしい。
という訳で Rubykaigi の熱がさめないうちに OSS 活動をしたのであった。まる。