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'