Установите Rails / Webpacker на экземпляр ElasticBeanstalk - PullRequest
0 голосов
/ 08 июля 2019

Я внедряю существующее приложение в новый экземпляр эластичного бобового стебля.Наша кодовая база использует Webpacker для управления нашими интерфейсными ресурсами.Локальная установка веб-упаковщика для разработки не является проблемой, но я продолжаю сталкиваться с проблемами при попытке установить его на наш промежуточный сервер.

Если я правильно понимаю, экземплярам требуются сценарии для установки всего необходимого (гемов и т. Д.), Которыенаходятся в каталоге .ebextensions моего приложения.Они запускаются во время развертывания.

У меня есть сценарий перед развертыванием, который, кажется, работает, но не полностью.

Я хочу знать, как выполнить установку Webpacker на экземпляр, так как он установлен 'в интерактивном режиме, например: conflict config/webpacker.yml Overwrite /var/app/current/config/webpacker.yml? (enter "h" for help) [Ynaqdh] Теперь эти файлы не следует перезаписывать, поскольку они уже были правильно настроены.

Мой вопрос: как это работает внутри сценария во время развертывания, если я не могу ответитьДа или нет?

Я уже пытался ssh в экземпляр и установить его вручную в соответствии с руководством по установке, но, насколько я понимаю, это неправильный способ установки чего-либо например.ЛЮБЫЕ изменения, которые я делаю здесь, кажутся утерянными, и мой экземпляр не заменяется автоматическим масштабированием.

Мой сценарий установки:

# Setup linux packages
option_settings:
  - option_name: BUNDLE_DISABLE_SHARED_GEMS
    value: "1"
  - option_name: BUNDLE_PATH
    value: "vendor/bundle"

files:
  # Replaces the instance script. Need to specify where bundler should be installed
  "/opt/elasticbeanstalk/hooks/appdeploy/pre/10_bundle_install.sh":
    mode: "000775"
    owner: webapp
    group: users
    content: |
      #!/usr/bin/env bash

      EB_SCRIPT_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k script_dir)
      EB_APP_STAGING_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k app_staging_dir)
      EB_APP_USER=$(/opt/elasticbeanstalk/bin/get-config container -k app_user)
      EB_SUPPORT_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k support_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_SUPPORT_DIR/envvars
      . $EB_SCRIPT_DIR/use-app-ruby.sh

      cd $EB_APP_STAGING_DIR

      gem install bundler
      echo "bundler installed, installing gems" && pwd
      bundle install
      echo "gems installed, continuing setup"

  # Runs before `./10_bundle_install.sh`:
  "/opt/elasticbeanstalk/hooks/appdeploy/pre/setup_instance.sh":
    mode: "000775"
    owner: webapp
    group: users
    content: |
      #!/usr/bin/env bash

      EB_SCRIPT_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k script_dir)
      EB_APP_STAGING_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k app_staging_dir)
      EB_APP_USER=$(/opt/elasticbeanstalk/bin/get-config container -k app_user)
      EB_SUPPORT_DIR=$(/opt/elasticbeanstalk/bin/get-config container -k support_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_SUPPORT_DIR/envvars
      . $EB_SCRIPT_DIR/use-app-ruby.sh

      cd $EB_APP_STAGING_DIR

      bundle exec bin/rails webpacker:install
      echo "done, Installing configs for React"
      bundle exec bin/rails webpacker:install:react

Я ожидал, что упаковщик установит все расположенные драгоценные камнив нашем Gemfile, чтобы установить webpacker, а затем установить реакцию, но я получаю эту ошибку;

[Instance: i-0d29490010213b969] Command failed on instance. Return code: 1 Output: (TRUNCATED)...:in `find_spec_for_exe': can't find gem bundler (>= 0.a) with executable bundle (Gem::GemNotFoundException)
    from /opt/rubies/ruby-2.4.6/lib/ruby/site_ruby/2.4.0/rubygems.rb:308:in `activate_bin_path'
    from /opt/rubies/ruby-2.4.6/bin/bundle:23:in `<main>'. 

Ошибка может указывать на то, что каталоги настроены неправильно, но на данный момент я полностью потерян и мне нужны некоторые указатели.Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...