让 Rails 3.1 默认使用Sass

因为比起用符号(大括号)控制的代码层次,更喜欢清晰的缩进式层次,因此想把Rails默认的SCSS改成SASS,希望通过诸如 rails g scaffold sth 生成出来的样式文件是Sass格式而非Scss格式。

在Google上奋斗了2个小时,除了在Stackflow上找到一篇文让我还略受启发外(但这篇文中许多人提出了许多种不同的解决方法,不知为何我用下来居然全都失败了),其他的几乎很难找到。

然后我开始读railties的源码……研究了半天generator,一无所获……最后都找到base.rb里去了。此时我开始意识到可能方向发生了错误,转而往更高层的方向寻找,最后终于在sass-rails/lib/sass/railtie.rb中找到了

config.sass.preferred_syntax = :scss

这行代码跟Stackflow网站上某人提出的办法相差无几,于是按照他的方法放入我的rails应用的/config/application.rb中,就在Application类中,跟在其他config.xxx后面,把:scss改成:sass,然后运行rails g scaffold orz,果然见到invoke sass,狂喜~

require File.expand_path('../boot', __FILE__)

require 'rails/all'

if defined?(Bundler)
  Bundler.require(*Rails.groups(:assets => %w(development test)))
end

module MyApplicationName
  class Application < Rails::Application
    config.encoding = "utf-8"
    config.filter_parameters += [:password]
    config.assets.enabled = true
    config.assets.version = '1.0'
    config.sass.preferred_syntax = :sass
  end
end