【问题标题】:Weird "Missing template" exception in rails app on production生产中的 Rails 应用程序中出现奇怪的“缺少模板”异常
【发布时间】:2016-06-07 07:53:35
【问题描述】:

我在我的 rails 应用程序中设置了异常通知程序。所以今天我收到了第二个通知,index 模板丢失:

An ActionView::MissingTemplate occurred in products#index:

Missing template products/index, application/index with {:locale=>[:en, :de], :formats=>["text/html;text/plain"], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :slim, :arb, :jbuilder]}. Searched in:
* "/home/releases/20160518143810/app/views"


-------------------------------
Request:
-------------------------------

* URL : http://example.com/shop
* HTTP Method: GET
* IP address : xx.xx.xx.xx
* Parameters : {"controller"=>"products", "action"=>"index"}
* Timestamp : 2016-06-07 08:19:13 +0200
* Server : vintage-shop.ch
* Rails root : /home/releases/20160518143810
* Process: 15714

我知道一个事实,该产品的索引模板在服务器上并在 VCS 中签入,并且该应用程序已经运行了一个月。所以我真的很想知道,为什么会发生这种情况:

$ ls /home/releases/20160518143810/app/views/products/index.html.slim 

# -> /home/releases/20160518143810/app/views/products/index.html.slim

这个异常怎么可能?

更新:我查找了 IP 地址,但它不是来自我希望我的客户来自的地区。所以我想知道这是否是某种攻击,但问题仍然是如何触发异常,即使模板存在。

【问题讨论】:

    标签: ruby-on-rails templates exception ruby-on-rails-4.2 server-side-attacks


    【解决方案1】:

    这可能是一次攻击尝试或(我猜更可能是)一些随机噪音。问题似乎出在 Rails 从请求标头中解析出的 format 中。通常,您应该在异常消息中看到类似::formats=>[:html, :text, :js, :css, :ics]

    格式通常在 Rails 中使用请求 URI(通常点 '.' 之后的所有内容都被视为格式规范)或使用 Accept 标头确定。在您的情况下,我猜它是标题(您应该能够在异常通知中看到标题)。 Accept 标头应包含 逗号分隔 内容类型,而不是 分号 分隔,所以我猜这是异常的实际来源.

    如果您想了解有关 Rails 格式分辨率的更多详细信息,请查看insightful blog post

    【讨论】:

    • 是的,这正是我的想法。如果我能看到服务器请求到来时的实际 Rails 日志,则可以更有信心地判断这一点。因为该日志非常详细地回答了视图渲染问题。
    • 感谢您的详细信息。 Accept 标头实际上是用分号分隔的。有没有办法让rails回退到html而不抛出异常?
    • 我不知道回退到 html,但您至少应该能够使用 rescue_from 显示 404 not_found 页面或类似内容。无论如何,这是一个客户端错误,所以我认为在这种情况下显示错误页面是正确的。但是请注意,使用这种方法,您将永远不会遇到更多 Missing template 异常,即使这实际上是您的代码中的一个真正问题。
    猜你喜欢
    • 2012-10-12
    • 1970-01-01
    • 1970-01-01
    • 2020-05-14
    • 1970-01-01
    • 2016-10-04
    • 1970-01-01
    • 2014-07-06
    相关资源
    最近更新 更多