rubygems bin文件夹和PATH的解释
哦。您的 rvm ruby 中没有安装 rails,但您在系统 ruby 中安装了。
单个 gem,例如rails
可以有一个bin
包含可执行帮助脚本的目录。您的系统默认 rubygems 正在bin
为这些帮助程序可执行文件从系统 /usr/bin/ 目录创建符号链接到 gem 的文件夹中。
RVM 提供了类似的功能,除了不会污染系统 /usr/bin 目录,它只是将其 ~/.rvm/gems/#{rvm_gemset_string}/bin
文件夹附加到 PATH 环境变量中。
将系统 Rubygems 列表导入新的 rvm rubies 的 gem 目录
默认情况下,RVM 不会将系统 ruby 安装中的 gems 导入到 rvm ruby 安装中。它对整个 ruby 系统进行了完整的分叉,包括 rubygems(gem 'rubygems')和 rubygems' gem 列表。就像你rvm install 1.9.2
已经对所有与 ruby 一起使用的东西进行了全新的安装。
如果您想将以前使用的所有系统 ruby gem 放入首选的 rvm ruby,请尝试以下操作:
rvm use system
rvm gemset export system.gems
rvm use 1.9.2
rvm gemset import system.gems
#You'll now have all your system gems reinstalled to your new ruby version
来自@Telemachus 的原始答案/编辑
尝试将源 rvm 的行移动到您的~/.bash_profile
或~/.bashrc
(无论您使用哪个)的末尾:
'[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function'
.
bash: /usr/bin/rails: /usr/bin/ruby1.8: bad interpreter: No such file ...
| | ^--------------------------------\
^ Bash, not rvm; ^/usr/bin/rails, not ~/.rvm/gems/*/bin/rails; |
Some ruby leftover from a previous install in the os
你已经安装了 rails /usr/bin
,它可能在你的 bashecho $PATH
变量中的 rvm ruby bin 路径之前,所以它会找到系统 rails install (/usr/bin/rails,一个 ruby 脚本),它的开头是这样的:
#! /usr/bin/ruby18
你必须让冲突停止发生,最好的方法是确保 RVM 的 bin 目录位于 PATH 的开头。这发生在您在安装 rvm 时#Load rvm environment
添加到您的脚本中。~/.bash_profile
如果您将 rvm 安装为系统库,而不仅仅是为您的用户安装,则情况会有所不同。
如果您遇到这种情况,请询问@Telemachus。
然后,您需要确保已将 rails gem 安装在新的 rvm ruby 中,如上所述。
验收测试:
你会发现当你完成后rvm use 1.9.2
,然后which ruby
会返回类似的东西~/.rvm/rubies/1.9.2/bin/ruby
,并且which rails
应该返回类似的东西~/.rvm/gems/*/bin/rails
。