macOS Sonoma が正式リリースされたので今後はアップデートが終わり EOL となる macOS Big Sur な Ruby 開発用の Mac mini マシンを Ventura にアップグレードした。
このマシンは sasadake DC に設置しているマシンなので、今回は初めてリモートで OS のメジャーアップグレードに挑戦したけど割りとどうにかなった。さすがにリモートで実際に再起動で切断 > ping して立ち上がるかどうか、ssh トンネルできるかは不安だった。
毎年、こんな感じでローリングアップデートをしているけど、EOL となる macOS の UI をみると、使いやすさは別としてとても古いなこれ...と感じるので慣れというのは不思議なものである。
@igaiga555 が
Rubyのコード上から(=オブジェクトとして)インストールされて使われているGemパッケージ(たとえばJSONgemとかtimeout gemとか)のバージョンを取得ってできますか?
と書いていたので回答した。
https://twitter.com/igaiga555/status/1709478362702651853
個別には、いわゆる VERSION
定数を参照するというのがありつつ、RubyGems や Bundler によって activate = 読み込みされているものを出すなら Gem.loaded_specs
を使うのがいいと思う。これは key が gem の名前、value が gemspec となっている Hash である。
>> Gem.loaded_specs.map{|_,v| [v.name, v.version.to_s]}
=>
[["error_highlight", "0.5.1"],
["did_you_mean", "1.6.3"],
["syntax_suggest", "1.1.0"],
["irb", "1.8.1"],
["set", "1.0.3"],
...
上の結果は手元で irb を叩いた結果だけど、rails console など Bundler.setup
が呼ばれた後、もしくは irb で呼んだ上で実行すれば Gemfile に寄って制御された gem の一覧が得られる、はず。
ご活用ください。