【问题标题】:Rails Engine asset images are not compiledRails 引擎资产图像未编译
【发布时间】:2013-12-25 19:17:30
【问题描述】:

我的引擎 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

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

【问题讨论】:

  • 我的回答是帮助吗?

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


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

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

    我怀疑它与资产摘要有关。资产按预期使用摘要编译,但从相应的 CSS 无摘要引用。

    sprockets-rails 可能存在问题issue#49 此处讨论

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

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

    【讨论】:

    • 将 gem 资产文件夹从 vendor/ 移动到 app/ 并且它可以工作。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-21
    • 1970-01-01
    • 1970-01-01
    • 2020-10-10
    • 2014-07-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多