[英]Installing gems fails in deployment - AWS Elastic Beanstalk
The native gems are not installing while I try to deploy the app in AWS Elastic Beanstalk(EB) environment. 当我尝试在AWS Elastic Beanstalk(EB)环境中部署应用程序时,未安装本机gem。
eb-activity.log EB-activity.log
Don't run Bundler as root. Bundler can ask for sudo if it is needed, and
installing your bundle as root will break this application for all non-root
users on this machine.
Warning: the running version of Bundler is older than the version that created the lockfile. We suggest you upgrade to the latest version of Bundler by running `gem install bundler`.
fatal: Not a git repository (or any of the parent directories): .git
fatal: Not a git repository (or any of the parent directories): .git
Fetching gem metadata from https://rubygems.org/
Fetching version metadata from https://rubygems.org/
Fetching dependency metadata from https://rubygems.org/
Resolving dependencies...
Installing rake 11.2.2
Installing i18n 0.7.0
Using json 1.8.3
Installing minitest 5.9.0
Installing thread_safe 0.3.5
Installing builder 3.2.2
Installing erubis 2.7.0
Installing mini_portile2 2.1.0
Installing pkg-config 1.1.7
Installing rack 1.6.4
Installing mime-types-data 3.2016.0521
Installing arel 6.0.3
Installing jmespath 1.3.1
Installing bcrypt 3.1.11 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
current directory: /var/app/ondeck/gems/bundle/gems/bcrypt-3.1.11/ext/mri
/opt/rubies/ruby-2.3.1/bin/ruby -r ./siteconf20160916-26394-19gpiil.rb extconf.rb
Cannot allocate memory - /opt/rubies/ruby-2.3.1/bin/ruby -r ./siteconf20160916-26394-19gpiil.rb extconf.rb 2>&1
Gem files will remain installed in /var/app/ondeck/gems/bundle/gems/bcrypt-3.1.11 for inspection.
Results logged to /var/app/ondeck/gems/bundle/extensions/x86_64-linux/2.3.0-static/bcrypt-3.1.11/gem_make.out
Using bundler 1.12.1
Installing rubyzip 1.2.0
Installing coderay 1.1.1
Installing coffee-script-source 1.10.0
Installing execjs 2.7.0
Installing thor 0.18.1
Installing concurrent-ruby 1.0.2
Installing orm_adapter 0.5.0
Installing unf_ext 0.0.7.2 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
current directory: /var/app/ondeck/gems/bundle/gems/unf_ext-0.0.7.2/ext/unf_ext
/opt/rubies/ruby-2.3.1/bin/ruby -r ./siteconf20160916-26394-1kl25wy.rb extconf.rb
Cannot allocate memory - /opt/rubies/ruby-2.3.1/bin/ruby -r ./siteconf20160916-26394-1kl25wy.rb extconf.rb 2>&1
Gem files will remain installed in /var/app/ondeck/gems/bundle/gems/unf_ext-0.0.7.2 for inspection.
Results logged to /var/app/ondeck/gems/bundle/extensions/x86_64-linux/2.3.0-static/unf_ext-0.0.7.2/gem_make.out
Installing hashie 3.4.4
Installing htmlentities 4.3.4
Installing multi_xml 0.5.5
Installing multi_json 1.12.1
Installing jwt 1.5.4
Installing method_source 0.8.2
Installing mimemagic 0.3.0
Installing mqtt 0.4.0
Installing netrc 0.11.0
Installing pg 0.18.4 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
current directory: /var/app/ondeck/gems/bundle/gems/pg-0.18.4/ext
/opt/rubies/ruby-2.3.1/bin/ruby -r ./siteconf20160916-26394-4s0qe7.rb extconf.rb
Cannot allocate memory - /opt/rubies/ruby-2.3.1/bin/ruby -r ./siteconf20160916-26394-4s0qe7.rb extconf.rb 2>&1
Gem files will remain installed in /var/app/ondeck/gems/bundle/gems/pg-0.18.4 for inspection.
Results logged to /var/app/ondeck/gems/bundle/extensions/x86_64-linux/2.3.0-static/pg-0.18.4/gem_make.out
Installing slop 3.6.0
Installing rack-cors 0.4.0
Installing sass 3.4.22
Installing tilt 2.0.5
Installing turbolinks-source 5.0.0
Installing will_paginate 3.1.0
Installing apipie-rails 0.3.6
Installing rdoc 4.2.2
Installing tzinfo 1.2.2
Installing nokogiri 1.6.8 with native extensions
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
current directory: /var/app/ondeck/gems/bundle/gems/nokogiri-1.6.8/ext/nokogiri
/opt/rubies/ruby-2.3.1/bin/ruby -r ./siteconf20160916-26394-13djrm9.rb extconf.rb
Cannot allocate memory - /opt/rubies/ruby-2.3.1/bin/ruby -r ./siteconf20160916-26394-13djrm9.rb extconf.rb 2>&1
Gem files will remain installed in /var/app/ondeck/gems/bundle/gems/nokogiri-1.6.8 for inspection.
Results logged to /var/app/ondeck/gems/bundle/extensions/x86_64-linux/2.3.0-static/nokogiri-1.6.8/gem_make.out
Installing rack-test 0.6.3
Installing warden 1.2.6
Installing mime-types 3.1
Installing aws-sdk-core 2.6.1
An error occurred while installing bcrypt (3.1.11), and Bundler cannot continue.
Make sure that `gem install bcrypt -v '3.1.11'` succeeds before bundling. (Executor::NonZeroExitStatus)
I tried the following: 我尝试了以下方法:
gem update bundler
command in EB /var/app/current
directory and the is no improvements. 在EB /var/app/current
目录中使用gem update bundler
命令gem update bundler
并没有任何改进。 gemfile.lock
and bundle install
in local and deployed updated gemfile.lock
. 在本地和已部署的更新gemfile.lock
删除gemfile.lock
和bundle install
。 The same above error occurs everytime. 每次都会出现相同的上述错误。
I am using Rails 4.2.4
with ruby 2.3
version. 我使用Rails 4.2.4
与ruby 2.3
版本。
Please help me. 请帮我。 Thanks. 谢谢。
I finally solved the issue by caching the gem. 我终于通过缓存gem解决了这个问题。
I ran bundle package
in local and it creates the gem caches in the vendor/cache
directory. 我在本地运行bundle package
,它在vendor/cache
目录中创建gem缓存。
Now, while deploying in AWS with those cached gems it tries to use the cached gem instead of installing it. 现在,在AWS中使用这些缓存的gems进行部署时,它会尝试使用缓存的gem而不是安装它。 I don't know whether it is a good practice but, it solved my issue. 我不知道这是一个好习惯,但它解决了我的问题。
I got this solution from the AWS blog: Locally Packaging Gem Dependencies for Ruby Applications in Elastic Beanstalk 我从AWS博客获得了这个解决方案: 在Elastic Beanstalk中为Ruby应用程序本地打包Gem Dependencies
Edit #1: Adding @sybind's comment in answer 编辑#1:在答案中添加@ sybind的评论
bundle package --all
will include all :git references
bundle package --all
将包括all :git references
If there is any better solution please let me know. 如果有更好的解决方案,请告诉我。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.