Elastic beanstalk Rails - по умолчанию используется производственная среда, даже если я установил промежуточную среду

Я пытаюсь создать промежуточный экземпляр применения рельсов с использованием эластичного бобового стебля. Я следил за документацией и сделал следующее:

eb init --environment staging
eb start --environment staging

После этого я проверил, что в .elasticbeanstalk / optionsettings в качестве среды по-прежнему указано «производство». Я вручную обновил это до промежуточного уровня и попробовал команду git aws.push.

Через некоторое время все было развернуто. Однако, когда я загружаю URL-адрес, приложение по-прежнему использует все производственные конфигурации, а не постановку. Я пропустил какой-нибудь шаг?




Ответы (3)


Переключатель --environment в eb инструменте CLI не относится к среде Rails, он относится к среде Elastic Beanstalk, которую вы пытаетесь запустить. Среда Elastic Beanstalk - это набор подготовленных ресурсов для развернутой версии приложения. Это отличается от среды Rails / Rack, которая представляет собой просто определяемый пользователем контекст, в котором код приложения запускается на отдельной машине.

Чтобы установить вашу среду Rails, вы захотите установить переменную среды RACK_ENV (или RAILS_ENV) внутри вашего .elasticbeanstalk/optionsettings файла после eb start, а затем вызвать eb update для запуска обновления этих переменных среды. Или вы можете изменить конфигурацию среды Elastic Beanstalk с помощью консоли Elastic Beanstalk; нажмите «Сведения о среде» в нужной среде, «Изменить конфигурацию» в обзоре и перейдите в «Контейнер», чтобы настроить переменные среды (в этом случае вы отредактируете поле RACK_ENV).

person Loren Segal    schedule 01.12.2012
comment
Установка RACK_ENV И RAILS_ENV сработала. Также пришлось перезапустить сервер приложений. - person Dhanush; 02.03.2014

Хотя я использую eb_deployer, а не eb командную строку, при попытке развернуть RAILS_ENV: development я обнаружил, что db:migrate etc, выполнялся в среде разработки, но по-прежнему запускал сервер в производственном режиме. Чтобы решить эту проблему, необходимо было передать RACK_ENV и RAILS_ENV в option_settings:

[{
   namespace: 'aws:elasticbeanstalk:application:environment',
   option_name: 'RACK_ENV',
   value: "development"
 },
 {
   namespace: 'aws:elasticbeanstalk:application:environment',
   option_name: 'RAILS_ENV',
   value: "development"
 }]
person kross    schedule 08.08.2013

Вот четкое руководство для первого развертывания приложения на elasticbeanstalk.

1) eb init --profile имя-профиля (имя профиля будет в .aws> config)

2) Выберите желаемый регион по умолчанию, введя серийный номер.

3) Выберите приложение для использования, введя серийный номер.

4) eb list (список eb)

5) eb use (имя в списке)

6) eb status (выдаст статус) Вот и все, с инициализацией закончили. А теперь, если вы хотите изменить среду, просто используйте следующие команды.

  • eb setenv RACK_ENV = постановка (требует времени).

  • eb deploy (после git staging).

Вы сделали!!!!

person Katta Naveen Kumar    schedule 04.08.2016
comment
Я проверил новую ветку с помощью git (ветка ‹staging› и ‹production›), и для каждой следовал вышесказанному, но мне нужно было использовать eb create, а не init. - person user3291025; 04.02.2018