TextMate 2では、「#=>」マーカーメニューアクションを実行して、TM_RUBY環境変数が〜/ .rvm / rubies / ruby-1.9.3に設定されていても、ruby1.8を実行しているかのように次のコードのマーカーを更新します。 -p286 / bin / ruby:
v = RUBY_VERSION # => "1.8.7"
puts "".singleton_class
puts v
# ~> -:2: undefined method `singleton_class' for "":String (NoMethodError)
一方、TextMate 2で同じコードを実行すると、期待されるコマンド出力が返されます。
#<Class:#<String:0x007fcf418941b8>>
1.9.3
これは素晴らしい機能であり、ルビー1.8に限定されているとしたら本当に残念です。ただし、これは私のセットアップに特有の可能性があると思います(実際には、1.9コードで動作することを確認しました:http://ruby-kickstart.com/)。実行および更新'#=>'マーカーメニューアクションは、rcodetoolsからxmpfilterを呼び出すRubyバンドルで定義されています。
#!/usr/bin/env bash
[[ -f "${TM_SUPPORT_PATH}/lib/bash_init.sh" ]] && . "${TM_SUPPORT_PATH}/lib/bash_init.sh"
export RUBYLIB="$TM_BUNDLE_SUPPORT/vendor/rcodetools/lib${RUBYLIB:+:$RUBYLIB}"
export TM_RUBY=$(which "${TM_RUBY:-ruby}")
"${TM_RUBY}" -r "${TM_SUPPORT_PATH}/lib/ruby1.9/add_1.8_features.rb" -- "$TM_BUNDLE_SUPPORT/vendor/rcodetools/bin/xmpfilter"
ファイルadd_1.8_features.rbは、StringクラスとFileクラスにいくつかのレガシーメソッド(grepやremoveなど)を追加するだけです。実際、これにより、ruby 1.9をサポートできるようになります(https://github.com/textmate/ruby.tmbundle/blob/master/Support/vendor/rcodetools/CHANGESを参照)。
現時点では、そもそもルビー1.8がどこから来ているのかよくわかりません。上記の最後の行で「${TM_RUBY}」の代わりに最新のrubyに明示的なパスを渡しても、出力は変更されません。
TextMateでこの(または同等の)メニューアクションを使用できるようにしてくれる助けをいただければ幸いです。