2

Я пытаюсь развернуть приложение для рельсов на эластичный бобовый стебель aws, руководствуясь этой статьей.Rails aws эластичная ошибка развертывания beanstalk с адаптером базы данных

https://medium.com/@jatescher/how-to-set-up-a-rails-4-2-app-on-aws-with-elastic-beanstalk-and-postgresql-3f9f29c046e2#.tnssj8z0o

Перед началом "Использование PostgreSQL с Rails" часть, у меня не было никаких проблем.

В этой части я следил за изменением gemfile, который добавляет камень postgreSQL в производственную группу и перемещает камень sqlite3 в тестовую группу разработки &, так же как и другие приложения для рельсов.

Как это

group :development, :test do 
    # Before insert this group, sqlite3 gem code is in the default group. (Outside of development group) 
    gem 'sqlite3', '~> 1.3.10' 
    ...other gems... 
end 
group :production do 
    gem 'pg', '~> 0.18.1' 
end 

После этого я $ bundle install, $ git commit и $ eb deploy. Но в это время, EBS делает ошибку с ниже сообщениями

ERROR: [Instance: i-80ee5327] Command failed on instance. Return code: 1 Output: (TRUNCATED)...sqlite3'` to your Gemfile (and ensure its version is at the minimum required by ActiveRecord).

Gem::LoadError: sqlite3 is not part of the bundle. Add it to Gemfile.

Tasks: TOP => db:migrate => db:load_config (See full trace by running task with --trace).

Hook /opt/elasticbeanstalk/hooks/appdeploy/pre/12_db_migration.sh failed. For more detail, check /var/log/eb-activity.log using console or EB CLI.

INFO: Command execution completed on all instances. Summary: [Successful: 0, Failed: 1].

ERROR: Unsuccessful command execution on instance id(s) 'i-80ee5327'. Aborting the operation.

ERROR: Failed to deploy application.

Читая сообщения об ошибках, я ловлю, что sqlite3 камень не loadded экземпляра AWS, так что я потушил sqlite3 код драгоценного камня для внешней группы развития.

gem 'sqlite3', '~> 1.3.10' 

group :development, :test do 
    ...other gems... 
end 
group :production do 
    gem 'pg', '~> 0.18.1' 
end 

После этого команда $ eb deploy хорошо работает, и сервер работает.

Итак, мой вопрос ... ПОЧЕМУ эта проблема возникает?

В моей мысли, если я сделаю gemfile, как 2-й вариант, адаптер sqlite3 загружается по умолчанию и должен быть сбой в рабочей среде. Но результат полностью противоположный мне. Это очень неприятная ситуация, и, более того, я сомневаюсь, что я делаю правильное решение.

Пожалуйста, помогите мне ...

Это мои текущие переменные среды.

RACK_ENV = development 
SECRET_KEY_BASE = ********** 
RAILS_SKIP_MIGRATIONS = false 
RAILS_SKIP_ASSET_COMPILATION = false 
BUNDLE_WITHOUT = test:development 
+1

Что находится в config/database.yml? – jae555

+0

Вы можете удалить «<<: * default» под производство и посмотреть, что произойдет? – jae555

+0

@ jae555 Меня закручивают в модифицирующем коде и объясняют это. После того, как я написал этот вопрос, я постоянно борюсь с другими ошибками установки, и теперь я полностью проиграл. Это раздражающая ситуация, но я просто с ней ... Спасибо. – casamia

ответ

3

похоже, что вы используете сервер beanstalk в режиме разработки. убедитесь, что в beanstalk установлены следующие переменные env:

RAILS_ENV=production 
RACK_ENV=production 
+0

Проблема решена! Ваше решение очень хорошо работает. Кстати, в чем разница между RAILS_ENV и RACK_ENV? Я не видел статей о настройке RAILS_ENV. Я думал, что RACK_ENV связан с окружением рельсов, но RAILS_ENV является правильным. – casamia

+0

@casamia, если это правильный ответ и помог вам, пожалуйста, примите его, чтобы другие могли использовать его, а также более уверенно. –

+2

@KickButtowski Извините, я забыл принять его – casamia

Смежные вопросы