assets pipeline是rails3.1中引入的重要特性之一,它的做用是让咱们工程目录下面凌乱的js,css等文件,有序摆放。例如:css
分门别类的好处是让咱们能够在第一时间找到对应的js、css文件,同理能够扩展到其余的格式的文件,例如image。另外例如存在一个文件是app/assets/stylesheets/somecssfile.css ,那么咱们就能够经过http://www.example.com/assets/somecssfile.css 这个连接访问到上面那个文件。sass
rails怎么识别这些路径呢?原来是在Rails.application.config.asserts.paths这个变量中定义的,咱们能够在config/application.rb这个文件中修改,自定义一个assets目录,例如/home/myname/**/*/lib/assets,那么这个目录中的js、css文件一样可使用 http://www.example.com/assets/stylesheets/anothercssfile.css 这样相似路径访问获得。app
在rails3.1中编写css文件,最好使用sass/scss来作整理,可让css代码复用能力更强,从而作到DRY。固然,若是你使用了sass/scss,那么进而利用compass这个框架算是不错的选择。在3.1以前,咱们原来是这么作的 compass init rails path/to/app ,这个命令会在app下面生成stylesheets目录,把css/sass/scss文本放在里面。可是在3.1中这么,会让我以为乱的。框架
第一种方法,手工将代码移入上面说到3个assets目录其中之一中去,不过看起来没那么优雅,并且得修改配置。atom
第二个方法修改config.sass.load_paths,compass中几个stylesheets目录加载进来,让assets pipeline中的sass,scss代码能够执行@import,具体能够参考http://spin.atomicobject.com/2011/07/12/sass-sprockets-compass-with-rails-3-1/ 这篇文章。ip
固然还有第三个办法就是我一开始铺垫的修改config.assets.paths的配置让compass gem中的stylesheets直接成为其加载目录。