確かにちまたでは 1.8.7-p22 とかそういう表記が使われているのに、それを表示しないのはよろしくないと思ったので tDiary でも対応してみた。とりあえず、constant Kernel::RUBY_PATCHLEVELによると
パッチレベルという概念および RUBY_PATCHLEVEL 定数は、 Ruby 1.8.5-p1 以降、 1.8.6 以降で導入されました。 1.8.5やそれ以前のバージョンでは定義されていません。
ということらしいので、単純に RUBY_VERSION > 1.8.5 だったら表示する。これ、RUBY_VERSION >= 1.8.6 の方が仕様的にはいいのかのう…。
いきなり大ボスから添削入ってわらた。
Ruby で特定のバージョン間の動作チェックをする時ってとてもめんどい。今回は1.8.5以下と1.8.6以上とで動作チェックをするという前提。
まず最初にとった考えた方法は @noritada さんの提案にある http://snapshot.debian.net/ にあるデイリーパッケージを使う方法。とりあえず、ruby1.8 で検索するとわらわら deb パッケージはでてくるけど、これを既存の環境を壊さずに使う方法をオレは知らないので今回は断念。
次は walf443 さんから提案された ZenTest に含まれている multiruby を使う方法。これは
~/.multiruby/version
の下に使いたいバージョンの tar ボールを放り込んでおくと
~/.multiruby/install
以下にバージョンごとに Ruby バイナリが作られるというもの。とりあえず
sudo gem install ZenTest
してから 1.8.4 と 1.8.6 の tar ボールを配置後に multiruby_setup を実行、しばらく待った後に作成されたバイナリを使ってチェック完了。これ、1.9.0 もできるっぽいので tDiary の止血作業をするときにはいいかもなー。
noritada++, walf443++
multiruby を使うときに軽くはまったんだけど、debian に用意されている rubygems でインストールしたものって
/var/lib/gems
配下に展開されるんだねえ、今まで知らなかったよ。なので、rubygems を使ってインストールしたもので bin 配下のものを使うときは PATH とかに
/var/lib/gems/1.8/bin
を追加しないとダメ。やれやれ。
取り込み、さんくす!hsbt++
なんだかんだでgemではまらないためには、.gemrcを用意して、gempathの設定をして必要なところにはPATHを通しておくのが吉だったりしますw<br><br>具体的には、複数のバージョンのrubyに同じgemを読ませたりしようとしたり、gemのバージョンをアップデートしたときに、今まで参照できていたライブラリが急に読みこめなくなったりなど。
>walf443さん<br>なるほど。gemrcで/usr/local以下に環境構築って感じですかねー?
手元のMacBookだとgempathを/Library/Ruby/Gems/に設定してますね<br><br>Linuxだと基本原則からは外れますが、gempathを/usr/local/gems/とかに設定して、/usr/local/gems/bin/にPATHを通しておくとかですね。そうすると、gemで読んだりインストールするファイルがそれ以降は/usr/local/gems/以下に全て集まるといった感じになります