rubygems bin 文件夹及路径说明
哦。您的 rvm ruby 中没有安装 rails,但您在系统 ruby 中安装了。
像rails 这样的单个gem 可以有一个bin 目录,其中包含可执行的帮助脚本。您的系统默认 rubygems 正在为这些帮助程序可执行文件从系统 /usr/bin/ 目录创建符号链接到 gem 的 bin 文件夹。
RVM 提供了类似的功能,除了不会污染系统 /usr/bin 目录,它只是将 its ~/.rvm/gems/#{rvm_gemset_string}/bin 文件夹附加到 PATH 环境变量中。
将系统 Rubygems 列表导入到您的新 rvm rubies 的 gem 目录中
默认情况下,RVM 不会将系统 ruby 安装中的 gem 导入到 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
您在/usr/bin 中安装了rails,这可能在您的bash echo $PATH 变量中的rvm ruby bin 路径之前,因此它正在查找启动的系统rails install(/usr/bin/rails,一个ruby 脚本)像这样:
#! /usr/bin/ruby18
你必须让冲突停止发生,最好的方法是确保 RVM 的 bin 目录位于 PATH 的开头。这发生在安装 rvm 时添加到 ~/.bash_profile 的 #Load rvm environment 脚本中。如果您将 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 的内容。