Звездочки Turbo и капистрано

Недавно я добавил гем турбо звездочек https://github.com/ndbroadbent/turbo-sprockets-rails3 к моему приложению rails, я использую capistrano для развертывания в Amazon EC2.

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

Короче говоря, capistrano создает новый каталог выпуска для каждого развертывания, а каталог public/assets пуст, поэтому каждый раз, когда он создает новый и при запуске assets:precompile он предварительно компилирует все активы.

Должен ли я предварительно скомпилировать локально и добавить их в git или скопировать каталог public/assets из последнего развертывания до того, как capistrano запустит assets:precompile ?

Каким было бы самое чистое/лучшее практическое решение?

/Edit Или, может быть, хранить скомпилированные ресурсы в общем каталоге?


person lesce    schedule 28.11.2012    source источник


Ответы (2)


Самое простое решение, которое я мог придумать, — это использовать каталог shared/assets для хранения моих ресурсов и создать символическую ссылку на каталог public/assets релиза перед компиляцией ресурсов.

 task :assets_precompile do
   run "ln -s #{shared_path}/assets #{release_path}/public/assets"
   run "cd #{release_path} && RAILS_ENV=production bundle exec rake assets:precompile"
 end

Изменить: Анджан указал, что если вы используете deploy:assets (если у вас есть load 'deploy/assets' в вашем Capfile), это делается по умолчанию, так что это более чистое решение.

person lesce    schedule 29.11.2012
comment
У вашего Capfile есть load 'deploy/assets'? Я думал, что эта строка позаботится о предварительной компиляции ресурсов при развертывании и по умолчанию помещает их в папку shared/assets. - person Anjan; 30.11.2012
comment
Он закомментирован, и, да, deploy:assets:symlink делает именно это. Я обновлю свой ответ, спасибо! - person lesce; 30.11.2012

Ответ Лессе имеет больший вес, если процесс развертывания включает символические ссылки на статические файлы.

Пример: config/database.yml - это то, что вы не настраиваете, и вы не хотите, чтобы развертывание обязательно менялось на вас... Наличие этого в shared/assets приведет к сбою, когда вызывается assets:precompile.

Это также работает для случаев с загруженными пользователем изображениями, вложениями...

person Jerome    schedule 14.09.2013