您如何回溯 class 到 library/gem 它的加载来源?
How do you backtrace a class to library/gem it's loaded from?
如果我在 Ruby 中有一个 class 和一个长达数千行的 Gemfile,解决 class => gem
关系的最佳方法是什么?
Gemfile
1000 行长 可能会是一个很大的痛苦来源,尤其是在升级库时 - 这是一个 巨大的 依赖列表!!
通常很明显,gem 是来源,只需查看命名约定即可。但如果不是,您可以使用 Method#source_location
:
进行追踪
> puts method(:mystery_method).source_location
> puts MysteryClass.method(:initialize).source_location
如果您正在使用 pry
,那么还有一个方便的命令可以显示 class/method 的源代码(使用 show-method
命令,或 $
简称):
(pry) > $ mystery_method
(pry) > $ MysteryClass
另外值得一提的是 Method#super_method
- 这在从复杂的 inheritance/mixins.
中追踪行为时非常有用
如果我在 Ruby 中有一个 class 和一个长达数千行的 Gemfile,解决 class => gem
关系的最佳方法是什么?
Gemfile
1000 行长 可能会是一个很大的痛苦来源,尤其是在升级库时 - 这是一个 巨大的 依赖列表!!
通常很明显,gem 是来源,只需查看命名约定即可。但如果不是,您可以使用 Method#source_location
:
> puts method(:mystery_method).source_location
> puts MysteryClass.method(:initialize).source_location
如果您正在使用 pry
,那么还有一个方便的命令可以显示 class/method 的源代码(使用 show-method
命令,或 $
简称):
(pry) > $ mystery_method
(pry) > $ MysteryClass
另外值得一提的是 Method#super_method
- 这在从复杂的 inheritance/mixins.