Автоматизация задач для развертывания приложения Ember-CLI-Rails в AWS - PullRequest
0 голосов
/ 02 июля 2018

Я создаю приложение rails-ember, используя https://github.com/thoughtbot/ember-cli-rails.

Я использую Capistrano для развертывания на веб-сервере nginx и в экземпляре AWS. Я следую за этими 2 источниками:

http://www.dsolc.com/blogs/8-deploying-rails-app-to-ec2-instance-with-capistrano-using-nginx-and-puma

https://www.youtube.com/watch?v=imdrYD4ooIk&t=150s

Я следую инструкциям, и все работает отлично. Проблема заключается в том, что vendor.css, vendor.js, frontend.css, frontend.js не копируются в папку app / public / assets.

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

01 - /home/deploy/{app-name}/releases/20180701213801/tmp/ember-cli/apps/frontend/assets/frontend-7b19d05f0c30463b6bc445254c46260a.js: 167.85 KB (19.56 KB gzipped) 01 - /home/deploy/{app-name}/releases/20180701213801/tmp/ember-cli/apps/frontend/assets/frontend-a6e35fc1f15073bdd000b39efd15f59a.css: 148.16 KB (24 KB gzipped) 01 - /home/deploy/{app-name}/releases/20180701213801/tmp/ember-cli/apps/frontend/assets/vendor-711976a824e2656ad208cb4c16c1dfc4.js: 1.16 MB (274.52 KB gzipped) 01 - /home/deploy/{app-name}/releases/20180701213801/tmp/ember-cli/apps/frontend/assets/vendor-d3aa84b783735f00b7be359e81298bf2.css: 38 B (58 B gzipped)

Я явно скопировал эти файлы в папку app / public / assets, чтобы все работало нормально.

Кроме того, я сталкиваюсь с ошибкой 502 при первом развертывании приложения. Для этого я всегда убиваю процесс puma с помощью sudo kill -9 {pid}, а затем перезагружаю сервер puma с помощью bundle exec puma -e production -d -b Unix:/home/deploy/{app-name}/shared/tmp/sockets/puma.sock

А затем я перезагружаю сервер nginx.

После этих шагов я могу успешно развернуть все.

Но это много работы. Я скорее стремлюсь автоматизировать все. Я не хочу явно копировать файлы и не хочу перезапускать серверы puma и nginx каждый раз. Как мне этого добиться?

Кроме того, мне нужно добавлять 'bower': '*' в файл package.json каждый раз перед развертыванием. Есть ли способ автоматизировать это?

И последнее: я хочу запустить некоторые грабли с локальных задач. В настоящее время я использую эту команду: bundle exec rake {my_rake_task} RAILS_ENV=production DISABLE_DATABASE_ENVIRONMENT_CHECK=1 на сервере. Есть предложения?

P.S. Пожалуйста, ответьте на это подробно. Я уверен, что этот вопрос поможет многим другим. Если вы предложите изменить, я сделаю это. Но, пожалуйста, поощряйте конструктивное обсуждение этой темы. :)

...