Ruby on rails 如何在Rails中找到对象补丁的源?

Ruby on rails 如何在Rails中找到对象补丁的源?,ruby-on-rails,introspection,monkeypatching,rails-console,Ruby On Rails,Introspection,Monkeypatching,Rails Console,在我的Rails应用程序中,字符串变得足够聪明,可以将自己与日期进行比较: $ rails console Loading development environment (Rails 5.2.4.2) 2.6.6 :001 > '2020-01-01' < Time.now => true $rails控制台 加载开发环境(Rails 5.2.4.2) 2.6.6:001>“2020-01-01”正确 而在常规irb中,这失败了: 2.6.6 :001 > '2

在我的Rails应用程序中,字符串变得足够聪明,可以将自己与日期进行比较:

$ rails console
Loading development environment (Rails 5.2.4.2)
2.6.6 :001 > '2020-01-01' < Time.now
 => true 
$rails控制台
加载开发环境(Rails 5.2.4.2)
2.6.6:001>“2020-01-01”正确
而在常规irb中,这失败了:

2.6.6 :001 > '2020-01-01' < Time.now
Traceback (most recent call last):
        8: from /usr/share/rvm/gems/ruby-2.6.6/bin/ruby_executable_hooks:22:in `<main>'
        7: from /usr/share/rvm/gems/ruby-2.6.6/bin/ruby_executable_hooks:22:in `eval'
        6: from /usr/share/rvm/rubies/ruby-2.6.6/bin/irb:23:in `<main>'
        5: from /usr/share/rvm/rubies/ruby-2.6.6/bin/irb:23:in `load'
        4: from /usr/share/rvm/rubies/ruby-2.6.6/lib/ruby/gems/2.6.0/gems/irb-1.0.0/exe/irb:11:in `<top (required)>'
        3: from (irb):6
        2: from (irb):6:in `rescue in irb_binding'
        1: from (irb):6:in `<'
ArgumentError (comparison of String with Time failed)
2.6.6:001>“2020-01-01”1:from(irb):6:in`这是一个有趣的问题,下面是我认为正在发生的事情。。。
我认为对字符串调用
some\u string

然后调用
Time#compare_with _compression
方法(在active_support/core_ext/Time/calculations.rb中),结果是对字符串参数调用方法
to_datetime

如果在activesupport/core\u ext/string/conversions中的
to_datetime
方法中放入
调试器
行,则可以跟踪调用堆栈并查看导致我解释的跟踪