2012-12-12 6 views
9

Mi trovo a fare costantemente la stessa cosa, usando i designer per creare simpatici ui e convertire HTML/CSS per dividere la pipeline degli asset e trovare e sostituire percorsi e tag css + js ; aggiornando tutto per utilizzare il percorso dell'asset. C'è qualcosa che lo fa automaticamente?Modello HTML conversione rapida in Rails Asset Layout ERB/​​Sass

+1

Puoi elaborare? Perché il nuovo percorso dei beni? Per rompere il caching? –

risposta

5

Per me, questa situazione chiama a voce alta per sed. Se stai usando Linux, Mac OS X o un altro * nix, continua a leggere. (Se l'ambiente di sviluppo è Windows ma si sta eseguendo la distribuzione su * nix server in cui è possibile impostare gli script post-distribuzione, questo approccio funzionerà comunque.)

Così il progettista ha accesso alle risorse in directory locali e genererà tag come <img src="images/logo.png">. Ma, nella distribuzione, vuoi sostituire questi percorsi con chiamate ERB come <img src="<%= asset_path 'logo.png' %>">, oppure cambiarli in modo che puntino a qualche CDN esterno con un tag come <img src="http://assets.mysite.com/logo.png">, giusto?

Beh, in entrambi i casi, sed è tuo amico! Sed può (tra le altre cose) passare attraverso un file e applicare sostituzioni regex al loro posto sul posto. Nella situazione chiamata ERB (supponendo che hai già rinominato il file per avere un'estensione erb), si dovrebbe eseguire questo comando:

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

Dopo l'esecuzione di questo comando, somefile.html.erb verrà utilizzato al posto di asset_path percorsi immagine specificati manualmente.

Il secondo caso, in cui si sta fornendo immagini su un altro server o forse solo da un altro percorso, è simile:

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

E il gioco è fatto!

Una cosa che è fastidiosa di questi comandi è che è necessario eseguirli su ogni singolo file. Bene, ora che un'altra utility UNIX possa venire in soccorso: trovare. Questa utility può eseguire uno script su un gruppo di file in un albero di directory:

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

Ora, se la maggior parte degli sguardi di cui sopra, come latino antico a voi (e non si è fluente in latino antico), è' Voglio andare ad imparare di più sulle espressioni regolari, in modo da poter modificare i comandi sopra riportati per fare i vari diversi tipi di trasformazioni che desideri. This è una guida piuttosto buona per l'utilizzo di espressioni regolari e regolari che non presuppongono una precedente conoscenza.

Una volta che hai un insieme di comandi che fa la cosa giusta, salvali in un file di script della shell. Quindi, esegui quel file ogni volta che ne hai bisogno, e farà tutto il lavoro noioso per te! Questo è ciò che rende utile imparare tutti questi comandi ottusi; sono più precoci rispetto a una bella GUI che trova la finestra di dialogo di sostituzione &, ma la flessibilità di ciò che fanno e la possibilità di raggrupparli in script ti risparmiano tempo e fastidio a lungo termine.