2

我是 Rails 的新手,想了解它是如何工作的。我想通过调试器从浏览器的 HTTP 请求到 Rails HTTP 响应。我在 Rails::Application#call 方法中运行 pry-debugger,其中 env - 解析了 HTTP 请求。

222: def call(env)
223: 
224:   env["ORIGINAL_FULLPATH"] = build_original_fullpath(env)
225: =>   binding.pry
226:   super(env)
227: end`

经过两个步骤后,我通过 super(evn) 到 Rails::Engine#call 方法(super - Ruby 关键字)

478: def call(env)
479: =>   app.call(env.merge!(env_config))
480: end`

在下一步之后,我希望进入 app.call 方法,其中 app 是 ActionDispatch::Static 类的对象,但我出现在 Rails::Engine 类的 app 方法中

467: def app
468:   @app ||= begin
469:     config.middleware = config.middleware.merge_into(default_middleware_stack)
470:     config.middleware.build(endpoint)
471: =>   end
472: end

为什么?我做错了什么?

4

1 回答 1

1

如果您使用的是 ruby​​ 2.0(这不是预期的行为),您应该尝试pry-byebug而不是pry-debugger-- ruby​​ 2.0 更改了一些调试 API,并且debuggergem(pry-debugger 所依赖的)有时会出现奇怪的行为。

于 2013-07-10T16:51:48.257 回答