【问题标题】:Why is Ruby's Date class automatically loaded but DateTime is not?为什么 Ruby 的 Date 类会自动加载,但 DateTime 不会?
【发布时间】:2012-03-14 15:33:37
【问题描述】:

使用 IRB,为什么 Date & Time 类会自动加载,但 DateTime 不是?我必须require 'date',这对我来说没有意义,因为我认为日期和日期时间都在使用标准库'date'

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

【问题讨论】:

  • 在 1.9.3p125 Date 不会自动加载。
  • Date 从来没有被自动加载过,你,或者更可能是irb,可能会加载它,或者加载一些东西,然后加载它。
  • Date 并没有真正自动加载,看看这个question

标签: ruby


【解决方案1】:

在 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

【讨论】:

    【解决方案2】:

    第一次使用 require 'date' 初始化时为我工作。

    【讨论】:

      【解决方案3】:

      出于好奇,我尝试了:

      $ ruby -e 'puts DateTime.class'
      -e:1:in `<main>': uninitialized constant Object::DateTime (NameError)
      [~, kamilski81@mac]
      $ ruby -e 'puts Date.class'
      -e:1:in `<main>': uninitialized constant Object::Date (NameError)
      $ ruby -e 'puts Time.class'
      Class
      

      所以这让我觉得这是一个自动加载“日期”的 irb 问题。

      【讨论】:

      • 请将此附加到您的原始问题并删除此答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-14
      • 2017-01-27
      • 2023-01-31
      • 1970-01-01
      • 1970-01-01
      • 2020-02-08
      相关资源
      最近更新 更多