2012-03-14 3 views
43

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

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 
+5

В 1.9.3p125 'Date' не загружается автоматически. –

+1

'Date' никогда не загружался автоматически, вы или, скорее всего,' irb', возможно, загружает его или загружает то, что в свою очередь загружает его. – Theo

+1

'Date' на самом деле не загружается автоматически, посмотрите на это [вопрос] (http://stackoverflow.com/a/11633934/52499). –

ответ

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 

Так что заставляет меня думать, что это КРП вопрос, который автоматически «дата» нагрузки.

+7

Приложите это к исходному вопросу и удалите этот ответ. –

34

В 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

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

Смежные вопросы