我在Elastic Beanstalk上运行标准的Rails 4.2.0应用程序。容器是运行Ruby 2.1.4,Puma 2.9.1和Nginx 1.6.2的64位Amazon Linux 2014.09 v1.0.9。

将代码推送到此环境时,在puma.log中出现以下错误:“您已经激活了机架1.5.2,但是您的Gemfile需要机架1.6.0。在命令中添加bundle exec可能会解决此问题。”

我不记得几个月前进行测试时看到这些错误,而且似乎是间歇性的。有时,我推送后一切正常,而其他时候我推送却失败了。

https://forums.aws.amazon.com/thread.jspa?messageID=599675建议/opt/elasticbeanstalk/support/conf/puma.conf中可能存在错误,但是我已经对该文件进行了修补,并且仍然发生错误。我还确保我的Gemfile中必须装有彪马和架子。

使我的EC2实例加载正确版本的机架的最适合生产且可持续的方式是什么?

最佳答案

经过大量的反复试验,这对我有用。

Gemfile删除puma和机架。运行bundle install。这是我的Gemfile的样子。

# Gemfile
source 'https://rubygems.org'

gem 'ahoy_matey'
gem 'aws-sdk'
gem 'bcrypt'
gem 'cancancan'
gem 'coffee-rails'
gem 'font-awesome-rails'
gem 'foundation-rails'
gem 'gibbon'
gem 'jbuilder'
gem 'jquery-infinite-pages'
gem 'jquery-rails'
gem 'kaminari'
gem 'mandrill_mailer'
gem 'modernizr-rails'
gem 'nokogiri'
gem 'omniauth-facebook'
gem 'omniauth-twitter'
gem 'owlcarousel-rails'
gem 'paper_trail'
gem 'pg'
gem 'rails'
gem 'rails_admin'
gem 'sanitize'
gem 'sass-rails'
gem 'sentry-raven'
gem 'stripe'
gem 'twitter-typeahead-rails'
gem 'uglifier'
gem 'whenever'

group :test, :development do
  gem 'dotenv-rails'
end

group :development do
  gem 'spring'
end

group :doc do
  gem 'sdoc'
end

在仓库的.ebextensions/文件夹中,创建一个脚本以将机架1.6.0安装为本地gem。
# .ebextensions/00-install-local-gems.config:
commands:

  # add rack 1.6.0 to $GEM_ROOT so puma can activate it instead of rack 1.5.2
  # use actual path not $GEM_ROOT because env vars are not available here
  # make sure puma and rack are not in app's Gemfile or there will be blood

  00_install_rack_160:
    command: gem install -i /opt/rubies/ruby-2.1.4/lib/ruby/gems/2.1.0 rack -v 1.6.0

GemfileGemfile.lock.ebextensions/00-install-local-gems.config提交到您的仓库中。将代码推送到Elastic Beanstalk。

现在,您应该终止所有现有实例。 Elastic Beanstalk将使用此更新的配置重新创建它们。

我可以确认上述作品适用于均运行Ruby 2.1(Puma)的64位Amazon Linux 2014.09 v1.2.0和v1.0.9。

关于ruby-on-rails - Elastic Beanstalk间歇性地激活机架1.5.2,但是我的Gemfile需要机架1.6.0,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29334394/

10-10 02:37