近永と申します。

ちょうど ruby -rtracer で Tracer.on にならないのに気がついて報告しようとしていたところでした。
便乗させていただきます。

> それと, もうひとつ気がついたのが, 最新版のrubyでは,
>
> # ruby -rtracer gg.rb
>
> でトレースメッセージがでるはずなのに出なくなっていることです.

-- snip --

> ruby 1.9.2 p180 では以下のような形式で
>
> ["<internal:lib/rubygems/custom_require>:29:in `require'", "<internal:lib/rubygems/custom_require>:29:in `require'"]
>
> 最新版では以下のような形式になっています.
>
> ["/usr/local/apps/rubyware/ruby-1.9.3-20110325/lib/ruby/1.9.1/rubygems/custom_require.rb:42:in `require'", "/usr/local/apps/rubyware/ruby-1.9.3-20110325/lib/ruby/1.9.1/rubygems/custom_require.rb:42:in `require'"]

おそらく r30538 で gem_prelude が廃止されたあたりからの変化だと思います。
test_tracer.rb のテストにもこの時 --disable-gem が追加されていたため遮蔽されていたようです。

そこで、とりあえず caller から除外する条件を <internal:...> から rubygems/custom_require.rb: を
含むと変更すると直るのですが、いかにも場当たり的でいずれまた壊してしまいそうです。
-r オプション経由で実行されていることを Ruby スクリプトから知る方法は何かないものでしょうか。