Почему класс Date в Ruby загружается автоматически, а DateTime - нет? - PullRequest
50 голосов
/ 14 марта 2012

Почему при использовании 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

Ответы [ 3 ]

38 голосов
/ 26 июля 2013

В 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
4 голосов
/ 18 апреля 2016

Работал для меня при первой инициализации с require 'date'.

2 голосов
/ 14 марта 2012

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

$ 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, которая автоматически загружает 'date'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...