ruby-on-rails – RVM查找系统宝石的可执行文件

我已经安装了RVM以及 ruby版本.但是,如果我启动控制台并运行命令rails服务器,捆绑安装等,我收到此错误
bash: /usr/bin/rails: /usr/bin/ruby1.8: bad interpreter: No such file or directory

但如果我先运行rvm使用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提供了类似的功能,除了代替污染系统/usr/bin目录外,它只是将〜/ .rvm / gems /#{rvm_gemset_string} / bin文件夹附加到PATH环境变量.

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

默认情况下,RVM不会将您的系统ruby安装中的gem导入到rvm ruby​​安装中.它使整个ruby系统完全干净,包括rubygems(宝石’rubygems’)和rubygems’宝石列表.当你安装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中/ ruby​​18

你必须让冲突停止发生,最好的方法是确保RVM的bin目录位于PATH的开头.这发生在安装rvm时添加到〜/ .bash_profile的#Load rvm环境脚本中.如果您将rvm安装为系统库而不仅仅是为您的用户安装,则会有所不同.

如果你遇到这种情况,请问@Telemachus.

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

验收测试:

你会发现当你完成rvm使用1.9.2时,那个ruby会返回类似〜/ .rvm / rubies / 1.9.2 / bin / ruby​​的内容,以及哪些rails应该返回类似〜/ .rvm /宝石/ * /斌/轨道.

相关文章

以下代码导致我的问题: class Foo def initialize(n=0) @n = n end attr_accessor :n d...
这是我的spec文件,当为上下文添加测试“而不是可单独更新用户余额”时,我得到以下错误. require 's...
我有一个拦截器:DevelopmentMailInterceptor和一个启动拦截器的inititializer setup_mail.rb. 但我想将...
例如,如果我有YAML文件 en: questions: new: 'New Question' other: recent: ...
我听说在RSpec中避免它,let,let !,指定,之前和主题是最佳做法. 关于让,让!之前,如果不使用这些,我该如...
我在Rails中使用MongoDB和mongo_mapper gem,项目足够大.有什么办法可以将数据从Mongoid迁移到 Postgres...