我正在Amazon EC2云服务器上部署
Ruby On Rails应用程序.该服务器在Amazon Linux alami-2011.02上运行.我不能说它的基础上的发行版(从我的搜索,RedHat / CentOS,但我是该领域的新手).
我已经用RVM安装了我的Ruby环境(以root用户身份安装).我设置了两个ruby:
> REE 1.8.7
> Ruby 1.9.2-p290
对于我部署的每个Rails应用程序,我创建了一个单独的RVM gemset.
由于我遇到了这个问题,我通过运行rvm implode完全刷新了Ruby环境.
这是我的环境版本:
ruby -v ---> ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-linux] rvm -v ---> 1.8.1 gem -v ---> 1.6.2 bundle -v ---> Bundler version 1.0.18
在此rvm内爆之后:
>我再次安装了2颗ruby
>我为ree-1.8.7应用程序创建了一个gemset并安装了所需的宝石 – >没问题
>我为ruby-1.9.2应用程序创建了一个gemset,并通过Bundle安装了gem – >没问题,即使对于具有原生扩展名的宝石也是如此
>我为另一个ruby-1.9.2创建了一个gemset,尝试通过Bundle安装宝石……这里又来了!
这是我在执行bundle install时知道的(以root用户身份登录):
Updating https://github.com/p7r/will_paginate.git Fetching source index for http://rubygems.org/ Installing rake (0.9.2) Installing multi_json (1.0.3) Installing activesupport (3.1.0) Installing bcrypt-ruby (3.0.0) with native extensions /usr/local/rvm/scripts/rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:552:in `rescue in block in build_extensions': ERROR: Failed to build gem native extension. (Gem::Installer::ExtensionBuildError) /usr/local/rvm/scripts/rvm/rubies/ruby-1.9.2-p290/bin/ruby extconf.rb Gem files will remain installed in /usr/local/rvm/scripts/rvm/gems/ruby-1.9.2-p290@app/gems/bcrypt-ruby-3.0.0 for inspection. Results logged to /usr/local/rvm/scripts/rvm/gems/ruby-1.9.2-p290@app/gems/bcrypt-ruby-3.0.0/ext/mri/gem_make.out [ removed the backtrace ]
但是,如果我只使用gem install bcrypt,gem安装正确,我可以使用bundle install,它将运行到具有原生扩展的下一个gem …
我在ruby-1.9.2-p180安装时遇到了同样的问题,我尝试将RubyGems降级到不同的版本,直到1.5.3,我崩溃了我的RVM ……我在网上看了很多寻求答案,这个问题似乎反复出现,但对我来说没有任何作用.
在此先感谢您的帮助!
解决方法
这可能是由于内存不足以编译本机扩展.根据我的经验,bundle install比简单地使用gem install更加占用内存.查看/ var / log / messages,看看是否存在任何此类问题.此外,使用top来识别任何重量级进程,例如同事离开rails控制台在屏幕会话中运行.