Подтвердить что ты не робот

Как я могу сделать ресурсы Rails 3 более быстрыми?

У меня есть работающее приложение Rails 3.2.1, которое я развертываю через Capistrano с deploy/assets, который запускает задачу deploy:assets:precompile.

Все работает отлично, за исключением того, что сама компиляция очень медленная. У меня не так много CSS и JavaScript (всего около 8200 строк).

Обычно для сбора активов требуется около 1-3 минут, что составляет около 90% всего времени развертывания.

Есть ли способ оптимизировать это? Может быть, использовать другую процедуру для компиляции активов или как-то ее оптимизировать?

Я запускаю приложение в Linode 512 на 1.9.2-p290, Rails 3.2.1 и используя therubyracer gem, если это имеет значение.

4b9b3361

Ответ 1

Это не ответ на то, что он запускается быстрее, но что касается "другой процедуры", вы можете сказать Capistrano только прекомпиляцию активов, когда вы действительно внесли какие-либо изменения в свои активы. Вы бы хотели создать пользовательскую задачу assets:precompile, которая будет выглядеть так, что будет выглядеть в журналах git между существующим и вновь развернутым кодом. Для меня это отлично поработало, и теперь мне нужно иметь дело с медленным развертыванием при обновлении активов:

namespace :deploy do
  namespace :assets do
    task :precompile, :roles => :web, :except => { :no_release => true } do
      from = source.next_revision(current_revision)
      if capture("cd #{latest_release} && #{source.local.log(from)} vendor/assets/ app/assets/ | wc -l").to_i > 0
        run %Q{cd #{latest_release} && #{rake} RAILS_ENV=#{rails_env} #{asset_env} assets:precompile}
      else
        logger.info "Skipping asset pre-compilation because there were no asset changes"
      end
    end
  end
end

Источник: http://www.bencurtis.com/2011/12/skipping-asset-compilation-with-capistrano/

Ответ 2

Я только что написал камень для решения этой проблемы внутри Rails, называемый turbo-sprockets-rails3. Он ускоряет ваш assets:precompile путем перекомпиляции измененных файлов и только компиляции один раз для создания всех активов. Он работает из коробки для Capistrano, так как ваш каталог ресурсов разделяется между релизами.

Было бы здорово, если бы вы могли помочь мне протестировать драгоценный камень turbo-sprockets-rails3 и сообщить мне, есть ли у вас какие-либо проблемы.