Задача конвейерной обработки активов / прекомпиляции активов - PullRequest
2 голосов
/ 27 января 2012

Как я могу сделать задание на грабли

assets:precompile 

доступно в моем приложении rails 2.3.14?

Ответы [ 2 ]

4 голосов
/ 10 февраля 2012

Если вам нужен исходный код задачи rake для precompile, вы можете найти его здесь:

https://github.com/rails/rails/blob/3-1-stable/actionpack/lib/sprockets/assets.rake

Не ожидайте, что он будет работать как естькогда вы копируете его в ваши lib / tasks в вашем приложении rails 2.3.14 с гемами sprockets и sprockets-helpers.

[update]

Я сделал простую задачу rake для прекомпилятора для использования врельсы 2.3.14 (без какого-либо сжатия JavaScript).Возможно, вы захотите изменить некоторые вещи, в зависимости от вашей конфигурации.Тщательно протестируйте задачу очистки, поскольку она использует команду rm_rf; -)

BUILD_DIR = Rails.root.join("public/assets")
DIGEST = true

namespace :assets do

  task :compile => :cleanup do

    sprockets = Sprockets::Environment.new
    sprockets.append_path 'app/assets/images'
    sprockets.append_path 'app/assets/javascripts'
    sprockets.append_path 'app/assets/stylesheets'

    sprockets.each_logical_path do |logical_path|
      if asset = sprockets.find_asset(logical_path)
        target_filename =  DIGEST ? asset.digest_path : asset.logical_path
        prefix, basename = asset.pathname.to_s.split('/')[-2..-1]
        FileUtils.mkpath BUILD_DIR.join(prefix)
        filename = BUILD_DIR.join(target_filename)
        puts "write asset: #{filename}"
        asset.write_to(filename)
        #asset.write_to("#{filename}.gz") if filename.to_s =~ /\.(css|js)$/
      end
    end
  end

  # Cleanup asset directory
  task :cleanup do
    dirs = Dir.glob(File.join(BUILD_DIR.join("{*}")))
    dirs.each do |dir|
      puts "removing: #{dir}"
      FileUtils.rm_rf dir
    end
  end

end

[update # 2]

Сейчас я использую этот подход, и он отлично работает: http://jaredonline.github.io/blog/2012/05/16/sprockets-2-with-rails-2-dot-3/

3 голосов
/ 27 января 2012

Простого подхода нет. Конвейер ресурсов опирается на несколько частей архитектуры в Rails 3.1.x, которых нет в Rails 2.3.

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

...