在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直接成为其加载目录。
相关文章
相关标签/搜索