多站点Rails站点上的散列资产

时间:2017-02-23 15:54:12

标签: ruby-on-rails asset-pipeline sprockets

Rails:4.2.7.1,Ruby:2.3.1

我们曾经使用非散列资产在我们的多站点应用程序上为我们的资产提供服务,方法是在单个站点的标题中硬编码资产的路径。我们现在使用这些设置在生产中的每个部署上使用Sprockets预编译散列资产:

production.rb

config.consider_all_requests_local = false
config.action_controller.perform_caching = true
config.serve_static_files = true
config.assets.prefix = "/assets"
config.assets.digest = true
config.assets.initialize_on_precompile = true

我们最终得到了散列资产,例如/public/assets/skins/site1/skin-70ee38249235f8521a243a8f955ed08c.css。

我们为每个站点加载样式的每个路径都有一个皮肤文件。我们确实生成了一个未使用的站点application.css。每个皮肤文件包含每个站点的变量,然后导入包含sass样式表的站点清单文件。

我们尝试做的是为我们的CMS创建一种寻找散列资产的方法:

stylesheet_link_tag("/assets/skins/site1/skin.css", media: "all")

问题是该网站仍在寻找非散列皮肤文件。如果我们有普通的skin.css,那就可以了。

Javascript也一样:

javascript_include_tag "/assets/admin.js"

即使存在散列资产,也会查找非散列资产。我试图从链接标签中删除“/ assets”部分,它将失败。

是否有一个我们缺少的设置让Rails查找正确的散列资产?任何建议都表示赞赏。

0 个答案:

没有答案