Rails资产无法与Webpacker,CSS,生产一起使用

时间:2019-07-11 23:21:46

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

我有一个成功的开发环境,运行着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资产:预编译,并且安装yarn似乎没有帮助:我的页面将在没有CSS等的情况下呈现。

2 个答案:

答案 0 :(得分:0)

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

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

在编译资产后,确保root指向公用文件夹,并且其中包含资产文件夹。

答案 1 :(得分:0)

我有一个类似的问题,在我的特定情况下,aplication.css文件没有指纹,我需要为生产环境设置资产摘要以解决。如果您碰巧遇到相同的问题,下面将提供我的解决方案。

app / config / environments / production.rb

config.assets.digest = true

很遗憾,我无法解释为什么这样做是有必要的,因为根据Rails Docs,默认值是true。

默认情况下,开发和启用指纹功能 生产环境。您可以在自己的计算机中启用或禁用它 通过config.assets.digest选项进行配置。

我必须丢失一些东西,因为我不必将其显式设置为true,但是这样做解决了我的问题。