我正在使用:
TextMate:版本2.0-alpha.9511
rvm:1.25.15(稳定)
ruby:版本2.1.0p0
oh-my-zshell:5.0.2
Mac OS X:10.9.1(Mavericks)
我已将rvm和textmate设置为使用
TM_RUBY=/Users/<myuser>/.rvm/bin/rvm-auto-ruby
当我尝试使用textmate中的rake bundle运行我的rake任务时,我得到一些关于文件没有加载的错误:“无法加载这样的文件 - rubocop / rake_task”
我更改了我的rakefile,以便它只为默认任务报告“gem env”。 当我运行任务时,我看到一个完全不同的宝石环境,比我在终端命令行使用rake时看到的那样。
RakeMate v2.0.0
>>> /Users/Johno/Projects/puzzles/triangle/Rakefile
RubyGems Environment:
- RUBYGEMS VERSION: 2.0.3
- RUBY VERSION: 2.0.0 (2013-06-27 patchlevel 247) [universal.x86_64-darwin13]
- INSTALLATION DIRECTORY: /Library/Ruby/Gems/2.0.0
- RUBY EXECUTABLE: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby
- EXECUTABLE DIRECTORY: /usr/bin
- RUBYGEMS PLATFORMS:
- ruby
- universal-darwin-13
- GEM PATHS:
- /Library/Ruby/Gems/2.0.0
- /Users/Johno/.gem/ruby/2.0.0
- /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/gems/2.0.0
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- https://rubygems.org/
我在跑步时看到了这一点 $ gem env 在我的终端,为我的项目
RubyGems Environment:
- RUBYGEMS VERSION: 2.2.0.rc.1
- RUBY VERSION: 2.1.0 (2013-12-25 patchlevel 0) [x86_64-darwin12.0]
- INSTALLATION DIRECTORY: /Users/Johno/.rvm/gems/ruby-2.1.0@puzzles
- RUBY EXECUTABLE: /Users/Johno/.rvm/rubies/ruby-2.1.0/bin/ruby
- EXECUTABLE DIRECTORY: /Users/Johno/.rvm/gems/ruby-2.1.0@puzzles/bin
- SPEC CACHE DIRECTORY: /Users/Johno/.gem/specs
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-darwin-12
- GEM PATHS:
- /Users/Johno/.rvm/gems/ruby-2.1.0@puzzles
- /Users/Johno/.rvm/gems/ruby-2.1.0@global
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- https://rubygems.org/
- SHELL PATH:
- /Users/Johno/.rvm/gems/ruby-2.1.0@puzzles/bin
- /Users/Johno/.rvm/gems/ruby-2.1.0@global/bin
- /Users/Johno/.rvm/rubies/ruby-2.1.0/bin
- /Users/Johno/.rvm/bin
- /usr/local/bin
- /Users/Johno/Projects/Scripts/Ruby
- /Users/Johno/Projects/Scripts/bash
- /Users/Johno/Projects/Scripts/perl
- /Users/Johno/Projects/Scripts/Geek Tool
- /usr/bin
- /bin
我怀疑textmate正在尝试使用“错误”的rake,或者未能正确设置环境。
我认为问题可能在于来自文本伙伴的ruby bundle命令:
#!/usr/bin/env bash
export RUBYLIB="$TM_BUNDLE_SUPPORT/RakeMate${RUBYLIB:+:$RUBYLIB}"
export TM_RAKE=$(which "${TM_RAKE:-rake}")
"/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby" -- "$TM_BUNDLE_SUPPORT/RakeMate/rake_mate.rb"
它似乎使用特定的ruby(1.8)而不是rvm项目特定的ruby
有没有人建议如何解决这个问题?
谢谢你, John Schank
按照建议设置TM_RAKE,它没有帮助。
我尝试了建议的设置,并使用了which rake
/Users/Johno/.rvm/gems/ruby-2.1.0@puzzles/bin/rake
使用我的TM_RAKE时,会出现不同的错误
RakeMate v2.0.0
>>> /Users/Johno/Projects/puzzles/triangle/Rakefile
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/dependency.rb:296:in `to_specs': Could not find 'rake' (>= 0) among 5 total gem(s) (Gem::LoadError)
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/dependency.rb:307:in `to_spec'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_gem.rb:47:in `gem'
from /Users/Johno/.rvm/gems/ruby-2.1.0@puzzles/bin/rake:22:in `<main>'
这恰好与我尝试使用rubocop.tmbundle时出现的错误相同
我仍然认为gem环境没有传递给子进程。
答案 0 :(得分:1)
我解决了自己的问题。 以下是其他有此问题的人的详细信息......
首先,这个问题的答案TextMate, rvm and TM_RUBY 几乎是完美的。
我必须创建一个textmate_ruby和一个textmate_rake脚本,并在文本队列中的变量中引用它们:TM_RUBY和TM_RAKE。
其次,由于我使用zsh,我不得不更改textmate_xxx脚本中的shebang行以使用zsh。
最后,帮助我找到正确解决方案的关键是我将项目rakefile修改为:
task :default do
system "gem env"
system "ruby --version"
system "pwd"
system "printenv"
end
然后当我在textmate中运行rake任务时,它将转储我的环境,ruby版本,当前目录和gem环境的当前值。这真的有助于了解发生了什么。
答案 1 :(得分:0)
似乎TextMate仍在使用您的系统rake
而不是rvm。
除了TM_RAKE
:
TM_RUBY
TM_RAKE=$HOME/.rvm/bin/rake
这也适用于rbenv,您可以将TM_RAKE
设置为$HOME/.rbenv/shims/rake
。