2012-03-14 6 views
43

Utilizzando IRB, perché le Date sono automaticamente caricate, ma DateTime non è il Date &? Devo fare il require 'date', questo non ha senso per me perché pensavo che sia Data che DateTime stessero usando la libreria standard 'date'?Perché la classe Data di Ruby viene caricata automaticamente ma 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

In 1.9.3p125 'Data' non viene caricato automaticamente. –

+1

'Date' non è mai stato caricato automaticamente, probabilmente, più probabilmente' irb', probabilmente lo carica, o carica qualcosa che a sua volta lo carica. – Theo

+1

'Date' non viene caricato automaticamente, dai un'occhiata a questa [domanda] (http://stackoverflow.com/a/11633934/52499). –

risposta

1

Essere un po 'più curioso, ho provato:

$ 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 

Quindi mi fa pensare che si tratta di un problema IRB che automaticamente 'Data' carichi.

+7

Si prega di aggiungere questo alla tua domanda originale ed eliminare questa risposta. –

34

In IRB, includere questa riga: require 'date' quindi sarà possibile utilizzare 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

Ha funzionato per me al momento dell'inizializzazione con require 'date'.

Problemi correlati