Rails引擎资产图像未编译

时间:2013-12-08 19:17:31

标签: ruby-on-rails asset-pipeline production-environment rails-engines

我的生产环境中的引擎gem https://github.com/antpaw/bhf有一个奇怪的行为。 bhf/application.jsbhf/application.css的编译方式与您期望的方式相同,并且还在模板中链接正确的方式。但是assets/bhf/image文件都没有被编译,可以在生产服务器上的shared/assets/bhf/中找到,除非我改变了 config.serve_static_assets = false
在production.rb中的true

使用此设置有多糟糕?我的引擎有没有办法开箱即用?

2 个答案:

答案 0 :(得分:1)

你在生产中使用Webrick吗?如果是这样,您将需要设置config.serve_static_assets = true,因为它不擅长提供静态资产。其他Ruby“应用程序服务器”也不是提供静态资产的理想选择,因此您需要让Rails同时执行此操作。这不是一个理想的设置,因为页面缓存不起作用,所有请求都会打到你的应用程序。

一旦您使用适当的服务器来提供静态资产(如Nginx或Apache),您需要将其设置为config.serve_static_assets = false,以便Rails将其留给Nginx / Apache来处理静态资产。这样,并非所有请求都必须访问您的Rails应用程序,因为缓存可以正常工作。

由于您正在构建Rails引擎,因此您无需担心,因为这是部署Rails应用程序的人员的责任。你将无法控制他们的配置。

答案 1 :(得分:1)

根据你的gemspec https://github.com/antpaw/bhf/blob/master/bhf.gemspec

它依赖于rails v4 s.add_dependency(%q<rails>, [">= 4.0.0"])

我怀疑它与资产摘要有关。资产按预期编译的情况 with digest ,但是从相应的CSS 引用而没有摘要

这是sprockets-rails

中讨论的issue#49可能出现的问题

non-stupid-digest-assets - 不太好,但首选解决方案

它会将未消化的资产复制到/public