首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails救援无效或无法到达

Rails救援无效或无法到达
EN

Stack Overflow用户
提问于 2020-06-03 06:57:14
回答 1查看 82关注 0票数 0

Rails路由中有以下代码:

代码语言:javascript
复制
    class LegacyRedirector
      InvalidUrlError = Class.new(ActionController::RoutingError)

      def call(params, request)
        URI.parse(request.path)
      rescue URI::InvalidURIError => e
        raise InvalidUrlError.new(e.message)
      end
    end

# routes.rb
match 'a', to: redirect(LegacyRedirector.new)

这是用来捕获入侵的URL的。然而,当我在浏览器中测试它的curl时,它仍然会显示URI::InvalidURIError,而不是我的新错误类。救援队似乎从来没有达到过,但我相信我是在拯救正确的类型。这怎么可能呢?

代码语言:javascript
复制
URI::InvalidURIError at /twitter/typeahead-js/wikis/home[
=========================================================

> bad URI(is not URI?): "/twitter/typeahead-js/wikis/home["

lib/gitlab/routing.rb, line 31
------------------------------

``` ruby

31 URI.parse(request.path)

32拯救URI::残废=> e

33 InvalidUrlError.new(e.message)

34端

代码语言:javascript
复制
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-03 06:57:14

一个可能的原因可能是better_errors

如果在救援块中引发错误,则其cause将是原始错误。better_errors反而会显示这个cause,这意味着反向跟踪不会出现在救援块中。这让你产生了一种错觉,那就是它从未获救。

这是最近修复的,有关更多细节,请参见https://github.com/BetterErrors/better_errors/pull/459

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62166975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档