【问题标题】:Rails app not working in production environment on local machinRails 应用程序无法在本地机器上的生产环境中运行
【发布时间】:2020-08-04 07:19:41
【问题描述】:

在开发环境中它工作正常,但是当我在生产环境中运行应用程序时,它说 很抱歉,但出了点问题。 如果您是应用程序所有者,请查看日志以获取更多信息。

生产日志说:

I, [2020-04-21T19:25:25.667458 #31504]  INFO -- : [74b45073-2b93-4d6e-8d02-346cf6c72631] Started GET "/" for 127.0.0.1 at 2020-04-21 19:25:25 +0530
I, [2020-04-21T19:25:25.668742 #31504]  INFO -- : [74b45073-2b93-4d6e-8d02-346cf6c72631] Processing by DashboardController#home as HTML
I, [2020-04-21T19:25:25.670973 #31504]  INFO -- : [74b45073-2b93-4d6e-8d02-346cf6c72631]   Rendering dashboard/home.html.haml within layouts/application
I, [2020-04-21T19:25:25.671255 #31504]  INFO -- : [74b45073-2b93-4d6e-8d02-346cf6c72631]   Rendered dashboard/home.html.haml within layouts/application (Duration: 0.1ms | Allocations: 15)
I, [2020-04-21T19:25:25.672210 #31504]  INFO -- : [74b45073-2b93-4d6e-8d02-346cf6c72631] Completed 500 Internal Server Error in 3ms (Allocations: 1237)
F, [2020-04-21T19:25:25.673501 #31504] FATAL -- : [74b45073-2b93-4d6e-8d02-346cf6c72631]   
[74b45073-2b93-4d6e-8d02-346cf6c72631] ActionView::Template::Error (Webpacker can't find application in /home/zamir/rails_studio/sunrise/public/packs/manifest.json. Possible causes:
1. You want to set webpacker.yml value of compile to true for your environment
   unless you are using the `webpack -w` or the webpack-dev-server.
2. webpack has not yet re-run to reflect updates.
3. You have misconfigured Webpacker's config/webpacker.yml file.
4. Your webpack configuration is not creating a manifest.
Your manifest contains:
{
  "application.js": "/packs/js/application-fafdbfed632f089e407b.js",
  "application.js.map": "/packs/js/application-fafdbfed632f089e407b.js.map",
  "entrypoints": {
    "application": {
      "js": [
        "/packs/js/application-fafdbfed632f089e407b.js"
      ],
      "js.map": [
        "/packs/js/application-fafdbfed632f089e407b.js.map"
      ]
    }
  }
}
):
[74b45073-2b93-4d6e-8d02-346cf6c72631]      6:       = controller.page_title
[74b45073-2b93-4d6e-8d02-346cf6c72631]      7:     = csrf_meta_tags
[74b45073-2b93-4d6e-8d02-346cf6c72631]      8:     = csp_meta_tag
[74b45073-2b93-4d6e-8d02-346cf6c72631]      9:     = stylesheet_pack_tag 'application', media: 'all', 'data-turbolinks-track': 'reload'
[74b45073-2b93-4d6e-8d02-346cf6c72631]     10:     = javascript_pack_tag 'application', 'data-turbolinks-track': 'reload'
[74b45073-2b93-4d6e-8d02-346cf6c72631]     11:   %body
[74b45073-2b93-4d6e-8d02-346cf6c72631]     12:     .container-fluid
[74b45073-2b93-4d6e-8d02-346cf6c72631]   
[74b45073-2b93-4d6e-8d02-346cf6c72631] app/views/layouts/application.html.haml:9
I, [2020-04-21T19:25:25.988388 #31504]  INFO -- : [6a573ad4-9775-4565-8f2e-e32395e409cd] Started GET "/favicon.ico" for 127.0.0.1 at 2020-04-21 19:25:25 +0530
F, [2020-04-21T19:25:25.989343 #31504] FATAL -- : [6a573ad4-9775-4565-8f2e-e32395e409cd]   
[6a573ad4-9775-4565-8f2e-e32395e409cd] ActionController::RoutingError (No route matches [GET] "/favicon.ico"):

【问题讨论】:

    标签: ruby-on-rails webpack ruby-on-rails-6


    【解决方案1】:

    我猜问题出在production.rb 配置文件中:您应该允许 Puma 提供静态文件。

    在生产服务器中,静态文件通常由 Nginx 提供服务,但如果您在本地计算机上运行 Puma,情况并非如此。

    为此,请在您的 production.rb 中将此值设置为 true(或创建一个名为 RAILS_SERVE_STATIC_FILESENV 变量):

    config.public_file_server.enabled = true

    【讨论】:

      【解决方案2】:

      将 gem rails_12factor 添加到您的 Gemfile。这将添加错误日志记录以及您的应用提供静态资源的能力。

      记得破坏你的资产

      RAILS_ENV=production rails assets:clobber RAILS_ENV=production rails assets:precompile

      【讨论】:

        【解决方案3】:

        在 config/webpacker.yml 中将 extract_css 选项设置为 true 以用于生产:

        extract_css: true
        

        然后在以生产模式启动服务器之前运行以下命令:

        RAILS_ENV=production rails assets:precompile
        

        【讨论】:

          猜你喜欢
          • 2020-01-27
          • 1970-01-01
          • 1970-01-01
          • 2017-09-09
          • 1970-01-01
          • 1970-01-01
          • 2021-01-26
          • 2017-09-11
          • 2014-11-18
          相关资源
          最近更新 更多