在应用程序和源代码控制中存储SASS生成的CSS的最佳方法是什么?

时间:2008-09-17 18:12:52

标签: ruby-on-rails haml sass

如果您在Rails应用程序中使用HAML和SASS,那么您在public / stylesheet / * .ssss中定义的任何模板都将编译为* .css样式表。从您的代码中,您可以使用stylesheet_link_tag按名称提取资产,而无需担心扩展名。

许多人不喜欢在版本控制中存储生成的代码或编译的代码,并且还有理由说public / directory不应包含您不发送给浏览器的元素。

在Rails项目中布置SASS资源时要遵循的最佳模式是什么?

5 个答案:

答案 0 :(得分:13)

compass框架建议将您的sass样式表放在app / stylesheets下,将编译好的css放在public / stylesheets / compile中。

您可以通过将以下代码添加到environment.rb来配置:.bb:

Sass::Plugin.options[:template_location] = {
  "#{RAILS_ROOT}/app/stylesheets" => "#{RAILS_ROOT}/public/stylesheets/compiled"
}

如果您使用指南针框架,它会在您安装时为您设置此配置。

答案 1 :(得分:11)

我总是在“public / stylesheets / sass / * .sass”中对所有样式表进行版本化,并为已编译的样式设置排除过滤器:

/public/stylesheets/*.css

答案 2 :(得分:6)

老实说,我喜欢在版本控制中编译已编译的SASS样式表。它们很小,只有在.sass文件发生变化时才会更改,并且将它们与应用程序的其余部分一起部署意味着SASS编译器不需要在生产中激活。

另一个优点(尽管很小)是如果您不使用页面缓存,则rails进程不需要对public_html目录具有写访问权限。因此,利用服务器的方式可能会少一些。

答案 3 :(得分:5)

有点相关,但在capistrano部署期间重新生成CSS是个好主意。这个回调钩就是这样做的:

after "deploy:update_code" do
  rails_env = fetch(:rails_env, "production")
  run "#{release_path}/script/runner -e #{rails_env} 'Sass::Plugin.update_stylesheets'"
end

更新:现代版本的Haml / Sass不再需要这样做。

答案 4 :(得分:0)

如果我可以管理它,我喜欢在为项目选择HAML / SASS时将所有样式存储在SASS模板中,并且我将删除application.css和scaffold.css。然后我将把SASS放在public / stylesheets / sass中,并将/public/stylesheets/*.css添加到.gitignore。

如果我必须使用基于SASS和CSS的资产组合,那就有点复杂了。处理此问题的最简单方法是在stylesheets目录中为生成的CSS创建一个输出子目录,然后在.gitignore中排除该子目录。然后,在您的视图中,您必须知道您正在使用哪种样式类型(SASS或CSS),因为必须选择public / stylesheets / foo样式表或public / stylesheets / sass-out / foo样式表。

如果你必须走第二条路线,建立一个帮助来抽象出sass-out子目录。