21

Rails アプリケーションで HAML と SASS を使用している場合、public/stylesheet/*.sass で定義したテンプレートはすべて *.css スタイルシートにコンパイルされます。コードから stylesheet_link_tag を使用して、拡張子を気にせずにアセットを名前で取得します。

多くの人は、生成されたコードやコンパイルされたコードをバージョン管理に保存することを嫌います。また、ブラウザーに送信しない要素を public/ ディレクトリに含めるべきではないのも当然です。

Rails プロジェクトで SASS リソースをレイアウトする際に従うべき最適なパターンは何ですか?

4

5 に答える 5

13

コンパスフレームワークでは、sass スタイルシートを app/stylesheets に配置し、コンパイル済みの css を public/stylesheets/compiled に配置することを推奨しています。

これを設定するには、environment.rb に次のコードを追加します。

Sass::Plugin.options[:template_location] = {
  "#{RAILS_ROOT}/app/stylesheets" => "#{RAILS_ROOT}/public/stylesheets/compiled"
}

コンパス フレームワークを使用する場合は、インストール時にこの構成がセットアップされます。

于 2008-11-27T04:49:01.920 に答える
11

私は常に「public/stylesheets/sass/*.sass」にあるすべてのスタイルシートをバージョン管理し、コンパイル済みのものに対して除外フィルターを設定します。

/public/stylesheets/*.css
于 2008-09-17T19:02:45.477 に答える
6

正直なところ、コンパイルしたSASSスタイルシートをバージョン管理するのが好きです。それらは小さく、.sassファイルが変更されたときにのみ変更されます。これらをアプリの残りの部分と一緒にデプロイすることで、SASSコンパイラを本番環境で起動する必要がなくなります。

もう1つの利点は(小さいものではありますが)、ページキャッシュを使用していない場合、railsプロセスがpublic_htmlディレクトリへの書き込みアクセス権を持っている必要がないことです。したがって、サーバーの悪用が悪になり得る方法は1つ少なくなります。

于 2008-09-19T01:50:16.800 に答える
5

多少関連していますが、カピストラーノの展開中に CSS を再生成することをお勧めします。このコールバック フックはまさに​​それを行います。

after "deploy:update_code" do
  rails_env = fetch(:rails_env, "production")
  run "#{release_path}/script/runner -e #{rails_env} 'Sass::Plugin.update_stylesheets'"
end

更新: これは、最新バージョンの Haml/Sass では不要になったはずです。

于 2008-09-19T22:13:08.910 に答える
0

管理できる場合は、プロジェクトにHAML / SASSを選択するときに、すべてのスタイルをSASSテンプレートに保存し、application.cssとscaffold.cssを削除します。次に、SASSをpublic / stylesheets / sassに配置し、/ public / stylesheets/*。cssを.gitignoreに追加します。

SASSとCSSベースのアセットの組み合わせで作業する必要がある場合、それはもう少し複雑です。これを処理する最も簡単な方法は、生成されたCSSの出力サブディレクトリをスタイルシートディレクトリ内に置き、そのサブディレクトリを.gitignoreで除外することです。次に、ビューで、public / stylesheets/fooスタイルシートまたはpublic/stylesheets / sass-out / fooスタイルシートを選択する必要があるため、使用しているスタイルタイプ(SASSまたはCSS)を知る必要があります。

2番目のルートに進む必要がある場合は、sass-outサブディレクトリを抽象化するヘルパーを作成します。

于 2008-09-17T18:22:06.947 に答える