Я создаю приложение 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. Пожалуйста, ответьте на это подробно. Я уверен, что этот вопрос поможет многим другим. Если вы предложите изменить, я сделаю это. Но, пожалуйста, поощряйте конструктивное обсуждение этой темы. :)