2013-09-26 18 views
7

Asset boru hattını kullanarak Rails App üzerinde çalışıyorum. Dev ortamındaRails 3.2 Devre ortamı sourceMaps JavaScript için destek

config.assets.compress = false 
    config.assets.compile = true 
    config.assets.debug = true 

, varlıklar bohçalanmış edilmez ve her biri ayrı ayrı Raylar tarafından sunulmaktadır: development.rb aşağıdaki sahiptir. Bu noktada, bireysel olarak sunulan varlıkların sayısı 50'den fazladır. Bu nedenle, tam sayfa yeniden yüklemeleri çok yavaştır.

Dev bir ortamda daha hızlı yükleme süresi için bunları birkaç varlıkta birleştirmek istiyorum ancak bunu yaparken, Chrome dev araçlarında tek tek hata ayıklama/bunları görme becerisini kaybediyorum. Örnek: http://d.pr/i/ZFge

yapmanız sonra, bildiğim kadarıyla bu sorunu gidermek için iki yol vardır:

config.assets.debug = false 

ve onlara olarak birleştirilmiş varlıklarını sunulmaya başlayacak.

  1. Eski Hacky Yolu: @sourceUrl trick.
  2. New Way: sourceMaps.

Raylar uygulamasında bunları nasıl etkinleştirebileceğimiz hakkında bir rehber var mı? CoffeeScript kullanmıyorum, bu yüzden https://github.com/markbates/coffee-rails-source-maps yardımcı olmuyor. Çoğu Google Arama, buna yol açar.

Yerel JS için bir çözüm arıyorum.

cevap

13

Bu sorun için mevcut bir çözüm görmedim. Ama bir tane inşa etmek çok kolay olacak.

Aşağıdakiler, kullanılan js kompresörünün gem uglifier olduğunu varsayar.

Uglifier sürüm 2, sourcemap oluşturmak için bir mekanizmaya sahiptir. Bu

uglified, source_map = Uglifier.new.compile_with_map(source) 

Raylar varlık boru hattının o here

Basit Trafo sınıfı hakkında aşağıdaki sözdizimini bir

config.assets.js_compressor = Transformer.new 

okuma kullanılarak (a compress yöntemiyle) özel JS Kompresör belirlemenizi sağlar sözdizimi aşağıdaki gibidir Aşağıdaki

gibi görünecektir

Not: Bu sadece kavramları açıklayan tam bir çözüm değildir. Bunu geliştirebilir ve daha sağlam hale getirmenin yollarını ekleyebilirsiniz.

+0

Çözünürlük uğruna, bunu uygulamaya çalışmayı bıraktım. Bu, varlıkların sunulması sürecinin çok kritik bir parçası etrafında çok fazla parçalanma hissetti. Yanlışlıkla yapılan hata, çok fazla baş ağrısına neden olur. Yazık ki hala bunun için resmi bir yol yoktur. – Rajat