即使安装了gem,RVM Bundle也会安装Missing Gem Error

cst*_*ngl 55 rubygems bundler rvm

我收到以下错误,即使我目前确实安装了Bundler gem(当我运行$ gem list时出现).

ERROR: Gem bundler is not installed, run `gem install bundler` first.
Run Code Online (Sandbox Code Playgroud)

我正在使用RVM,我的$ PATH如下:

/Users/cjstingl/.rvm/gems/ruby-1.9.2-p290@rails3tutorial2ndEd/bin:
/Users/cjstingl/.rvm/gems/ruby-1.9.2-p290@global/bin:
/Users/cjstingl/.rvm/rubies/ruby-1.9.2-p290/bin:
/Users/cjstingl/.rvm/bin:
/Users/cjstingl/.bin:
/usr/local/sbin:
/usr/local/Cellar/php/5.3.6/bin:
/usr/local/share/python:
/usr/bin:
/bin:
/usr/sbin:
/sbin:
/usr/local/bin:
/usr/X11/bin
Run Code Online (Sandbox Code Playgroud)

这也是我的宝石环境

RubyGems Environment:
  - RUBYGEMS VERSION: 1.8.15
  - RUBY VERSION: 1.9.2 (2011-07-09 patchlevel 290) [x86_64-darwin11.2.0]
  - INSTALLATION DIRECTORY: /Users/cjstingl/.rvm/gems/ruby-1.9.2-p290@rails3tutorial2ndEd
  - RUBY EXECUTABLE: /Users/cjstingl/.rvm/rubies/ruby-1.9.2-p290/bin/ruby
  - EXECUTABLE DIRECTORY: /Users/cjstingl/.rvm/gems/ruby-1.9.2-p290@rails3tutorial2ndEd/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-darwin-11
  - GEM PATHS:
     - /Users/cjstingl/.rvm/gems/ruby-1.9.2-p290@rails3tutorial2ndEd
     - /Users/cjstingl/.rvm/gems/ruby-1.9.2-p290@global
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => false
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
     - "gem" => "-n/usr/local/bin --no-ri --no-rdoc --no-user-install"
  - REMOTE SOURCES:
     - http://rubygems.org/
Run Code Online (Sandbox Code Playgroud)

另外:使用bundle -v命令会返回相同的错误

我试过破解RVM并重新安装,但这似乎不起作用.我很难过,任何帮助都会受到赞赏.

Rom*_*man 94

将以下内容(取自.bash_profile)添加到.bashrc中为我修复了它:

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" 
Run Code Online (Sandbox Code Playgroud)

  • 不要忘记从您的主目录运行`source .bashrc`. (2认同)

Ric*_*her 19

我在干净安装RVM 1.10.3时遇到了同样的问题.重新安装后,我注意到已安装了bundler,并且<gemset>/bin目录正被添加到我的$ PATH中,但这些bin目录实际上并不存在.我认为这只是一个RVM错误.

作为一个快速修复,我手动将bundle二进制文件复制到确实存在的RVM bin目录中.这似乎解决了我的问题:

$ cd ~/.rvm
$ cp gems/ruby-1.9.3-p0/gems/bundler-1.0.21/bin/bundle rubies/ruby-1.9.3-p0/bin/
Run Code Online (Sandbox Code Playgroud)

这些路径中的Ruby和Bundler版本可能会有所不同.


上面的解决方案有效,但它让我烦恼,所以我把它放到rvm家伙; 事实证明我的〜/ .gemrc文件用这一行覆盖了gem位置:

- "gem" => "-n/usr/local/bin"
Run Code Online (Sandbox Code Playgroud)

删除它固定它为我.请参阅此处获取完整主题:https://github.com/wayneeseguin/rvm/issues/1043#issuecomment-7336267

  • 为我工作.`ln -s~/.rvm/gems/ruby-1.9.2-p290@fonista/bin/bundle~/.rvm/bin /`做了伎俩.谢谢! (3认同)

Pat*_*ith 10

我遇到了类似的问题,经过大量的试验和错误后,答案(至少对我而言)非常简单.

这绝对是一个路径问题,@ gamecreature提到路径顺序对我来说是至关重要的线索.

我不确定它是怎么发生的,但我$HOME/.rvm/bin在PATH导出中作为第一项.

这是不必要的,因为通过获取rvm文件将此目录以正确的顺序添加到路径中.

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
Run Code Online (Sandbox Code Playgroud)

所以我的修复只是$HOME/.rvm/bin从我的PATH导出中删除.

如果您有多个init文件(.bashrc,.bash_profile,.profile),请确保遵循rvm疑难解答页面上的建议:

确保rvm文件的源代码在您的配置文件(.bash_profile/.bashrc/.zshrc)中最后出现,基本上是在对PATH /函数或别名进行任何自定义之后.

但我还建议检查PATH定义的其余部分,以确保没有声明任何重复的优先级.


Las*_*ert 7

我有类似的问题.事实证明我没有项目特定的.rvmrc文件.我刚用它创建了它

rvm --rvmrc --create 1.9.3@my_project_name
Run Code Online (Sandbox Code Playgroud)

在我的项目目录

这解决了这个问题


小智 5

如果你到达底部并且仍然撞在墙上......

我的问题是rvm install 1.8.7在安装后期失败但似乎已经成功(我有ruby 1.8.7并且可以创建gemsets)

但似乎$GEM_HOME是在安装脚本中设置较晚,因为没有设置,rvm没有找到宝石的正确位置.

我跑了rvm reinstall 1.8.7,仔细看了看错误.

让我感到惊讶的是这个帖子:https: //groups.google.com/d/topic/rubyversionmanager/aUBDxbBzZpE/discussion

您可以通过运行来检查这是否是您的问题

echo $GEM_HOME或者gem env检查你的rvm安装日志(见上面的链接)

你在Gem Path中看到了ruby版本和gemset名称吗?如果没有,可能是rvm安装失败了.


gam*_*ure 4

我不知道这是否是你问题的原因。但我也有类似的问题。原因是我的RVM环境不正确。

我有 2 个用户,其中一个正在工作,另一个则没有。工作用户使用了以下捆绑脚本。(输出来自:哪个包)

/home/rvm/.rvm/gems/ruby-1.9.3-p0/bin/bundle

使用了错误的rvm安装用户:

/home/user/.rvm/bin/bundle

其原因是 $PATH 顺序错误。.rvm/gems/ruby-.../bin 路径应放在 ./rvm/bin 路径之前。

在我的情况下,原因是我将 $PATH 变量设置为另一个用户的 rvm。我通过向用户的 RVM 添加符号链接并更改路径来解决该问题:

/home/rvm/.rvm/bin

/home/user/.rvm/bin

当上面的代码不适合您时,您可以在加载rvm后手动调整路径。