2013-10-05 3 views
10

Для Rails 3, this question и turbo-sprockets-rails3 отлично смотрится.Rails 4: как скомпилировать только измененные активы?

Для Rails 4, кажется, some controversy по поводу того, было ли это исправлено или нет.

настоящее время я использую Rails 4 в производстве, и кажется, что из-за Capistrano deploy:assets:update_asset_mtimes затрагивает всех активов, deploy:assets:precompile также вновь собирает все из них. Эта перекомпиляция - единственный самый длинный шаг в моем cap deploy.

В идеале это должно быть заменено некоторой системой манифеста, основанной на контрольной сумме, так что только те активы, которые фактически изменились (или зависят от измененных), повторно скомпилированы.

Каков наилучший способ для этого? (Предполагая, что мы все еще делаем это на сервере, а не на машине dev.)

ответ

2

Вот отличная запись в блоге от парней по поводу этого. Я взглянул на него, но не прошел через шаги в производстве.

http://blog.codeclimate.com/blog/2013/10/02/high-speed-rails-deploys-with-git/

+0

Это похоже на довольно радикальное изменение (намного больше, чем я говорил). Определенно интересно. – Sai

1

Этот вопрос обсуждался в https://github.com/capistrano/capistrano/issues/478 и решение, которое, кажется, все в порядке, просто деактивировать прикосновение. В вышеизложенной проблеме говорилось о переменной конфигурации для использования для этого, но я не мог найти ссылок на нее кодом. Вместо этого мы просто перезаписываем задачу.

namespace :deploy do 
    namespace :assets do 
    task :update_asset_mtimes, :roles => lambda { assets_role }, :except => { :no_release => true } do 
    end 
    end 
end 

Примечание: Это справедливо только для capistrano версии 2. Я понятия не имею, поддерживает ли версия 3 все те же задачи или нет.

2

Этот парень получил это право для Capistrano 3. Хорошо работает для меня. https://coderwall.com/p/aridag

+0

Они превратили его в драгоценный камень: https://github.com/capistrano-plugins/capistrano-faster-assets –

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