Как исправить проблему с сборщиком приложений Rails 5.2 для развертывания AWS Elastic Beanstalk

Я пытаюсь развернуть приложение Rails 5.2 в AWS Elastic Beanstalk, но получаю эту ошибку.

Creating application version archive "app-c6b5-190405_225348". Uploading example-rails52/app-c6b5-190405_225348.zip to S3. This may take a while. Upload Complete. Environment details for: example-eb-rails52-env Application name: example-rails52 Region: us-east-2 Deployed Version: app-c6b5-190405_225348 Environment ID: e-ehbkcfzrrt Platform: arn:aws:elasticbeanstalk:us-east-2::platform/Puma with Ruby 2.5 running on 64bit Amazon Linux/2.9.2 Tier: WebServer-Standard-1.0 CNAME: UNKNOWN Updated: 2019-04-05 16:53:59.311000+00:00 Printing Status: INFO: createEnvironment is starting. INFO: Using elasticbeanstalk-us-east-2-525254074082 as Amazon S3 storage bucket for environment data. INFO: Created security group named: sg-073de6677d8e02d77 INFO: Created load balancer named: awseb-e-e-AWSEBLoa-985TNPDWPYRI INFO: Created security group named: awseb-e-ehbkcfzrrt-stack-AWSEBSecurityGroup-1XWZBQC4TD76I INFO: Created Auto Scaling launch configuration named: awseb-e-ehbkcfzrrt-stack-AWSEBAutoScalingLaunchConfiguration-SAZWMJ3L0UV7 INFO: Created Auto Scaling group named: awseb-e-ehbkcfzrrt-stack-AWSEBAutoScalingGroup-1E8GGM4K5S26 INFO: Waiting for EC2 instances to launch. This may take a few minutes. INFO: Created Auto Scaling group policy named: arn:aws:autoscaling:us-east-2:525254074082:scalingPolicy:bb866da3-dac2-47f0-81a2-ebc1c582d68a:autoScalingGroupName/awseb-e-ehbkcfzrrt-stack-AWSEBAutoScalingGroup-1E8GGM4K5S26:policyName/awseb-e-ehbkcfzrrt-stack-AWSEBAutoScalingScaleUpPolicy-ON6YTENHUIOE INFO: Created Auto Scaling group policy named: arn:aws:autoscaling:us-east-2:525254074082:scalingPolicy:f13cedac-d71f-4b89-a0fd-dd2db97bb43a:autoScalingGroupName/awseb-e-ehbkcfzrrt-stack-AWSEBAutoScalingGroup-1E8GGM4K5S26:policyName/awseb-e-ehbkcfzrrt-stack-AWSEBAutoScalingScaleDownPolicy-3MK7B2H0O52F INFO: Created CloudWatch alarm named: awseb-e-ehbkcfzrrt-stack-AWSEBCloudwatchAlarmHigh-1R89A12TU33EK INFO: Created CloudWatch alarm named: awseb-e-ehbkcfzrrt-stack-AWSEBCloudwatchAlarmLow-1KHMKXF2A73T1 ERROR: [Instance: i-050185633c1ecb322] Command failed on instance. Return code: 1 Output: (TRUNCATED)...:infind_spec_for_exe ': не удается найти сборщик гемов (> = 0.a) с исполняемым пакетом (Gem :: GemNotFoundException) из /opt/rubies/ruby-2.5.5/lib/ruby/site_ruby/2.5.0/rubygems.rb : 308: в activate_bin_path' from /opt/rubies/ruby-2.5.5/bin/bundle:23:in '. Не удалось перехватить /opt/elasticbeanstalk/hooks/appdeploy/pre/10_bundle_install.sh. Для получения дополнительной информации проверьте /var/log/eb-activity.log с помощью консоли или EB CLI. ИНФОРМАЦИЯ: выполнение команды завершено для всех экземпляров. Сводка: [Успешно: 0, Неудачно: 1].

Кто-нибудь может дать мне решение?


person Fahmida Begum    schedule 10.04.2019    source источник


Ответы (1)


В Rails 5.2 вам необходимо установить бандлер версии 2.0.1. Чтобы решить эту проблему, вы можете выполнить следующие шаги -

Шаг 1. Вы добавили расширения eb для установки бандлера версии 2.0.1 в AWS Elastic beanstalk -

# Go to your project root directory
$ mkdir .ebextensions
$ vim .ebextensions/bundler_install.config 

  files:
    # Runs before `./10_bundle_install.sh`:
    "/opt/elasticbeanstalk/hooks/appdeploy/pre/09_gem_install_bundler.sh" :
      mode: "000775"
      owner: root
      group: root
      content: |
        #! /bin/bash

        EB_APP_STAGING_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k app_staging_dir)
        EB_SCRIPT_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k script_dir)
        # Source the application's ruby, i.e. 2.6. Otherwise it will be 2.3, which will give this error: `bundler requires Ruby version >= 2.3.0`
        . $EB_SCRIPT_DIR/use-app-ruby.sh

        cd $EB_APP_STAGING_DIR
        echo "Installing compatible bundler"
        gem install bundler -v 2.0.1

Шаг 2. Перейдите в AWS Elastic beanstalk Все приложения -> example-rails52 -> example-eb-rails52-env, затем щелкните Конфигурация -> Программное обеспечение -> Изменить и затем добавьте эту переменную env.

 BUNDLER_VERSION=2.0.1

и нажмите сохранить

Шаг 3. Снова разверните приложение

$ eb deploy

Надеюсь, это сработает.

person Sahidur Rahman Suman    schedule 10.04.2019
comment
Ужасно. Я не могу поставить это на крючок. Должно быть лучшее решение? Полагаю, контейнеры. - person Damien Roche; 26.06.2019
comment
@DamienRoche Я обновил ответ. Пожалуйста, проверьте это еще раз. Надеюсь, это сработает. - person Sahidur Rahman Suman; 27.06.2019