【问题标题】:Assets not rendering in production rails资产未在生产轨道中呈现
【发布时间】:2016-10-24 15:00:16
【问题描述】:

我已在生产环境中预编译资产,但应用程序无法加载资产。我的应用部署在 AWS EC2 上

我在 public/assets 文件夹中检查了服务器,application.css 存在。 但它仍然显示 404 错误。

我的production.rb配置是

我的 nginx.conf 设置是:

【问题讨论】:

  • “生产”是什么样的环境(heroku、aws等)
  • 部署在 AWS ec2
  • 你的网络服务器(nginx?)配置是什么样的?
  • 我不确定我应该去哪里找?
  • 它应该是一个 nginx.conf 文件,可能在你的 /config 文件夹中。

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4 rails-api


【解决方案1】:

404 基于配置中的那一行:config.serve_static_files = true。根据您的 Rails 版本,这可能是错误的名称。我相信该设置在版本 5 之前的 Rails 中被命名为 config.serve_static_assets

如果您没有服务器(nginx/etc),那么您希望该设置为真。否则,您需要重新配置服务器以指向 /public 目录,并确保 rake assets:precompile 成功运行。

【讨论】:

  • 我在 ec2 上有 nginx 服务器。我应该说是真的还是假的?
  • 设置为假。 “true”表示 rails 将提供文件,“false”表示其他东西(nginx)将提供文件。但是您还必须确保您的 nginx 配置指向您的 rails 应用程序的“公共”目录。
  • 非常感谢@RiptheJacker。我检查了我的 nginx.conf 文件并用正确的公共路径指向了根目录,它解决了问题。
【解决方案2】:

我遇到了同样的问题

设置config.assets.compile = True

它对我有用。

【讨论】:

    【解决方案3】:

    问题是我在 nginx 中的根路径配置错误。所以资产没有指向错误的路径。

    我在 nginx.conf 中改了:

    来自root /home/deploy/appname/publicroot /home/deploy/appname/current/public

    AND 在生产中.rb

    config.serve_static_assets = trueconfig.serve_static_assets = false

    【讨论】:

      【解决方案4】:

      我和你一样:

      root /home/deploy/appname/public root  => /home/deploy/appname/current/public
      

      这对我有用。与我离开 config/production.rb 文件的独特区别是这样的:

      config.public_file_server.enabled = true
      
      config.assets.compile = true
      

      我正在使用 Rails 5。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-02-12
        • 1970-01-01
        • 2015-08-23
        • 2017-02-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多