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直接成爲其加載目錄。