2012-03-14 4 views
43

Usando IRB, ¿por qué la fecha & las clases de hora se cargan automáticamente, pero DateTime no? Tengo que require 'date', esto no tiene sentido para mí porque pensé que tanto Date como DateTime usaban la biblioteca estándar 'date'?¿Por qué la clase Date de Ruby se carga automáticamente pero DateTime no?

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

En 1.9.3p125 'Fecha' no se carga automáticamente. –

+1

'Fecha 'nunca se ha cargado automáticamente, usted, o más probablemente' irb', probablemente lo carga, o carga algo que a su vez lo carga. – Theo

+1

'Date' no se carga realmente automáticamente, eche un vistazo a esta [pregunta] (http://stackoverflow.com/a/11633934/52499). –

Respuesta

1

ser un poco más curioso, he intentado:

$ 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 

Por lo que me hace pensar que se trata de un problema que IRB automáticamente la fecha '' cargas.

+7

Agregue esto a su pregunta original y elimine esta respuesta. –

34

En IRB, incluya esta línea: require 'date' y luego podrá usar 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

Funcionó para mí al inicializar por primera vez con require 'date'.

Cuestiones relacionadas