Merbが最近はやっているようなので、インストールして使ってみようと思いました。Merb には Rubygems 1.3.0 以上が必要なのでアップデートしたところ、仕事で開発している Rails 1.2.6 で作られたアプリケーションに gem の deprecated メッセージが出てくるようになってしまいました。
たとえば script/console を実行すると以下のようなメッセージが出てきます。
$ script/console Gem::SourceIndex#search support for String patterns is deprecated ./script/../config/boot.rb:20 is outdated Loading development environment. Gem::SourceIndex#search support for String patterns is deprecated ./script/../config/../config/boot.rb:20 is outdated >>
このアプリは Rails を使っているのでとうぜんWeb用のアプリなのですが、管理用に独自のコマンドラインシェルを用意しています。こちらのコマンドの実行時にも同様のメッセージが出てきてしまっています。「Rails 2.2 系に上げるいい時期かな」とも思わないでもないのですが、製品として提供している物なので、今期末にいくつか控えている納品を終えるまではバージョンを上げるわけにもいきません。
仕方がないのでクイックハック
script/console の最初で stderr を /dev/null に捨てるようにしました。
#!/usr/bin/env ruby $stderr.reopen('/dev/null') require File.dirname(__FILE__) + '/../config/boot' require 'commands/console'
deprecated なメッセージを簡単に抑制する設定とかもあるんだろうか。。。