Question:
The native gems are not installing while I try to deploy the app in AWS Elastic Beanstalk(EB) environment.
eb-activity.log
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
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:
- updating bundler using
gem update bundler
command in EB/var/app/current
directory and the is no improvements. - Removing
gemfile.lock
andbundle install
in local and deployed updatedgemfile.lock
.
The same above error occurs everytime.
I am using Rails 4.2.4
with ruby 2.3
version.
Please help me. Thanks.
Answer:
I finally solved the issue by caching the gem.
I ran bundle package
in local and it creates the gem caches in the vendor/cache
directory.
Now, while deploying in AWS with those cached gems it tries to use the cached gem instead of installing it. 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
Edit #1: Adding @sybind’s comment in answer
bundle package --all
will include all :git references
If there is any better solution please let me know.