irb возвращает NameError: неинициализированная константа Date

ruby-v2.2.3 должен иметь класс Date, предварительно загруженный в irb, однако, когда я вхожу...

Date NameError: неинициализированная константа Date from (irb):1 из /Users/noah/.rubies/ruby-2.2.3/bin/irb:11:in `'

Почему я должен require Date каждый раз, если он должен быть предварительно загружен в 2.2.3?

4 ответа

Дата не указана как базовый класс в v2.2.3 или текущих базовых классах Ruby v2.3.1, но время есть. Вот некоторые результаты IRb:

$ irb -f
irb(main):001:0> Date.class
NameError: uninitialized constant Date
Did you mean?  Data
  from (irb):1
  from /Users/ttm/.rbenv/versions/2.3.1/bin/irb:11:in `<main>'
irb(main):002:0> Time.class
=> Class
irb(main):003:0> Time.methods(false)
=> [:at, :now, :utc, :gm, :local, :mktime]

Это ограниченный набор методов Time, хотя:

irb(main):002:0> require 'time'
=> true
irb(main):003:0> Time.methods(false)
=> [:at, :now, :utc, :gm, :local, :mktime, :parse, :zone_offset, :strptime, :rfc2822, :rfc822, :httpdate, :xmlschema, :iso8601]

Почему вы говорите Date предварительно загружен? Это не базовый класс, это часть stdlib, поэтому он должен быть обязательным. Time это основной класс вместо.

Насколько мне известно (и как сказал Урсус ),Dateне загружается заранее.

Внимание: Итак, Tilec предложил просто загрузить библиотеку в начало файла, что дало мне (не уверен, что это правда в целом): это дало мнеLoadError: cannot load such file -- Date. Пытающийсяgem install Dateдает мне

      ERROR:  Could not find a valid gem 'Date' (>= 0) in any repository
ERROR:  Possible alternatives: date

Решение: поэтому я предлагаю исправить в нижнем регистре:

      require 'date'

Вы можете попробовать сделать следующее в начале вашего файла:

      require 'Date'
Другие вопросы по тегам