13

Rails 3.1 では、スプロケットを使用してアセットを管理し、それらを単一のファイルにパッケージ化します。一般に、これはそれほど悪い考えではありません。

当面の問題を説明する外部ソースからの引用:

このアプローチの問題点は、デバッグが難しくなる可能性があることです。本番環境で「連結された」CSS ファイルを調べて、どのコードが含まれているか、含まれていないかを理解する必要がある場合、単に含まれている場合よりも、どこから何が来ているかを知るのが難しくなります。元のソース コード ファイル。

1つの解決策は、「連結」モードと「通常」モードを簡単に切り替える方法を用意することです(おそらく、すでに可能です。私にはわかりません)。これにより、通常の開発が妨げられなくなります。ただし、本番環境でデバッグするには、大きな連結ファイルに頼る必要があります。

Rails 3.0.X では、デザイナーは Firebug を使用して CSS 設定を簡単に特定できました。これにより、ファイルと行番号が直接示されます。これは、すべての CSS ファイルが個別であり、1 つにパッケージ化されていないためです。

それとも私は要点を逃していますか?

4

6 に答える 6

13

次のものも使用できます。

<%= stylesheet_link_tag "application", :debug => Rails.env.development? %>
<%= javascript_include_tag "application", :debug => Rails.env.development? %>

ファイルは開発では連結されませんが、他の環境では連結されます。

于 2011-07-25T09:25:43.853 に答える
5

デバッグする任意の URL に ?debug_assets=true を追加します。アセットをパーツに分割します。これがないと、環境設定に従って連結が行われます。

于 2011-09-03T01:44:14.490 に答える
3

config/application.rb最後に(RCが近づく/リリースになると) 、次の config.assets.css_compressor = false で変更できると思います

しかし、atm、stylesheet_asset_tag ヘルパー関数は新しいパイプラインと完全に互換性がなく、:all 修飾子が機能しないため、実際には修正されません。

application.html.erbビューでは、各 css をリンクする必要があります

<%= stylesheet_link_tag "stylesheets/application" %>
<%= stylesheet_link_tag "stylesheets/foo" %>
<%= stylesheet_link_tag "stylesheets/bar" %>

config.assets.enabled = trueアセットのルートにある限りconfig/application.rb(デフォルトで)/assets

Rails コンソール ( rails c) をp Rails.application.assets起動すると、その間に構成可能なプロパティを確認できます。

私は最善の解決策ではないことに同意しますが、現時点では (RC と安定版のリリースを使用して) これが私が見つけた最良の方法です。

更新: エッジ api を掘り下げると、この ActionView::Helper sprockets_stylesheet_link_tag (http://edgeapi.rubyonrails.org/classes/ActionView/Helpers/SprocketsHelper.html) が見つかりましたが、それは stylesheet_link_tag の完全な代替ではないようです。サポート:allされておらずstylesheets/、関数呼び出しにセグメントが必要です。そうは言っても、それはおそらく前進する機能なので...

<%= sprockets_stylesheet_link_tag "stylesheets/foo" %>
于 2011-05-24T21:24:19.143 に答える
1

興味深い問題を見つけました。アセットを (git にコミットするために) プリコンパイルし、プロダクション モードでテストしてから、同じマシンで開発環境を使用するように戻すと、この問題が発生します。

開発モードに戻っても、新しいアセット コンテンツではなく、パブリック/アセットのコンテンツがキャッシュされ、提供されています。だからここに私がそれを修正した方法があります:

rm -rf public/assets
于 2011-11-12T01:10:27.010 に答える
1

次のものも使用できます。

<%= stylesheet_link_tag "application", :debug =>true%>
<%= javascript_include_tag "application", :debug => true %>

ブラウザのビューソースに次の出力が表示されます

 <link href="/assets/application.css" media="screen" rel="stylesheet" type="text/css" />
 <script src="/assets/jquery.js?body=1" type="text/javascript"></script>
 <script src="/assets/jquery_ujs.js?body=1" type="text/javascript"></script>
 <script src="/assets/application.js?body=1" type="text/javascript"></script>
于 2011-07-27T05:44:43.330 に答える
0

スプロケットはおそらく本番環境でのみ機能します。開発およびテスト中にすべてを単一のファイルにパッケージ化する必要はありません

于 2011-05-24T21:52:31.747 に答える