かなりニッチなニーズかもしれないけどメモ
やりたいこと
例えば以下のようなバージョンの配列があったとして
versions = ["1.1", "2.0", "1.1.4", "1.6", "2.4.1"]
これを古→新順にソートしたいとする
解決策1 ライブラリを使う
探したらあった なんとGithub作
irb(main):002:0> versions = ["1.1", "2.0", "1.1.4", "1.6", "2.4.1"] => ["1.1", "2.0", "1.1.4", "1.6", "2.4.1"] irb(main):003:0> VersionSorter.sort(versions) => ["1.1", "1.1.4", "1.6", "2.0", "2.4.1"]
ちゃんとソートできている
解決策2 Gem::Versionを使う
どういうこっちゃって話だけど見たほうが早い
irb(main):004:0> versions = ["1.1", "2.0", "1.1.4", "1.6", "2.4.1"] => ["1.1", "2.0", "1.1.4", "1.6", "2.4.1"] irb(main):005:0> versions.sort_by { |v| Gem::Version.new(v) } => ["1.1", "1.1.4", "1.6", "2.0", "2.4.1"]
このGemクラスは特にインストールとかしなくても使えるっぽい。
もともとGihtubもRubygemのホスティングしてたっぽいし中身は実は同じなのかもしれない。。。。