我们最近遇到了一个问题,一系列提交之后,一个后端进程无法运行。我们很有良心地在每次检入后都运行了 rake test
,但由于Rails库加载中的某些奇怪问题,只有当我们直接从Mongrel以生产模式运行它时才会发现此问题。
我追踪到这个bug的原因是一个新的Rails gem在 String 类中重写了一个方法,导致在运行时的Rails代码中出现了一些狭窄的使用问题。
总之,长话短说,是否有一种在运行时询问Ruby方法定义位置的方法?类似于 whereami(:foo)
,返回 /path/to/some/file.rb line #45
的结果?在这种情况下,告诉我它是在 String 类中定义的将没有任何帮助,因为它被某个库重载了。
我无法保证源代码位于我的项目中,所以用 'def foo'
进行全局搜索并不能给我想要的结果,更不用说如果我有许多 def foo ,有时我直到运行时才知道哪一个我可能正在使用。