RVM查找系统gems的可执行文件

我已经安装了RVM以及ruby版本。 但是,如果我启动控制台并运行命令rails服务器,捆绑安装等,我收到此错误

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中不同的ruby? 提前致谢!

rubygems bin文件夹和PATH的说明

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

rails这样的各个gem可以有一个包含可执行帮助程序脚本的bin目录。 您的系统默认rubygems正在将系统/ usr / bin / dir中的符号链接放入gem的bin文件夹中以获取这些帮助程序可执行文件。

RVM提供了类似的function,除了代替污染系统/ usr / bin目录外,它只是将~/.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。

然后你需要确保你已经在你的新rvm ruby​​中安装了rails gem,如上所述。

验收测试:

你会发现当你完成rvm use 1.9.2which ruby会返回类似~/.rvm/rubies/1.9.2/bin/ruby ,以及which rails应该返回类似~/.rvm/gems/*/bin/rails

我刚刚在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 

Etvoilà,问题解决了!

你需要运行rvm use --default 1.9.2 ,而不仅仅是rvm use --default

Interesting Posts