我的生产环境中的引擎gem https://github.com/antpaw/bhf有一个奇怪的行为。 bhf/application.js
和bhf/application.css
的编译方式与您期望的方式相同,并且还在模板中链接正确的方式。但是assets/bhf/image
文件都没有被编译,可以在生产服务器上的shared/assets/bhf/
中找到,除非我改变了
config.serve_static_assets = false
在production.rb中的true
?
使用此设置有多糟糕?我的引擎有没有办法开箱即用?
答案 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 引用而没有摘要。
中讨论的issue#49可能出现的问题non-stupid-digest-assets - 不太好,但首选解决方案
它会将未消化的资产复制到/public