Почему класс Ruby Date загружается автоматически, а DateTime — нет?

Почему при использовании IRB классы Date & Time загружаются автоматически, а DateTime — нет? Я должен require 'date', для меня это не имеет смысла, потому что я думал, что и Date, и DateTime используют стандартную библиотеку 'date'?

ruby-1.9.2-p290 :001 > Date
 => Date
ruby-1.9.2-p290 :002 > Time
 => Time
ruby-1.9.2-p290 :003 > DateTime
NameError: uninitialized constant Object::DateTime
    from (irb):3
    from /Users/kamilski81/.rvm/rubies/ruby-1.9.2-p290/bin/irb:16:in `<main>'
ruby-1.9.2-p290 :004 > require 'date'
 => true
ruby-1.9.2-p290 :005 > require 'date'
 => false
ruby-1.9.2-p290 :006 > DateTime
 => DateTime

person Kamilski81    schedule 14.03.2012    source источник
comment
В 1.9.3p125 Date не загружается автоматически.   -  person Sergio Tulentsev    schedule 14.03.2012
comment
Date никогда не загружался автоматически, вы или, что более вероятно, irb, вероятно, загружаете его или загружаете что-то, что, в свою очередь, загружает его.   -  person Theo    schedule 14.03.2012
comment
Date на самом деле не загружается автоматически, взгляните на этот вопрос.   -  person x-yuri    schedule 14.05.2014


Ответы (3)


В IRB включите эту строку: require 'date' тогда вы сможете использовать DateTime.

irb(main):000:0> DateTime.class
NameError: uninitialized constant DateTime
        from (irb):0
        from /path/to/ruby/irb:12:in '(main)'
irb(main):001:0> require 'date'
=> true
irb(main):002:0> DateTime.class
=> Class
person TekuConcept    schedule 26.07.2013

У меня сработало при первой инициализации с помощью require 'date'.

person Nomis    schedule 18.04.2016

Будучи немного более любопытным, я попробовал:

$ ruby -e 'puts DateTime.class'
-e:1:in `<main>': uninitialized constant Object::DateTime (NameError)
[~, kamilski81@mac]
$ ruby -e 'puts Date.class'
-e:1:in `<main>': uninitialized constant Object::Date (NameError)
$ ruby -e 'puts Time.class'
Class

Так что это заставляет меня думать, что это проблема irb, которая автоматически загружает «дату».

person Kamilski81    schedule 14.03.2012
comment
Пожалуйста, добавьте это к исходному вопросу и удалите этот ответ. - person the Tin Man; 14.03.2012