本文介绍了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启动PUMApuma -C RubyDemo/config/puma.production.rb
我正在使用:Ruby 2.4.1彪马3.10.0Rails 5.1.4球童0.10.6我可以在Debian和Mac OS X上重现此问题,因此我不认为操作系统与此相关。
我想使用我的网络服务器来服务静电文件,所以我正在寻找一种不只是简单设置的解决方案config.assets.compile = true
有没有人有办法或任何提示来解决我的问题?
感谢您的回复。
推荐答案
我在生产和开发中使用PUMA Web服务器测试了您的应用。
我已通过将mp3
和png
文件的文件夹包含在您的index.html.erb
文件中解决了该错误。
<% provide(:img, "testfolder/demo.png") %>
<% provide(:audio, "testfolder/demo.mp3") %>
因为您的图像和资产是在public/assets/testfolder
内预编译的,而不是public/assets
问题解决
这篇关于Rails:在生产模式下找不到资产,尽管Cdy提供了正确的服务的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!