yan*_*kwa 6 ruby-on-rails amazon-ec2 amazon-web-services
我在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中必须有puma和rack.
什么是最准备和最可持续的方式来让我的EC2实例加载正确版本的机架?
经过大量的反复试验,这对我有用。
从中取出彪马和架子Gemfile
。运行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
Run Code Online (Sandbox Code Playgroud)
在.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
Run Code Online (Sandbox Code Playgroud)
提交Gemfile
,Gemfile.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。
归档时间: |
|
查看次数: |
1124 次 |
最近记录: |