如果您在Rails应用程序中使用HAML和SASS,那么您在public/stylesheet/*.ssss中定义的任何模板都将编译为*.css样式表.从您的代码中,您可以使用stylesheet_link_tag按名称提取资产,而无需担心扩展名.
许多人不喜欢在版本控制中存储生成的代码或编译的代码,并且还有理由说public/directory不应包含您不发送给浏览器的元素.
在Rails项目中布置SASS资源时,最好的模式是什么?
该指南针框架建议把你的青菜样式下的应用程序/样式表和编译的CSS公共/样式表/编译.
您可以通过将以下代码添加到environment.rb来配置它:
Sass::Plugin.options[:template_location] = { "#{RAILS_ROOT}/app/stylesheets" => "#{RAILS_ROOT}/public/stylesheets/compiled" }
如果您使用指南针框架,它会在您安装时为您设置此配置.
我总是在"public/stylesheets/sass/*.sass"中对所有样式表进行版本化,并为已编译的样式设置排除过滤器:
/public/stylesheets/*.css
老实说,我喜欢在版本控制中编译我编译的SASS样式表.它们很小,只有在.sass文件发生变化时才会更改,并且将它们与应用程序的其余部分一起部署意味着SASS编译器不需要在生产中触发.
另一个优点(尽管很小)是,如果您不使用页面缓存,则rails进程不需要对您的public_html
目录具有写入权限.因此,利用服务器的方式可能会少一些.
有点相关,但在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不再需要这个.