【问题标题】:Rails 2.2.2 : quick testing of routesRails 2.2.2:快速测试路线
【发布时间】:2015-01-22 11:35:41
【问题描述】:

每当我遇到路由错误时,我总是会经历“更改 config/routes.rb、重新加载页面、查看日志文件以查看调用了哪个控制器/动作”的循环。这很慢,因为有问题的应用程序非常大,加载环境(在开发模式下对每个请求完成)需要很长时间。

有谁知道单独查询路由器的方法,例如使用 url 调用路由器并获取控制器、操作和参数的哈希值,而不必每次都加载我的整个应用程序?

这是一个 rails 2.2.2 应用程序顺便说一句。 (是的,我知道我应该更新,不幸的是不是一个选项 atm)

【问题讨论】:

  • rake routes 应该在 2.2.2 上工作。
  • rake routes 确实有效,但这并不是我所追求的。 rake routes 就像一个程序或一个公式,如果你知道我的意思,我会使用特定输入运行程序/公式的结果。

标签: ruby-on-rails routes


【解决方案1】:

看看动作控制器路由断言:

actionpack/lib/action_controller/assertions/routing_assertions.rb

【讨论】:

    【解决方案2】:

    我想出了如何做到这一点:关键是 ActionController::Routing::Routes,它返回构建的路线图,并在此调用 recognize_path 方法。

    def test_route(url, method = :get)
      method = method.to_s.downcase.to_sym
      uri = Addressable::URI.parse(CGI.unescape(url))
      path = uri.path
      params = uri.query_values || {}
      routes = ActionController::Routing::Routes;false
      begin
        routes_hash = routes.recognize_path(path, {:method => method})
        HashWithIndifferentAccess.new(routes_hash.merge(params))
      rescue ActionController::RoutingError
        return nil
      rescue Exception => e
        raise $!
      end
    end
    

    如果路由映射无法解析路由,它将引发ActionController::RoutingError 异常,我捕获并返回 nil,表示未找到匹配的路由。任何其他异常都会被弹出。

    【讨论】:

      猜你喜欢
      • 2019-05-23
      • 1970-01-01
      • 2015-11-11
      • 2015-04-01
      • 2021-11-24
      • 2018-02-16
      • 1970-01-01
      • 1970-01-01
      • 2020-01-30
      相关资源
      最近更新 更多