資産パイプラインのレシピ

この投稿は、以前のバージョンからRuby on Rails 3.1に移行した後、Asset Pipelineを介した画像の正しい動作のさまざまな仮説の長いテストに触発されました。

だから、挑戦


CSSファイルで、assetsフォルダーにある画像を指定します。 実稼働環境のイメージはプリコンパイルする必要があります。
最終的には、そのよう な公式ガイドガイド翻案スクリーンキャストがあります。 ここでは、「それだけで機能する」というルールは、繊細なポイントへの(または他の)手を許可しない場合にのみ機能します。 どれ?

解決策


実験中に確認された仮説は1つだけです。これは、表示の便宜上、いくつかの部分に便利に分割されています。
ファイルツリーは次のようになります(.erbは気まぐれです。sass-railsエンジンを使用した作業も可能です)。

アプリ/
...資産/
.......画像/
………rails.png
.......スタイルシート/
………application.css.erb

1.プリコンパイルには、rakeアセットではなくプリコンパイルを使用しますが、わずかにやり直したrakeタスク
時々エラーが発生しました
rake assets:precompile
rake aborted! rails.png isn't precompiled

彼女が登場した理由はわかりませんが、私だけではないことは確かです。この問題の解決策はgithubで見つかりました。

2. cssでパスを指定するには、erbテンプレートエンジンのasset_pathヘルパーを使用します。
SASSにたくさんのヘルパーがありますが、私のプロジェクトでは機能しませんでした。まだ使用していません。
application.css.erbの内容:
#header { background-image: url(<%= asset_path("rails.png") %>)

sass(application.css.scss)を使用する場合:
#header { background-image: image_url('rails.png') }

3. production.rbを設定します。これも役割を果たします。
config.assets.compile = false #
config.assets.digest = true # ( )
config.action_dispatch.x_sendfile_header = "X-Sendfile" # 'X-Accel-Redirect' nginx, , http-server

最後の行は、ローカルマシンで起動したときにかなり悩みました。
画像「localhost:3000 / asset / rails-s43o54m765t656ed76i8gest.png」はエラーが含まれているため表示できません。
問題は、Webrick httpサーバーがx_sendfile_headerディレクティブをサポートしていなかったということです(たぶん私は間違っているかもしれませんが、そこでは間違いなく動作しませんでした)。

おわりに


もちろん、私はまだトピックを理解していませんが、アレクサンダー・セルゲイヴィッチが言ったように、
ああ、どれだけ素晴らしい発見があるか
悟りの精神を準備する

UPD :sass-railsの使用方法を示すgithubプロジェクトを作成しまし

Source: https://habr.com/ru/post/J127688/


All Articles