web-dev-qa-db-ja.com

Rails 3.1をデフォルトとしてSASS(SCSS以上)を使用する方法)

SCSSではなくSASSをスタイルシートのデフォルトとして作成する方法を理解するのに苦労しています。

私はこれでsass_config.rbファイルを作ってみました:

Sass::Plugin.options[:syntax] = :sass
Sass::Plugin.options[:style] = :compressed

また、environment.rbファイルに追加してみました。どちらの方法でもこのエラーが発生します:

.../config/environment.rb:7:in `<top (required)>': 
  uninitialized constant Sass::Plugin (NameError)
59
krainboltgreene

Rails 3.1.rc4の場合、設定を設定できます:

config.sass.preferred_syntax = :sass

の中に application.rbファイル

74
Kevin

以下をconfig/environments/development.rbに追加しました:

config.sass.preferred_syntax = :sass

これでうまくいきました。

8
remino

require 'sass/plugin'を実行し、Application.initialize!を呼び出した後に一番下にあることを確認してください。

7
aceofspades

@krainboltgreeneがコメントしたように、config/application.rbに次の行を追加します

config.generators.stylesheet_engine = :sass

sassをスタイルシート生成プログラムのデフォルトのフォーマットにします。ただし、Rails 3.1.beta1ではサポートされていないため、次のエラーメッセージが表示されます。

$ Rails g scaffold user name:string
...
Could not find "scaffold.css.sass" in any of your source paths. Your current source paths are:
.../gems/railties-3.1.0.beta1/lib/Rails/generators/Rails/scaffold/templates
...

$ Rails g controller users
...
Could not find "stylesheet.css.sass" in any of your source paths. Your current source paths are: 
.../gems/railties-3.1.0.beta1/lib/Rails/generators/Rails/assets/templates

ご覧のとおり、ジェネレータを壊さずにデフォルトのフォーマットを変更することはできません。代わりに、手動で追加の* .css.sassファイルを作成できます。これは、scssファイルの有無にかかわらず正常に機能します。

2
Andrei

私は間違いなくscssよりもsassを好む-すべてのCSSに compass gem を使用してpreferred_syntax = :sassをconfig/compass.rbに

Rails 3.1ではまだこれをテストしていませんが、3.0.7で動作します

編集

トラブルシューティングの手順として、sass_config.rbからコードの最初の行だけを削除して2行目だけを追加するとどうなりますか?これらの両方の行がエラーの原因ですか?

2
stephenmurdoch

私は別の場所でこの答えを見つけましたが、正確に思い出せませんが、これをconfig/initializers/sass.rbに入れてください:

Sass::Engine::DEFAULT_OPTIONS[:load_paths].tap do |load_paths|
  load_paths << "#{Rails.root}/app/assets/stylesheets"
  load_paths << "#{Gem.loaded_specs['compass'].full_gem_path}/frameworks/compass/stylesheets"
end

また、(SCSSよりも)SASS構文を好みます。代わりに、ファイルにmystylesheet.css.sassという名前を付けるだけで、機能します。 application.cssの名前をapplication.css.sassに変更し、上部のコメントを//ではなく/* */に変更して、require_*ディレクティブを使用することもできます。その後、アプリケーションのグローバルスタイルシートでSASSを使用できます。 app/stylesheetsでコンパスを使用している場合は機能しません。

Sass::Pluginは不要です。新しいRailsアセットエンジンはSprocketsに基づいています。これは、SASSをコンパイルしてアセットのバンドルを管理する方法をすでに知っています。正しく。

新しいCompassリリースがRails 3.1+プロジェクトに対してアセットパイプラインを使用してこれを自動的に行うと思います。

1
sj26