4

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でこの(または同等の)メニューアクションを使用できるようにしてくれる助けをいただければ幸いです。

4

1 に答える 1

1

これは良い参考資料です。

http://cl.ly/23Ylhttp://cl.ly/23Yl/rvm_textmate.png

すべての新しいバージョンを実行していることを確認してください。

箱から出して、rvmにはrubyバイナリが付属しており、通常は〜/ .rvm / bin(または、システム全体のインストールでは/ usr / local / bin内)にあり、rubyを実行する前に次の手順を実行します。

Load up RVM
Look for any RVMRC files and load them
Execute as a normal ruby

このアプローチにより、余分な作業を行うことなく、プロジェクトごとにルビーを切り替えることができます。rvmがインストールされている場合、これはrvm-auto-rubyへのフルパスを取得する問題です。

$ which rvm-auto-ruby

また、テキストメイト設定の詳細セクションで、インストール例を示すこのスクリーンショットに示すように、TM_RUBY変数を追加または変更して、指定されたパスを指すようにします。

ソース: https ://rvm.io/integration/textmate/

FWIW:Josh Cheekは素晴らしいです(rubykickstart)

于 2013-01-16T14:01:45.213 に答える