图片资产未载入生产环境

时间:2019-08-01 04:57:53

标签: ruby-on-rails ruby ruby-on-rails-5

我正在运行Rails 5.2.2。我最近从前端分离了一些管理代码,并在此过程中将控制器,视图,css和JS分别移至frontendadmin中的文件夹中。

在开发中,一切正常。在生产中,我无法使用以下行css.scss(位于background: url(arrow.png) no-repeat left center;中)从app/assets/stylesheets/frontend/application.css.scss文件中加载图像资产。

我的资产具有以下文件结构:

assets/
  config/
  images/ 
      admin/
      frontend/
      products/
      another_folder/
  javascripts/
      admin/
      frontend/
  stylesheets/
      admin/
      frontend/

assets/images/products中为图像进行更改后,无需在视图中更改任何图像标签,因此我认为也无需在其他任何地方进行更改;似乎一切正常。但是,在生产中,arrow.png返回404。当我检查图像请求时,图像的链接为/assets/frontend/arrow.png。编译资产时,我使用RAILS_ENV=production标志。我还使用生产标志运行rake assets:clobber,然后尝试再次编译资产。我已删除所有浏览数据。

这是我请求图像的服务器日志:

I, [2019-08-01T05:06:22.496953 #6733] INFO -- : [8a0b82c0-c4a3-419f-92fd-8f4a89bbe643] Started GET "/assets/frontend/arrow.png" for 35.188.197.210 at 2019-08-01 05:06:22 +0000
F, [2019-08-01T05:06:22.501395 #6733] FATAL -- : [8a0b82c0-c4a3-419f-92fd-8f4a89bbe643] 
F, [2019-08-01T05:06:22.503739 #6733] FATAL -- : [8a0b82c0-c4a3-419f-92fd-8f4a89bbe643] ActionController::RoutingError (No route matches [GET] "/assets/frontend/arrow.png"):

更新:

将其添加到视图中可以在生产中很好地工作,因此我可以确认资产确实可以正确编译。

 <%= image_tag("frontend/arrow.png") %>

2 个答案:

答案 0 :(得分:0)

对于Rails 5,请尝试更改以下配置:

config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?

config.public_file_server.enabled = true

OR

您可以在passenger_env_var中设置RAILS_SERVE_STATIC_FILES true。那也可以。

答案 1 :(得分:0)

此代码对您有用吗?

background: image-url(arrow.png) no-repeat left center;