错误:Gem bundler未安装,请先运行 `gem install bundler`。

32

嗨,我试图安装Ruby gem bundle时遇到了问题。我按照指示输入 gem install bundle,但即使我输入 bundle -v,它仍然无法正常工作。我还尝试输入 which bundle ,并收到以下消息:

/Users/edmundmai/.rvm/bin/bundle

它确实存在!那么为什么它不起作用呢!$PATH有些神秘,我可能不理解吗?(我是个新手)

这是我的.bash_profile:

PATH=$PATH:~/bin
export PATH
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function

这是我的 .bashrc 文件:

PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" 

这是我的 gem 环境:

RubyGems Environment:
- RUBYGEMS VERSION: 1.8.24
- RUBY VERSION: 1.9.3 (2012-04-20 patchlevel 194) [x86_64-darwin11.3.1]
- INSTALLATION DIRECTORY: /Users/edmundmai/.rvm/gems/ruby-1.9.3-p194@rails3tutorial2ndEd
- RUBY EXECUTABLE: /Users/edmundmai/.rvm/rubies/ruby-1.9.3-p194/bin/ruby
- EXECUTABLE DIRECTORY: /Users/edmundmai/.rvm/gems/ruby-1.9.3-p194@rails3tutorial2ndEd/bin
- RUBYGEMS PLATFORMS:
  - ruby
  - x86_64-darwin-11
- GEM PATHS:
   - /Users/edmundmai/.rvm/gems/ruby-1.9.3-p194@rails3tutorial2ndEd
   - /Users/edmundmai/.rvm/gems/ruby-1.9.3-p194@global
- GEM CONFIGURATION:
   - :update_sources => true
   - :verbose => true
   - :benchmark => false
   - :backtrace => false
   - :bulk_threshold => 1000
   - "install" => "--no-rdoc --no-ri"
   - "update" => "--no-rdoc --no-ri"
- REMOTE SOURCES:
   - http://rubygems.org/

打印$PATH:

/Users/edmundmai/.rvm/bin:/Users/edmundmai/.rvm/gems/ruby-1.9.3-p194@rails3tutorial2ndEd/bin:/Users/edmundmai/.rvm/gems/ruby-1.9.3-p194@global/bin:/Users/edmundmai/.rvm/rubies/ruby-1.9.3-p194/bin:/Users/edmundmai/.rvm/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/Users/edmundmai/bin:/Users/edmundmai/bin

更新 在尝试再次进行RoR教程时,我在两个终端窗口中重复了本章早些时候的一些步骤(让我们称它们为Terminal#1和Terminal #2)。 Terminal#2仍然无法正常工作(命令行不在任何目录上,只是默认目录),而Terminal#1(在我的sample_app目录中)可以工作。 我认为rvm get head & & rvm reload 可能是关键? 但这是否意味着每次打开终端都必须运行它? 查看我的终端#1命令前后的内容(我删除了部分输出,以使我的输入行更清晰):

Edmunds-MacBook-Pro:sample_app edmundmai$ bundle -v
ERROR: Gem bundler is not installed, run `gem install bundler` first.
Edmunds-MacBook-Pro:sample_app edmundmai$ gem install
ERROR:  While executing gem ... (Gem::CommandLineError)
Please specify at least one gem name (e.g. gem build GEMNAME)
Edmunds-MacBook-Pro:sample_app edmundmai$ rvm -v


rvm 1.15.8 (master) by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis     <mpapis@gmail.com> [https://rvm.io/]

Edmunds-MacBook-Pro:sample_app edmundmai$ rspec spec/
No DRb server is running. Running in local process instead ...
........

Finished in 0.36709 seconds
8 examples, 0 failures

Randomized with seed 59500

Edmunds-MacBook-Pro:sample_app edmundmai$ subl .
Edmunds-MacBook-Pro:sample_app edmundmai$ bundle install --binstubs=./bundler_stubs
Using rake (0.9.2.2) 
...
...
(**list of stuff)
Using uglifier (1.2.3) 
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.
Edmunds-MacBook-Pro:sample_app edmundmai$ bundle show bundler
/Users/edmundmai/.rvm/gems/ruby-1.9.3-p194@rails3tutorial2ndEd/gems/bundler-1.2.0

我非常不清楚$PATH是什么。如果你们需要更多信息,请随时告诉我,我会提供。


你已经尝试过 gem install bundle,但你尝试过 gem install bundler 吗? - cjc343
@cjc343:bundle gem 有 bundler 作为依赖项,因此具有相同的效果。 - jmdeldin
@Edmund:你是否已经启动了一个新的终端或者在编辑后重新加载了你的bash_profile文件?你能否在你的shell中粘贴echo $PATH的输出结果?你是如何安装RVM的?虽然我已经有一段时间没有使用它了,但通常来说,它是一个复制/粘贴并运行设置。 - jmdeldin
@cjc343 我都试过了,但是当我输入 bundle -v 时仍然出现错误。 - bigpotato
@jmdeldin 几个小时前,我遇到了两个终端的问题,其中一个工作了,而另一个没有。所以我关闭了它们两个,打开了一个新窗口,但它也不起作用,第二个也是如此。好吧,我编辑了它,包括我的 echo $PATH。我不记得几个月前我是如何安装 RVM 的,抱歉。 - bigpotato
@jmdeldin 好的,现在又出现了同样的问题。我打开了两个终端,其中一个突然可以工作(bundle存在),而另一个则不行。我正在重新阅读我在终端中输入的内容。我会将它粘贴出来,这样你们就可以看到了。RVM可能是罪魁祸首吗?我怀疑 Edmunds-MacBook-Pro:sample_app edmundmai$ rvm get head && rvm reload 是导致问题的原因。但我仍然担心如果我关闭窗口,它会再次停止工作。 - bigpotato
5个回答

86
我认为问题出在这里:你已经将bundler安装到了一个特定的gemset中,这就是为什么只有当你在应用程序目录下时(我假设那里有一个.rvmrc文件)才可用。
你有几个选择:
  1. bundler安装到全局gemset中。 rvm gemset use global && gem install bundler
  2. 如果你已经安装了Homebrew,只需执行brew install ruby即可避免使用rvm。(还有rbenv和ry作为rvm的替代品,但我只在所有应用程序中使用1.9.3,所以Homebrew很好。)
参考一下,$PATH是一个shell环境变量,包含一个保存可执行文件(例如echolsvim等)的目录列表。它是shell的固有属性。

1
感谢提供 $PATH 参考。我刚刚在打开新终端时尝试了 #1,当我输入 bundle -v 时它起作用了(虽然没有尝试 homebrew,因为在 #1 之后它就可以工作了)。你是最棒的,感谢你的所有帮助! - bigpotato
1
@Edmund:很高兴它起作用了!现在难的部分已经过去了,你可以回到学习Rails了 :)。 - jmdeldin
将bundler设置为全局gemset完美地解决了问题!非常感谢! - esnowrackley

54
有时候你无法正确获取 RVM,因为你没有在登录 shell 中 (使用 screen?)。输入
    source ~/.rvm/scripts/rvm
并使用任何 bundle 命令。

这对我有帮助,但每次打开新的终端窗口都需要运行此命令。我该如何避免这种情况? - SET001
4
把这行代码放到你的 ~/.bashrc 文件中(如果它还没有被添加进去)。 - hammady

4
将以下行添加到~/.bashrc文件中。
[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function

然后重新载入文件:

$ source ~/.bashrc

1

我曾经也遇到过同样的问题,

在服务器上没有将rvm设置为默认选项。所以

rvm use 1.9.3 --default

gem install bundler

我已经解决了我的问题。
(只有在使用rvm时才会出现问题)

0
如果你在使用 rvm,可以创建一个单独的 gemset,它是一组自包含的宝石。
rvm use 1.9.3@myApplicationNameHere --create --default
  • myApplicationNameHere = 将此更改为您的应用程序名称
  • create = 创建一个 gemset
  • default = 表示将此版本的 Ruby 和 gemset 用作默认值

这是 RVM 网站的链接和相关部分 https://rvm.io/gemsets/basics/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接