【问题标题】:Rails assets not working with webpacker, css, productionRails 资产不适用于 webpacker、css、生产
【发布时间】:2019-07-11 23:21:46
【问题描述】:

我成功地使用 webpacker、bootstrap、rails 运行开发环境。这就是我导入引导程序的方式:

1。添加到 package.json

"bootstrap": "^4.3.1",

2。 Javascript

我的 app/javascript/packs/application.js 包含以下内容:

import "bootstrap"
import "../stylesheets/application"

样式表

我正在 app/javascript/packs/stylesheets 中导入我的样式表:

@import "~bootstrap/scss/bootstrap";
@import "~easy-autocomplete/dist/easy-autocomplete";
@import "~easy-autocomplete/dist/easy-autocomplete.themes";
@import "autocomplete";

我无法让它在生产中工作,部署在 ubuntu + nginx 集中。

我正在运行 rake assets:precomile 和 yarn install,似乎没有帮助:我的页面将在没有 css 的情况下呈现,等等。

【问题讨论】:

  • 你能解释一下“似乎没有帮助”是什么意思吗?只需添加任何命令和/或堆栈跟踪的任何输出。
  • 如果您能提供更多设置细节并查明问题,但现在我可以从您的问题中理解。
  • 我更新了“似乎没有帮助”的意思:css 没有被渲染。
  • 任何更新@MarceloRibeiro

标签: ruby-on-rails nginx asset-pipeline webpacker


【解决方案1】:

您要确保资产从正确的目录中提供服务,这可以通过以下服务器块中的 nginx 代码来完成,

  location ^~ /assets/ {
    gzip_static on;
    expires max;
    add_header Cache-Control public;
  }

确保根目录指向公用文件夹,并在编译资产后包含资产文件夹。

【讨论】:

  • 任何改变你有任何其他的想法可能导致这个,我有同样的问题,但已经有一条类似于你在 nginx 中发布的内容:location ~ ^/(assets|packs)
  • 如果您使用的是 rails 6,请尝试这个,位置 ~ ^/(packs|assets|uploads)/ { root { public location path }; gzip_static 开启;最大过期; add_header 缓存控制公共; add_header ETag "";休息; }
【解决方案2】:

我遇到了类似的问题,在我的特定情况下,aplication.css 文件没有被指纹识别,我需要为生产环境设置资产摘要来解决。如果您碰巧遇到同样的问题,我的解决方案如下。

app/config/environments/production.rb

config.assets.digest = true

不幸的是,我无法解释为什么这是必要的,因为 Rails Docs 的默认设置为 true。

默认情况下,指纹对开发和 生产环境。您可以在您的 通过 config.assets.digest 选项进行配置。

我一定是遗漏了一些东西,因为我不应该明确地将其设置为 true,但这样做解决了我的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-08
    • 2019-10-05
    • 2013-11-26
    • 1970-01-01
    • 1970-01-01
    • 2019-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多