TextMate的执行和更新’#=>’标记使用ruby 1.8而不是1.9进行
在TextMate 2中,执行和更新’#=>’标记菜单操作更新以下代码中的标记,就像我正在运行
ruby 1.8一样,即使我的TM_RUBY环境变量设置为?/ .rvm / rubies / ruby??-1.9. 3-P286 /斌/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 这是一个很棒的功能,如果它仅限于ruby1.8,那将是一个真正的耻辱.但是,我怀疑这可能是我的设置所特有的(我实际上已经看到它在这里使用1.9代码:http://ruby-kickstart.com/).执行和更新’#=>’标记菜单操作在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). 在这一点上,我甚至不确定ruby1.8在哪里来自哪里.即使将显式路径传递给最新的ruby而不是上面最后一行中的“${TM_RUBY}”也不会改变输出. 我将非常感谢任何帮助我在TextMate中使用此(或等效)菜单操作. 解决方法
这是一个很好的参考.
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) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |