2012-12-12 18 views
9

Kendimi sürekli olarak aynı şeyi yapıyordum, güzel ui's oluşturmak için tasarımcıları kullanarak HTML/CSS'yi varlık boru hattına bölmek ve yolları ve css + js etiketlerini bulmak ve değiştirmek için ; varlık yolunu kullanmak için her şeyi günceller. Bunu otomatik olarak yapan bir şey var mı?Rails için Hızlı Dönüşüm HTML şablonu Asset ERB/​​Sass düzeni

+1

Detaylandırır mısınız? Neden yeni varlıklar yolu? Önbelleğe almaktan vazgeçmek için? –

cevap

5

Bana göre bu durum sed için yüksek sesle çağırıyor. Linux, Mac OS X veya başka bir * nix kullanıyorsanız, okumaya devam edin. (Eğer dev ortamınız Windows ise ancak post-konuş komut dosyaları kurabileceğiniz * nix sunucusuna konuşlandırıyorsanız, bu yaklaşım hala çalışır.)

Tasarımcınızın yerel dizinlerde varlığınıza erişimi vardır. <img src="images/logo.png"> gibi etiketler oluşturur. Ancak, dağıtımda, <img src="<%= asset_path 'logo.png' %>"> gibi ERB çağrılarıyla bu yolların yerini değiştirmek ya da <img src="http://assets.mysite.com/logo.png"> gibi bir etiketle bazı harici CDN'leri gösterecek şekilde değiştirmek ister misiniz?

Her iki durumda da sed, arkadaşın! Sed can (başka şeylerin yanı sıra) bir dosyadan geçer ve yerinde regex ikamelerini uygular. ERB çağrı durumda, bu komutu aday olacağını (halihazırda bir erb uzantılı dosyanızı yeniden adlandırdık varsayarak): Bu komutu çalıştırdıktan sonra

$ sed -i 's/\(<img[^>]*src="\)images/\([^"]+\)\("[^>*]>\)/\1<%= asset_path \'\2\' %>\3/g' somefile.html.erb 

, somefile.html.erb asset_path yerine kullanacak elle belirtilen görüntü yolları.

$ sed -i 's/\(<img[^>]*src="\)images/\([^"]+\)\("[^>*]>\)/\1http:\/\/assets.mysite.com\/\2\3/g' somefile.html 

Ve Bob senin amcan: sadece başka yoldan belki başka bir sunucuda görüntüleri veya sağlıyoruz nerede

ikinci vaka, benzer!

Bu komutlar hakkında can sıkıcı olan bir şey, bunları her bir dosyada çalıştırmanız gerektiğidir. Pekala, başka bir UNIX aracının kurtarmaya gelme zamanı: bul. , Sen' Sana, Şimdi eski Latince gibi yukarıdaki görünüyor eğer çok

$ find dir/with/html -type f -name '*.html.erb' -exec sed 's/foo/bar/g' {} \; 

(ve antik Latince akıcı olmayan): Bu yardımcı bir dizin ağacındaki dosyaların bir demet bir komut dosyası çalıştırabilirsiniz Düzenli ifadeler hakkında daha fazla bilgi edinmek istersiniz, böylece istediğiniz farklı türdeki dönüşümleri yapmak için yukarıdaki komutları değiştirebilirsiniz. This, çok önceden bilgi sahibi olmayan sed ve düzenli ifadeleri kullanmak için oldukça iyi bir kılavuzdur.

Doğru şeyi yapan bir komut kümesine sahip olduktan sonra bunları bir kabuk komut dosyasına kaydedin. O zaman, sadece ihtiyacınız olduğunda bu dosyayı çalıştırın ve tüm can sıkıcı işleri sizin için yapacak! Bütün bu geniş komutları öğrenmeye değer kılan şey budur; Daha iyi bir GUI bulmaktan çok daha iyi çalışırlar. & değiştirme diyaloğunu değiştirebilirler, ancak yaptıkları şeyin esnekliği ve bunları betiklere ayırabilme yeteneği size uzun vadede zaman ve rahatsızlık kazandırır.