尝试通过调试器了解rails

时间:2013-07-10 11:58:24

标签: ruby-on-rails debugging

我是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#调用方法(超级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

为什么呢?我做错了什么?

1 个答案:

答案 0 :(得分:1)

如果您使用的是ruby 2.0(这不是预期的行为),您应该尝试pry-byebug而不是pry-debugger - ruby​​ 2.0更改了一些调试API和debugger gem(哪个pry-debugger依赖)有时行为奇怪。