noo*_*odl 3 ruby-on-rails asset-pipeline
ActionView::Template::Error (leagues/lal11.png isn't precompiled):
Run Code Online (Sandbox Code Playgroud)
添加新联赛后,我的应用中会发生此类错误,但尚未预编译对应的图像。
我了解为什么会这样;资产清单缺少相关路径,因此Rails无法为其确定摘要。但是,由于缺少简单的映像而杀死整个应用程序是愚蠢的。有没有办法捕获这个特定的异常?
在这种情况下责备资产管道似乎是错误的。它是可选的,可以加快您的应用程序的速度。如果您对较慢的应用程序会后退感到满意,则可以在config / environments / production.rb中轻松配置它
# Don't fallback to assets pipeline if a precompiled asset is missed
config.assets.compile = false
Run Code Online (Sandbox Code Playgroud)
尽管可能会争辩说这不是应该引发异常错误的情况……事实是您正在提取不存在的图像。
因此,您的代码需要处理一个错误。IMO在面向对象代码中的更好表现是大量失败而不是巧妙地失败。失败会产生一个不错的失败消息,可用于修复代码。
我建议通过可以处理该错误的助手进行路由。像这样的东西是这个答案的变体
def safe_image_tag(source, options = {})
begin
count = 0
source ||= "blank-profile-md.png"
image_tag(source, options)
rescue Sprockets::Helpers::RailsHelper::AssetPaths::AssetNotPrecompiledError
count += 1
source = "blank-profile-md.png"
retry if count < 2
end
end
Run Code Online (Sandbox Code Playgroud)
在这种情况下,这将恢复并渲染您的默认图像。
| 归档时间: |
|
| 查看次数: |
1416 次 |
| 最近记录: |