【发布时间】:2014-02-14 04:39:01
【问题描述】:
我正在使用:
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(小牛队)
我设置了 rvm 和 textmate 以供使用
TM_RUBY=/Users/<myuser>/.rvm/bin/rvm-auto-ruby
问题:
当我尝试使用 textmate 中的 rake 包运行我的 rake 任务时,我收到一些关于文件未加载的错误:“无法加载此类文件 -- rubocop/rake_task”
线索:
我更改了我的 rakefile,以便它只报告默认任务的“gem env”。 然后当我运行任务时,我看到一个完全不同的 gem 环境,而不是我在终端命令行中使用 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/
而我在运行时看到这个 $ 宝石环境 在我的终端中,用于我的项目
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,或者未能正确设置环境。
我认为问题可能出在 text mate 的 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
有人对如何解决这个问题有建议吗?
谢谢你, 约翰·尚克
按照建议设置 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 环境仍然没有传递给子进程。
【问题讨论】:
-
I used rake at the terminal command line.和gem env in my terminal之间的区别是什么? -
我的意思是当我在终端中运行 rake 或 gem env 时,当我在我的项目目录中时,我可以获得正确的结果 - RVM 将为我加载正确的 gem 集和 ruby,因为我在父目录中指定了 ruby-version 和 ruby-gemset。我看到的不同之处在于,当 textmate 使用 ruby.tmbundle 运行 rake 任务时,它似乎使用了与我预期不同的 gem 环境。 (我希望获得与直接从 shell 提示符运行命令所获得的环境相同的环境。)
-
嗯,在运行命令之前,也许 tmbundle 需要 cd 到我的项目目录本身。我会在哪里做出这样的改变?
-
有谁知道 tmbundle 命令在做什么? "
/ruby" -- "rakemate.rb" 两个破折号是什么意思?