8

我已经安装了 RVM 和 ruby​​ 版本。但是,如果我启动控制台并运行命令 rails server、bundle install 等,我会收到此错误

bash: /usr/bin/rails: /usr/bin/ruby1.8: bad interpreter: No such file or directory

但如果我先跑rvm use 1.9.2,那么一切都好。我尝试使用 `rvm use --default 1.9.2' 但没有任何改变。这是否意味着它使用的红宝石与 RVM 中的红宝石不同?提前致谢!

4

3 回答 3

17

rubygems bin文件夹和PATH的解释

哦。您的 rvm ruby​​ 中没有安装 rails,但您在系统 ruby​​ 中安装了。

单个 gem,例如rails可以有一个bin包含可执行帮助脚本的目录。您的系统默认 ruby​​gems 正在bin为这些帮助程序可执行文件从系统 /usr/bin/ 目录创建符号链接到 gem 的文件夹中。

RVM 提供了类似的功能,除了不会污染系统 /usr/bin 目录,它只是将 ~/.rvm/gems/#{rvm_gemset_string}/bin文件夹附加到 PATH 环境变量中。


将系统 Rubygems 列表导入新的 rvm rubies 的 gem 目录

默认情况下,RVM 不会将系统 ruby​​ 安装中的 gems 导入到 rvm ruby​​ 安装中。它对整个 ruby​​ 系统进行了完整的分叉,包括 ruby​​gems(gem 'rubygems')和 ruby​​gems' 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

于 2011-06-17T01:48:52.787 回答
4

我刚刚在Windows Vista上解决了同样的问题。

我的控制台给了我这个消息:

$ rails -v
sh: /c/RailsInstaller/Ruby1.9.2/bin/rails: C:/Projects/railsinstaller/Stage/Ruby1.9.2  /bin/ruby.exe: bad interpreter: No such file or directory

我刚刚编辑了这个文件的第一行:

C:\RailsInstaller\Ruby1.9.2\bin\rails

并使其指向我系统上 ruby​​.exe 的正确位置,如下所示:

#!C:\RailsInstaller\Ruby1.9.2\bin\ruby.exe

等等,问题解决了!

于 2011-09-08T18:49:59.450 回答
0

你需要跑步rvm use --default 1.9.2,而不仅仅是rvm use --default

于 2011-06-17T01:16:50.837 回答