2012-03-14 11 views
43

IRBを使用すると、なぜ&タイムクラスが自動的にロードされますが、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'は実際には自動的に読み込まれません。この[question](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 

だから、私はそれが自動的に「日付」をロードし、IRBの問題だと思います。

+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'で最初に初期化したときに働いてくれました。

関連する問題