我们最近遇到了一个问题,在一系列提交之后,一个后端进程无法运行。现在,我们是好孩子,在每次签入后运行rake test
,但是,由于Rails库加载中的一些奇怪之处,它只发生在我们直接从Mongrel在生产模式下运行它时。
我追踪了这个bug,它是由于一个新的Rails gem覆盖了String类中的一个方法,这种方法破坏了运行时Rails代码中的一个狭窄使用。
总之,长话短说,有没有一种方法,在运行时,问Ruby在哪里定义了一个方法?类似whereami( :foo )
返回/path/to/some/file.rb line #45
?在这种情况下,告诉我它是在类String中定义的是没有帮助的,因为它被一些库重载了。
我不能保证源存在于我的项目中,所以对'def foo'
的grepping不一定会给我我需要的东西,更不用说如果我有许多 def foo
,有时直到运行时我才知道我可能会使用哪一个。