2012-03-14 34 views
43

Sử dụng IRB, tại sao Ngày & Các lớp thời gian được tải tự động, nhưng DateTime thì không? Tôi phải require 'date', điều này không có ý nghĩa với tôi bởi vì tôi nghĩ rằng cả Date và DateTime đang sử dụng thư viện chuẩn 'date'?Tại sao lớp Ngày của Ruby tự động được nạp nhưng DateTime thì không?

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

Trong 1,9.3p125 'Ngày' không được tải tự động. –

+1

'Ngày' chưa bao giờ được tải tự động, bạn hoặc nhiều khả năng' irb', có thể tải nó hoặc tải thứ gì đó để tải nó. – Theo

+1

'Ngày' không thực sự được tải tự động, hãy xem [câu hỏi này] (http://stackoverflow.com/a/11633934/52499). –

Trả lời

1

Là một chút tò mò hơn, tôi đã cố gắng:

$ 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 

Vì vậy, nó làm cho tôi nghĩ rằng đó là một vấn đề IRB tự động 'date' tải.

+7

Vui lòng thêm điều này vào câu hỏi ban đầu của bạn và xóa câu trả lời này. –

34

Trong IRB, bao gồm dòng này: require 'date' thì bạn sẽ có thể sử dụng 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

Làm việc cho tôi khi lần đầu khởi tạo với require 'date'.

Các vấn đề liên quan