ruby の Rational ライブラリを使用して、画像の幅と高さをアスペクト比に変換しています。
文字列引数の扱いが数値引数とは異なることに気付きました。
>> Rational('1.91','1')
=> (191/100)
>> Rational(1.91,1)
=> (8601875288277647/4503599627370496)
>> RUBY_VERSION
=> "2.1.5"
>> RUBY_ENGINE
=> "ruby"
参考までに、1.91:1 は、Facebook がプラットフォーム上の画像に推奨するアスペクト比です。
191 や 100 などの値は、8601875288277647 や 4503599627370496 よりもデータベースに格納するのにはるかに便利です。
Rational テスト スイートは、この正確なケースをカバーしていないようです。