在rails3.1使用assets pipeline with compass

    assets pipeline是rails3.1中引入的重要特性之一,它的做用是讓咱們工程目錄下面凌亂的js,css等文件,有序擺放。例如:css

  1. 咱們本身維護的、並且只在當前應用中使用的js、css能夠放在app/assets目錄中
  2. 咱們本身維護的、可是會在N個應用中共享的js、css能夠放在lib/assets目錄中
  3. 咱們本身不維護的js、css能夠放在vendor/assets目錄中

    分門別類的好處是讓咱們能夠在第一時間找到對應的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直接成爲其加載目錄。
相關文章
相關標籤/搜索