5

当单步执行 Rails 中的 Ruby 调试器时,我如何让它只停留在我编写的代码上,跳过所有本机 Rails 代码?

(即跳过所有看起来像这样的代码)

/Users/jon/.rvm/gems/ruby-1.9.3-p0/gems/activesupport-3.2.1/lib/active_support/core_ext/module/remove_method.rb:4
remove_method(method)
(rdb:1) s
[76, 85] in /Users/jon/.rvm/gems/ruby-1.9.3-p0/gems/activesupport-3.2.1/lib/active_support/core_ext/class/attribute.rb
   76          def self.#{name}?() !!#{name} end
   77  
   78          def self.#{name}=(val)
   79            singleton_class.class_eval do
   80              remove_possible_method(:#{name})
=> 81              define_method(:#{name}) { val }
   82            end
   83  
   84            if singleton_class?
   85              class_eval do
/Users/jon/.rvm/gems/ruby-1.9.3-p0/gems/activesupport-3.2.1/lib/active_support/core_ext/class/attribute.rb:81
define_method(:#{name}) { val }
(rdb:1) s
[79, 88] in /Users/jon/.rvm/gems/ruby-1.9.3-p0/gems/activesupport-3.2.1/lib/active_support/core_ext/class/attribute.rb
   79            singleton_class.class_eval do
   80              remove_possible_method(:#{name})
   81              define_method(:#{name}) { val }
   82            end
   83  
=> 84            if singleton_class?
   85              class_eval do
   86                remove_possible_method(:#{name})
   87                def #{name}
   88                  defined?(@#{name}) ? @#{name} : singleton_class.#{name}

谢谢!

4

3 回答 3

1

如果我正确理解您的问题,我认为您正在寻找的是这样的东西如果您使用 Rails 的方法,您不会进入 Rails 代码。我希望这个帮助能祝你好运。

于 2012-03-28T19:42:38.637 回答
1

如果您偶尔会进入一些 Rails 代码,只需在控制台中按一下即可。c这会将您移动到您设置的下一个断点(如果您在循环中,则返回相同的断点),或者如果没有断点,则会简单地结束页面请求。

于 2012-03-28T19:54:56.713 回答
0

有3个主要的调试命令

  • c - 继续
  • s - 步入
  • n - 下一步/跨步

您正在寻找的是“n”,它允许您浏览方法列表,而无需进入包含其余代码的代码或 ruby​​ gem。

于 2012-11-05T16:29:59.243 回答