5

Rails 3アプリを3.2にアップグレードし、アセットパイプラインを設定しています。それはCSS/jsには素晴らしいですが、私はイメージのためにそれを使用する点を実際には見ていません。残念ながら私は参考文献/images/*.pngなどを含むCSSを持っています。 イメージ用のRails 3.1アセットパイプラインを無効にしますか?

image_tag("x.png")<img src="/images/x.png">代わりの <img src="/assets/x.png">を返すに戻りますので、画像だけの資産パイプラインを無効にする方法はありますか?ありがとう!

答えて

0

この宝石をご覧ください: https://github.com/spohlenz/digestion、それはあなたが必要なものを行う必要があります:)。

そうしないと、アセットパイプラインに含めたくないアセットをアプリ/アセットからパブリックに戻すことができます(例:public/images)。宝石を必要とせずにすべてが期待通りに機能するはずです。

4

することができます猿 - パッチActionView ::ベース、レールコンソールでこれを試してください:あなたは例えば初期化子でこれを置くことができ

helper.image_path "foo" #=> "/assets/foo" 

module OldImagePath 
    def image_path(source) 
    asset_paths.compute_public_path(source, 'images') 
    end 
    alias_method :path_to_image, :image_path 
end 
ActionView::Base.send :include, OldImagePath 

helper.image_path "foo" #=> "/images/foo" 

。デフォルトでは、ActionView :: BaseにはActionView :: Helpers :: AssetTagHelperとSprockets :: Helpers :: RailsHelperが含まれ、どちらもimage_pathを定義しますが、後者が優先されます。私は自分自身のモジュールを含め、すべてのモジュールよりも優先されます(内部のコードはActionView :: Helpers :: AssetTagHelperから取得されます)。

でも、画像にアセットパイプラインを使用することは理にかなっていますが、彼らはファイルが変更されたかどうかサーバに尋ねずにクライアント側で永久にキャッシュできるように、ファイル名にハッシュサムを得ます。

+0

これは誰でも確認できますか?私は弾丸を噛んで、画像用の資産パイプラインも取り入れました。 – swrobel

+0

ありがとうございます@セミオンは魅力のように動作します! – wael34218

+0

ありがとう!この手法を使用して、アセットパイプラインを通じてイメージパスを解決する際にエラーが発生した場合、AssetNotPrecompiledErrorがプロダクションで500サーバーエラーを生成しないようにしました。私のimage_pathのオーバーライドでは、私は 'super(source)'を呼び出すだけですが、エラーをログに記録し、パスに "#"を返すレスキュー句を追加します。私はあなたが示唆したように、 'ActionView :: Base.send'行をイニシャライザに入れます。完璧に動作します! –