Компиляция ресурсов в Ruby нужно ли это делать при развертывании? Почему не раньше? - PullRequest
1 голос
/ 28 апреля 2020

Так что это просто вопрос, который меня интересовал в последнее время. Кажется, я трачу значительное количество времени на развертывание в ожидании компиляции ресурсов.

Почему мы не можем скомпилировать ресурсы в нашей разработке? машины и отправить его в git репо?

В настоящее время я использую ruby 2.5.x и rails 5.2.4.x с использованием конвейера ресурсов с uglifier.

Есть ли способ сделать это в разработке и, таким образом, отключить компиляцию всех активов во время развертывания?

большое спасибо, Саймон

Ответы [ 3 ]

1 голос
/ 28 апреля 2020

1-е: Why can we not compile the assets on our development machines and submit it in the git repo?

Причина, по которой нам необходимо выполнить прекомпиляцию:

  • Сжатие ресурсов ресурсов, а затем кэширование некоторого состояния c, например изображений, css и т. д.

Это помогает нам сгенерировать два файла (. css и. js) и сжать все наши css файловые события, которые это файлы от поставщиков:

<script src="/assets/application-908e25f4bf641868d8683022a5b62f54.js"></script>
<link href="/assets/application-4dd5b109ee3439da54f5bdfd78a80473.css" media="screen"
rel="stylesheet" />

Это очень полезно, но It's take time и `И ресурс, который он не использует, перезагружается при изменении какого-либо кода. Вы должны перекомпилировать, чтобы применить код.

-> Итак, поэтому вам не следует компилировать ресурсы в среде DEVELOPMENT.

2nd: Is there a way to do this in development and thus disable all asset compilation during deployment? Вы также используете прекомпиляцию в DEVELOPMENT запустив эту команду:

RAILS_ENV=development bundle exec rake assets:precompile

Вы можете предварительно скомпилировать ресурсы в среде разработки по умолчанию, используя config / development.rb

config.assets.debug = false

Спасибо. Надеюсь, это поможет

0 голосов
/ 29 апреля 2020

Решение было довольно простым

1) отключить компиляцию ресурсов во время развертывания

Я использую elasti c beanstalk, поэтому мне просто пришлось установить это в переменных среды Elastic Beanstalk Asset Compilation 2) Либо

  • Добавьте папку / public / assets в git
  • Или для elasti c beanstalk создайте файл .ebignore и скопируйте поверх. gitignore, но удалите запись / public / assets

3) перед развертыванием прогона

  • Linux - RAILS_ENV = комплект разработки exe c rake assets: precompile
  • Windows - установить RAILS_ENV = development && bundle exe c rake assets: precompile

4) развернуть код на сервере как обычно

  • развернуть
0 голосов
/ 28 апреля 2020

В моем случае, перед развертыванием я прекомпилирую, фиксирую и отправляю его в Github, как вы упоминали. Затем я внедряю в производство с capistrano gem: https://github.com/capistrano/capistrano

Это команда для прекомпиляции:

rails assets:precompile
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...