Ruby on rails 在应用程序和源代码管理中存储SASS生成的CSS的最佳方法是什么?

Ruby on rails 在应用程序和源代码管理中存储SASS生成的CSS的最佳方法是什么?,ruby-on-rails,haml,sass,Ruby On Rails,Haml,Sass,如果您在Rails应用程序中使用HAML和SASS,那么您在public/stylesheet/*.SASS中定义的任何模板都将编译成*.css样式表。从您的代码中,您可以使用样式表\链接\标记按名称拉入资产,而不必担心扩展 许多人不喜欢将生成的代码或编译后的代码存储在版本控制中,因此,public/directory不应该包含不发送到浏览器的元素 在Rails项目中布置SASS资源时,最好遵循的模式是什么?如果我可以管理它,我喜欢在为项目选择HAML/SASS时将所有样式存储在SASS模板中,

如果您在Rails应用程序中使用HAML和SASS,那么您在public/stylesheet/*.SASS中定义的任何模板都将编译成*.css样式表。从您的代码中,您可以使用样式表\链接\标记按名称拉入资产,而不必担心扩展

许多人不喜欢将生成的代码或编译后的代码存储在版本控制中,因此,public/directory不应该包含不发送到浏览器的元素


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

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

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


如果必须使用第二种方法,请构建一个helper来抽象掉sass out子目录

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

/public/stylesheets/*.css

老实说,我喜欢在版本控制中使用已编译的SASS样式表。它们很小,只有当你的.sass文件改变时才会改变,让它们与你的应用程序的其余部分一起部署意味着sass编译器永远不需要在生产中启动


另一个优点(虽然很小)是,如果不使用页面缓存,rails进程不需要对
public\uHTML
目录具有写访问权限。因此,还有一种利用服务器的方法是邪恶的。

有些相关,但在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不再需要更新。

框架建议将Sass样式表放在app/stylesheets下,将编译后的css放在public/stylesheets/compiled下

您可以通过向environment.rb中添加以下代码来配置此功能:

Sass::Plugin.options[:template_location] = {
  "#{RAILS_ROOT}/app/stylesheets" => "#{RAILS_ROOT}/public/stylesheets/compiled"
}
如果您使用compass框架,它会在安装时为您设置此配置