我正在Amazon EC2云服务器上部署Ruby On Rails应用程序。该服务器在Amazon Linux alami-2011.02上运行。我不能说这是基于它的发行版(从我的搜索,RedHat / CentOS,但我是那个领域的新手)。
我已经使用RVM安装了我的Ruby环境(以root用户身份安装)。我已经设置了两个红宝石:
对于我部署的每个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 implode
:
执行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
,宝石安装正确,我可以使用bundle install
,这将运行到具有原生扩展的下一个宝石......
我遇到了与ruby-1.9.2-p180安装相同的问题,我尝试将RubyGems降级到不同的版本,直到1.5.3,我崩溃了我的RVM ...我在Web上看了很多答案,这个问题似乎反复出现,但对我来说没什么用。
提前感谢您的帮助!
答案 0 :(得分:8)
这可能是由于内存不足以编译本机扩展。根据我的经验,bundle install
比仅使用gem install
更省内存。看一下/var/log/messages
,看看是否存在任何此类问题。此外,使用top
来识别任何重量级进程,例如同事在屏幕会话中运行rails console
。 ;)
答案 1 :(得分:1)
如果你在linux上运行,你需要在安装bcrypt-ruby gem之前安装库/包。
sudo apt-get install ruby1.8-dev
//对于ruby 1.8.7
或
sudo apt-get install ruby-dev
或
sudo apt-get install ruby1.9-dev
//对于ruby 1.9.2
现在您可以使用以下命令安装bcrypt-ruby gem
sudo gem install bcrypt-ruby