【问题标题】:Rails 5 - config.assets.compile should be true - why?Rails 5 - config.assets.compile 应该是真的 - 为什么?
【发布时间】:2016-09-16 19:34:30
【问题描述】:

我正在开发 Rails 5 应用程序并使用资产管道。 它在开发模式下运行良好,但如果我尝试在生产模式下运行它,它就无法正确加载图像和样式。 我查了一下发现是因为

config.assets.compile = false

在 config/environments/production.rb 中

除非我将其设置为 true,否则它根本不起作用。 我知道实时编译不利于生产,有什么解决方案?

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    有两个与在 Rails 服务器中服务资产相关的选项:

    资产编译

    config.assets.compile = true
    

    指资产编译。也就是说,Rails 在检测到源资产的新版本时是否应该重新编译资产。在开发中,您希望将其设置为 true,以便在您编辑 css 文件时编译您的样式。对于下一个请求,Rails 将自动重新编译资产。在生产环境中,您通常希望将其设置为 false 并在部署期间处理资产编译。为此,您必须运行

    RAILS_ENV=production bin/rails assets:precompile
    

    通常,如果您使用 Capistrano 进行部署,它会解决这个问题。

    资产服务

    与资产相关的第二个选项是

    config.public_file_server.enabled
    

    这描述了是否应该由 Rails 提供来自public/assets 目录的编译文件。在开发中,你想要那个,所以默认情况下它是真的。在生产环境中,您通常不希望启动 Web 服务器来提供徽标图像或 css 文件,因此您可能会编译资产,然后单独托管它们(例如,在像 cloudfront 这样的 CDN 上)。如果您仍然希望它们在生产环境中提供服务,您可以使用以下方式启动 Rails:

    RAILS_SERVE_STATIC_FILES=true RAILS_ENV=production bin/rails server
    

    【讨论】:

      【解决方案2】:

      首先预编译您的资产。

      运行 RAILS_ENV=production rake assets:precompile 以在您的公共目录中生成样式表和 js 文件。

      【讨论】:

      • 我已经使用在公共目录中生成文件的语句进行了预编译。但同样的问题
      猜你喜欢
      • 2023-03-18
      • 1970-01-01
      • 2021-07-12
      • 2012-04-15
      • 2019-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-08
      相关资源
      最近更新 更多