Почему класс 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
Ответы
Ответ 1
Будучи немного более любопытным, я пробовал:
$ ruby -e 'puts DateTime.class'
-e:1:in `<main>': uninitialized constant Object::DateTime (NameError)
[~, [email protected]]
$ ruby -e 'puts Date.class'
-e:1:in `<main>': uninitialized constant Object::Date (NameError)
$ ruby -e 'puts Time.class'
Class
Поэтому мне кажется, что это проблема irb, которая автоматически загружает "дату".
Ответ 2
В 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
Ответ 3
Работала для меня при первой инициализации с помощью require 'date'
.