1

我有使用大量引擎的 rails 应用程序。控制器逻辑由包含的 mixin 的混合组成。在跟踪代码在做什么之前,我必须单独访问每个 mixin。是否有任何工具可以向我显示包含所有结果方法的结果源代码文件,以便我可以轻松找出正在发生的事情

4

2 回答 2

1

Pry是探索复杂对象上可用内容的好工具。只需将此添加到您的Gemfile...

group :development do
  gem 'pry-rails'
end

... bundle installrails console并将启动一个 pry 控制台而不是 irb 控制台。Pry 允许您使用命令查找方法的源代码$,包括告诉您它的定义位置:

[11] pry(main)> module SomeModule
[11] pry(main)*   def hidden_method
[11] pry(main)*     puts "hello!"
[11] pry(main)*   end
[11] pry(main)* end
=> :hidden_method
[12] pry(main)> class AClass
[12] pry(main)*   include SomeModule
[12] pry(main)* end
=> AClass
[13] pry(main)> a = AClass.new
=> #<AClass:0x007f23b431d588>
[14] pry(main)> $ a.hidden_method

From: (pry) @ line 9:
Owner: SomeModule
Visibility: public
Number of lines: 3

def hidden_method
  puts "hello!"
end
于 2013-11-04T20:16:14.873 回答
1

据我所知,没有什么可以完全满足您的要求。

但是,您可以通过在控制器操作甚至您的视图中引发异常并查看堆栈跟踪来准确了解正在运行的内容。像better_errors这样的东西使挖掘堆栈跟踪的过程比听起来要愉快得多。

你也可以做类似的事情ApplicationController.included_modulesApplicationController.new.methods但我认为堆栈跟踪方法不会那么令人沮丧。

于 2013-11-04T19:45:25.230 回答