Проблема с созданием среды elasti c beanstalk для Ruby на Rails 6 (проблемы с rvm, rbenv,. ruby -version) - PullRequest
1 голос
/ 06 августа 2020

Я пытался выяснить, как развернуть простое приложение rails на elasti c beanstalk с помощью cli на моей macOS, но каждый раз, когда я добираюсь до eb create, я получаю эту ошибку:

2020/08/06 07:22:56.626563 [INFO] Executing instruction: StageApplication
2020/08/06 07:22:56.626674 [INFO] extracting /opt/elasticbeanstalk/deployment/app_source_bundle to /var/app/staging/
2020/08/06 07:22:56.626695 [INFO] Running command /bin/sh -c /usr/bin/unzip -q -o /opt/elasticbeanstalk/deployment/app_source_bundle -d /var/app/staging/
2020/08/06 07:22:56.638657 [INFO] finished extracting /opt/elasticbeanstalk/deployment/app_source_bundle to /var/app/staging/ successfully
2020/08/06 07:22:56.640331 [INFO] Executing instruction: RunAppDeployPreBuildHooks
2020/08/06 07:22:56.640351 [INFO] The dir .platform/hooks/prebuild/ does not exist in the application. Skipping this step...
2020/08/06 07:22:56.640356 [INFO] Executing instruction: stage ruby application
2020/08/06 07:22:56.640360 [INFO] stage ruby application ....
2020/08/06 07:22:56.640386 [INFO] Running command /bin/sh -c bundle config set --local deployment true
2020/08/06 07:22:56.669550 [ERROR] An error occurred during execution of command [app-deploy] - [stage ruby application]. Stop running the command. Error: install dependencies in Gemfile failed with error Command /bin/sh -c bundle config set --local deployment true failed with error exit status 1. Stderr:rbenv: version `ruby-2.7.0' is not installed (set by /var/app/staging/.ruby-version)

А затем я запускаю eb terminate, чтобы ни за что не платить. Ошибка просто говорит, что у меня не установлено 2.7.0, хотя в моем Gemfile указано 2.7.1, и я запустил bundle install без каких-либо проблем.

Для версии платформы eb я выбрал первый вариант перечислено здесь , так что это будет Ruby 2.7.1-p83, который сейчас возвращает мой ruby -v, поэтому я не уверен, почему он ищет 2.7.0 ...

Я использовал rvm для обновления до последней Ruby, раньше у меня было Ruby 2.6.3, а ошибка внизу говорила 'ruby-2.6.3' is not installed'. Было сложно использовать rbenv для обновления до последней версии Ruby на моем ma c, я думаю, из-за проблем с моей системной версией Ruby? Поэтому я удалил rbenv из brew и вместо этого начал использовать rvm. Но я чувствую, что здесь проблема, поскольку похоже, что elasti c beanstalk использует rbenv, чтобы попытаться найти правильную версию Ruby? Stderr:rbenv: version `ruby-2.7.0' is not installed

Любая помощь или направление приветствуются, даже если вы просто поймете, что такое ". ruby -version" и не следует ли использовать rvm для развертывания.

1 Ответ

0 голосов
/ 19 августа 2020

". ruby -version" - это файл, сохраненный в root вашего проекта, который указывает, какую ruby версию вы используете, поэтому он считывает версию автоматически. (если это то, о чем вы спрашивали)

Для вашей проблемы есть несколько вещей, которые вы должны убедиться, что версия ruby применяется правильно.

  1. Проверьте версию ruby, установленную в экземпляре EC2.

Вы можете проверить это через s sh eb ssh, а затем ruby -v. Результатом будет версия ruby, которую вы нужно использовать. (предпочитаю проверять непосредственно на экземпляре EC2, он может отличаться, если вы проверяете через EB)

Убедитесь, что для ваших файлов .gemfile и .ruby-version указана правильная версия.

Если у вас еще нет файла .ruby-version, создайте его с той версией, которую вы получили. шаг 1.

Я имел дело с той же проблемой, и версия ruby, установленная в экземпляре EC2, отличалась от той, которая возвращалась, если я сделал eb health --refresh, поэтому я выполнил шаги выше, а затем перестроить мою среду, и она сработала, поэтому вам также может потребоваться перестроить свою среду

...