在TextMate 2中,执行和更新'#=>'标记菜单操作更新以下代码中的标记,就好像我正在运行ruby 1.8,即使我的TM_RUBY环境变量设置为〜/ .rvm / rubies / ruby -1.9.3-P286 /斌/红宝石:
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/)。执行和更新'#=&gt;'标记菜单操作在Ruby包中定义,它从rcodetools调用xmpfilter:
#!/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)。
此时我甚至不确定ruby 1.8在哪里首先出现。即使在上一行中将显式路径传递给最新的ruby而不是“$ {TM_RUBY}”也不会改变输出。
如果有任何帮助我可以在TextMate中使用此(或等效的)菜单操作,我将非常感激。
答案 0 :(得分: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
这种方法可以在没有任何额外工作的情况下按项目切换ruby。安装了rvm后,这需要通过以下方式获取rvm-auto-ruby的完整路径:
$ rvm-auto-ruby
在textmate首选项的高级部分中,添加或更改TM_RUBY变量以指向给定路径,如此屏幕截图中显示的示例安装。
来源:https://rvm.io/integration/textmate/
FWIW:Josh Cheek很棒(rubykickstart)