2012-12-12 6 views
9

デザイナーを使用して素敵なUIを作成し、HTML/CSSをアセットパイプラインに分割し、パスとCSS + jSタグを検索して置き換えることで、 ;アセットパスを使用するためにすべてを更新します。自動的にこれを行う何かがありますか?高速変換HTMLテンプレートからRails資産ERB/Sassレイアウト

+1

詳しいことはできますか?新しい資産の経路はなぜですか?キャッシュを解除するには? –

答えて

5

私には、この状況ではsedが大声で呼び出されます。 Linux、Mac OS X、または別の* nixを使用している場合は、をお読みください。 (あなたの開発環境がWindowsの場合でも、展開後のスクリプトを設定できる* nixサーバに展開している場合でも、この方法はそのまま使えます)

あなたのデザイナーはローカルディレクトリの資産にアクセスできます。 <img src="images/logo.png">のようなタグが生成されます。しかし、デプロイメントでは、これらのパスを<img src="<%= asset_path 'logo.png' %>">のようなERBコールで置き換えるか、<img src="http://assets.mysite.com/logo.png">のようなタグを使用して外部CDNをポイントするように変更します。

いずれにしても、sedはあなたの友人です! Sedは(他のものの中でも)ファイルを通過して正規表現置換をインプレースで適用することができます。 ERB通話状況では、このコマンドを実行します(すでにERBの拡張子を持っているあなたのファイルの名前を変更してきたと仮定した場合):このコマンドを実行した後

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

を、somefile.html.erbはasset_pathの代わりに使用することになります手動で指定されたイメージパス。

あなたが別のサーバーに画像を提供するか、多分ちょうど別のパスからされた第2のケースでは、似ています:

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

とボブのあなたの叔父!

これらのコマンドを迷惑にしていることの1つは、すべてのファイルでそれらを実行する必要があることです。さて、もう一つのUNIXユーティリティが救助に来る時間を見てみましょう。このユーティリティは、ディレクトリツリー内のファイルの束にスクリプトを実行することができます:今

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

、あなたに古代のラテン語のような上記のルックスの多く(とあなたは古代のラテン語に堪能でない)場合は、あなたの」正規表現についてもっと学びたいので、上記のコマンドを微調整して、さまざまな種類の変換を行うことができます。 は、あまり事前知識を持っていないsedと正規表現を使用するのに良いガイドです。

正しいことを行う一連のコマンドができたら、それをシェルスクリプトファイルに保存します。次に、必要なときにそのファイルを実行するだけで、すべての面倒な作業ができます!これは、これらの鈍いコマンドをそれに見合ったものにすることです。彼らは素敵なGUIよりも多くの仕事をしています。&ダイアログを置き換えてください。しかし、彼らがやっていることの柔軟性とそれらをスクリプトに束ねる能力は、長期的には時間と煩さを節約します。

関連する問題