【问题标题】:Ruby gems fail to install on Elastic BeanstalkRuby gem 无法在 Elastic Beanstalk 上安装
【发布时间】:2016-11-08 21:17:56
【问题描述】:

我正在尝试将 Rails 应用程序部署到 AWS 弹性 beantalk。每次我尝试部署时,都会收到此错误消息。我找到了一个答案,说增加实例大小以处理内存异常,但它对我不起作用。我的项目最初部署到不同的 AWS 账户没有问题,但现在我试图切换账户它不起作用。有谁知道这个问题的解决方案吗?

 Installing json 1.8.3 with native extensions

  Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

      /opt/rubies/ruby-2.2.5/bin/ruby -r ./siteconf20160706-28984-2z7sxy.rb extconf.rb
  Cannot allocate memory - /opt/rubies/ruby-2.2.5/bin/ruby -r ./siteconf20160706-28984-2z7sxy.rb extco
nf.rb 2>&1

  Gem files will remain installed in /opt/rubies/ruby-2.2.5/lib/ruby/gems/2.2.0/gems/json-1.8.3 for in
spection.
  Results logged to /opt/rubies/ruby-2.2.5/lib/ruby/gems/2.2.0/extensions/x86_64-linux/2.2.0-static/js
on-1.8.3/gem_make.out
  Using minitest 5.9.0
  Using thread_safe 0.3.5
  Using builder 3.2.2
  Using erubis 2.7.0
  Using mini_portile2 2.1.0
  Using pkg-config 1.1.7
  Using rack 1.6.4
  Using mime-types-data 3.2016.0521
  Using arel 6.0.3
  Using execjs 2.7.0
  Installing bcrypt 3.1.10 with native extensions

  Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

      /opt/rubies/ruby-2.2.5/bin/ruby -r ./siteconf20160706-28984-omunxa.rb extconf.rb
  Cannot allocate memory - /opt/rubies/ruby-2.2.5/bin/ruby -r ./siteconf20160706-28984-omunxa.rb extconf.rb 2>&1

  Gem files will remain installed in /opt/rubies/ruby-2.2.5/lib/ruby/gems/2.2.0/gems/bcrypt-3.1.10 for inspection.
  Results logged to /opt/rubies/ruby-2.2.5/lib/ruby/gems/2.2.0/extensions/x86_64-linux/2.2.0-static/bcrypt-3.1.10/gem_make.out
  Using sass 3.4.22
  Using coffee-script-source 1.10.0
  Using thor 0.19.1
  Using concurrent-ruby 1.0.2
  Using multi_json 1.12.1
  Installing puma 3.4.0 with native extensions

  Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

      /opt/rubies/ruby-2.2.5/bin/ruby -r ./siteconf20160706-28984-tifyar.rb extconf.rb
  Cannot allocate memory - /opt/rubies/ruby-2.2.5/bin/ruby -r ./siteconf20160706-28984-tifyar.rb extconf.rb 2>&1

  Gem files will remain installed in /opt/rubies/ruby-2.2.5/lib/ruby/gems/2.2.0/gems/puma-3.4.0 for inspection.
  Results logged to /opt/rubies/ruby-2.2.5/lib/ruby/gems/2.2.0/extensions/x86_64-linux/2.2.0-static/puma-3.4.0/gem_make.out
  Using bundler 1.12.1
  Using tilt 2.0.5
  Installing sqlite3 1.3.11 with native extensions

  Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

      /opt/rubies/ruby-2.2.5/bin/ruby -r ./siteconf20160706-28984-2xtic2.rb extconf.rb
  Cannot allocate memory - /opt/rubies/ruby-2.2.5/bin/ruby -r ./siteconf20160706-28984-2xtic2.rb extconf.rb 2>&1

  Gem files will remain installed in /opt/rubies/ruby-2.2.5/lib/ruby/gems/2.2.0/gems/sqlite3-1.3.11 for inspection.
  Results logged to /opt/rubies/ruby-2.2.5/lib/ruby/gems/2.2.0/extensions/x86_64-linux/2.2.0-static/sqlite3-1.3.11/gem_make.out
  An error occurred while installing json (1.8.3), and Bundler cannot continue.
  Make sure that `gem install json -v '1.8.3'` succeeds before bundling. (Executor::NonZeroExitStatus)

更新

我能够将此项目成功部署到它所在的原始 aws 帐户,但仍无法将其部署到我想要的帐户上

【问题讨论】:

  • 先安装这个“sudo apt-get install libgmp3-dev”然后试试?

标签: ruby-on-rails amazon-web-services amazon-elastic-beanstalk


【解决方案1】:

发生该错误是因为您的服务器内存不足。你可以去你的服务器,找到泄漏内存的地方并杀死它,添加一点交换或尝试手动安装 gem 或依赖项,因为部署过程会消耗更多内存。

【讨论】:

    【解决方案2】:

    你可以通过两种方式解决这个问题。

    1) 创建 ebextension 文件并输入以下选项

    option_settings:
      - option_name: BUNDLE_DISABLE_SHARED_GEMS
        value: "1"
      - option_name: BUNDLE_PATH
        value: "vendor/bundle"
    

    2) 使用 ssh 连接到您的服务器,转到 /var/app/current 并键入 bundle install 命令并尝试部署您的应用程序。

    【讨论】:

    • 我尝试了这两种方法,但它们都不起作用。当我使用 ssh 时,我只能在 /var/app/ondeck 中找到我的 rails 应用程序,当前文件夹是空的。我还尝试单独安装所有失败的 gem。
    • 我认为您的服务器会出现重线,请检查实例日志或 eb 日志。如果日志文件中没有任何错误,则尝试运行命令 bundle install --path vendor/bundle
    猜你喜欢
    • 2017-07-24
    • 2023-03-07
    • 2020-10-13
    • 2018-05-12
    • 2015-01-15
    • 2021-11-13
    • 2010-12-29
    • 2017-10-26
    • 1970-01-01
    相关资源
    最近更新 更多