Rails:在生产模式下找不到资产,尽管Cdy提供了正确的服务 [英] Rails: Assets cannot be found in production mode, although being served properly by caddy

查看:25
本文介绍了Rails:在生产模式下找不到资产,尽管Cdy提供了正确的服务的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

几乎几天来我一直在尝试解决此问题。

我正尝试在生产模式下运行Ruby on Rails站点,但(某些)资产无法使用。图像位于自定义子文件夹(app/sets/dio/testolder/demo.png)中,该文件夹已添加到Rails.application.config.assets.paths并正确预编译,但我总是收到错误

ActionView::Template::Error (The asset "demo.png" is not present in the asset pipeline.)

或者更具体地说:

I, [2017-09-25T00:38:32.859541 #41037]  INFO -- : [dd7b2824-614f-4e55-ba32-83548f79b2e1] Started GET "/" for 127.0.0.1 at 2017-09-25 00:38:32 +0200
I, [2017-09-25T00:38:32.860377 #41037]  INFO -- : [dd7b2824-614f-4e55-ba32-83548f79b2e1] Processing by TestControllerController#index as HTML
I, [2017-09-25T00:38:32.861240 #41037]  INFO -- : [dd7b2824-614f-4e55-ba32-83548f79b2e1]   Rendering test_controller/index.html.erb within layouts/application
I, [2017-09-25T00:38:32.861558 #41037]  INFO -- : [dd7b2824-614f-4e55-ba32-83548f79b2e1]   Rendered test_controller/index.html.erb within layouts/application (0.1ms)
I, [2017-09-25T00:38:32.863790 #41037]  INFO -- : [dd7b2824-614f-4e55-ba32-83548f79b2e1] Completed 500 Internal Server Error in 3ms
F, [2017-09-25T00:38:32.864505 #41037] FATAL -- : [dd7b2824-614f-4e55-ba32-83548f79b2e1]
F, [2017-09-25T00:38:32.864789 #41037] FATAL -- : [dd7b2824-614f-4e55-ba32-83548f79b2e1] ActionView::Template::Error (The asset "demo.png" is not present in the asset pipeline.):
F, [2017-09-25T00:38:32.865058 #41037] FATAL -- : [dd7b2824-614f-4e55-ba32-83548f79b2e1]     10:
[dd7b2824-614f-4e55-ba32-83548f79b2e1]     11:   <body>
[dd7b2824-614f-4e55-ba32-83548f79b2e1]     12:     <%= yield %>
[dd7b2824-614f-4e55-ba32-83548f79b2e1]     13:     <%= image_tag(yield(:img)) %>
[dd7b2824-614f-4e55-ba32-83548f79b2e1]     14:     <audio src="<%= audio_path(yield(:audio))%>" type="audio/mpeg" controls preload="none"></audio>
[dd7b2824-614f-4e55-ba32-83548f79b2e1]     15:   </body>
[dd7b2824-614f-4e55-ba32-83548f79b2e1]     16: </html>

localhost:81/assets/demo-57cec01fc3b0b102085dc4de14576f8fd86f8298aed121ce17245df0546276d4.png可以直接访问该映像,因此似乎不是Web服务器(CADY)的问题。

我在GitHub(https://github.com/Kafkalasch/RailsAssetsErrorDemo)上托管了一个简单的演示项目,以便轻松重现该问题。

只需克隆项目,预编译资产 rails assets:precompile ,使用给定的Caddyfile启动Caddy服务器, caddy -conf Caddyfile 并使用config/pua.products tion.rb启动PUMA puma -C RubyDemo/config/puma.production.rb

我正在使用: Ruby 2.4.1 彪马3.10.0 Rails 5.1.4 球童0.10.6

我可以在Debian和Mac OS X上重现此问题,因此我不认为操作系统与此相关。

我想使用我的网络服务器来服务静电文件,所以我正在寻找一种不只是简单设置的解决方案 config.assets.compile = true

有没有人有办法或任何提示来解决我的问题?

感谢您的回复。

推荐答案

我在生产和开发中使用PUMA Web服务器测试了您的应用。

我已通过将mp3png文件的文件夹包含在您的index.html.erb文件中解决了该错误。

<% provide(:img, "testfolder/demo.png") %>
<% provide(:audio, "testfolder/demo.mp3") %>

因为您的图像和资产是在public/assets/testfolder内预编译的,而不是public/assets

问题解决

这篇关于Rails:在生产模式下找不到资产,尽管Cdy提供了正确的服务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆