gpt4 book ai didi

ruby - Date::today 未定义?

转载 作者:数据小太阳 更新时间:2023-10-29 07:01:00 25 4
gpt4 key购买 nike

为什么只有 Date 类的某些方法没有显式加载:

require 'date'

线?

例如:

irb(main):002:0> Date.today
NoMethodError: undefined method `today' for Date:Class
from (irb):2
from /Users/mwlang/.rvm/rubies/ruby-2.0.0-p0/bin/irb:16:in `<main>'

然后……

irb(main):003:0> require 'date'
=> true

导致...

irb(main):004:0> Date.today
=> #<Date: 2013-04-12 ((2456395j,0s,0n),+0s,2299161j)>

http://ruby-doc.org/stdlib-2.0/libdoc/date/rdoc/Date.html 上的文档似乎没有对此行为提供明确的解释。关于#irc 的评论说它是一个标准库而不是核心库,但核心甚至没有定义 Date 类并且使用 -f(禁止读取 .irbrc)启动 irc 以获得最小负载似乎仍然加载某种基础/核心日期类。

想要对正在发生的事情进行技术解释并引用解释这一点的 Ruby 文档,以便我理解从 Ruby 1.8.7 切换到 Ruby 2.0.0 时遇到的其他此类情况。

最佳答案

您看到的Date 类是在lib/rubygems/specification.rb 中定义的出于兼容性原因:

# date.rb can't be loaded for `make install` due to miniruby
# Date is needed for old gems that stored #date as Date instead of Time.
class Date; end

这是一个空类定义,不提供任何方法或功能。

如果在没有 RubyGems 的情况下启动 IRB,则该 Date 类将消失:

$ ruby --disable-gems -S irb
irb(main):001:0> Date
NameError: uninitialized constant Date

更新

RubyGems 2.4.0 中删除了空的 Date 类:

  • RubyGems no longer defines an empty Date class. Pull Request #948 by Benoit Daloze.

关于ruby - Date::today 未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27841658/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com