我很常见的是在我的开发机器中克隆生产数据库,以使开发ENV尽可能接近实际情况,并使用真实数据进行开发/测试。
问题在于,通过这样做,我的许多视图现在都引用了用户上传的资产(图像)(CarrierWave),但由于我们谈论的是数百个图像,因此克隆这些资产是不切实际的同样。
然而,这会导致糟糕的开发体验:每个包含许多这些图像的视图都会导致Rails服务器处理数十个请求,从而引发如下的RoutingErrors:ActionController :: RoutingError(没有路由匹配[GET]“/uploads/picture/mv_files/image/000/000/051/966/51966/thumb_101__2_.jpg”)
在30+这样的页面中,需要15秒才能使Rails服务器引发所有异常并处理下一个请求。
任何想法如何解决这个问题?
答案 0 :(得分:0)
发布此消息后几分钟,我找到了this excellent Makandra Cards中我正在寻找的解决方案:
通过Rails路由渲染缺失图像的404s加载时 转储开发,记录可能参考不是的图像 可在您的机器上使用。
对这些图片的请求可能会在您的应用程序中出现,例如:如果一个 定义了catch-all路由,导致控制器执行一些繁重的操作 吊装。在包含大量缺失图像的页面上,这会减慢速度 发展回应时间。
您可以通过定义这样的Rails路由来解决这个问题:
if Rails.env.development?
scope format: true, constraints: { format: /jpg|png|gif/ } do
get '/*anything', to: proc { [404, {}, ['']] }
end
end
图像(通常)直接从公共或资产中提供,不会影响你的 控制器/路由,只要文件存在。如果文件丢失, 请求将由上述路线立即处理 以空的HTTP 404响应进行响应。
所以我只是在我routes.rb
文件的开头粘贴了该片段,然后解决了问题!