バックグラウンド
右から左へのロケールと左から右へのロケールを有効にしたいのですが、スタイルシートのセットを1つだけ維持したいと思います。
アイデアは、呼び出しが(r2を使用して)application-rtl.css
のrtl変換バージョンを提供するということです。application.css
この機能には2つのユースケースがあります。
- 開発:動的に提供し、オンザフライで変換
- 本番環境:プリコンパイルで-rtlバージョンを生成します(rakeアセットの拡張:プリコンパイルタスク)
これまでのところ、RTLに変換されたすべてのスタイルシートをまったく触れずに提供できるRTLConverterを実装することができました。
config / initializers / rtl_converter.rb:
require "r2"
require "tilt"
class RTLConverter < Tilt::Template
def prepare; end
def evaluate(context, locals, &block)
R2.r2 @data
end
end
Rails.application.assets.register_preprocessor 'text/css', RTLConverter
これをスプロケットのエンジンとして実装して、拡張子が.rtlのファイルのみを変換することもできます。
Rails.application.assets.register_engine 'rtl', RTLConverter
私の質問
次の目的でアセットパイプラインに接続するにはどうすればよいですか。
- 名前が接尾辞'-rtl'のスタイルシートのオンザフライ変換バージョンを提供しますか(接尾辞のないファイルを探して、その変換バージョンを提供します)?
- プリコンパイル中にすべてのスタイルシートのname-postfix'-rtl'を使用して変換されたコピーを作成する
ノート:
コンバーターはsassエンジンと連携して動作しませんが、より少ない数で正常に動作するようです。これは、twitter-bootstrapベースのサイトに適用されており、魅力のように機能します。
コンバーターは実稼働環境でテストされていません。
この問題に対する適切な解決策を見つけることができれば、私は宝石を作成して維持し、それをコミュニティに還元するつもりです。