Глобальные переменные
Предопределённые глобальные переменные
Некоторые предопределённые глобальные переменные имеют синонимы, доступные через модуль Engish. Для каждой из них указан английский синоним.
Для использования модуля:
require 'English'
Исключения
$! (Исключение)
Содержит объект Exception, установленный методом Kernel#raise:
begin
raise RuntimeError.new('Boo!')
rescue RuntimeError
p $!
end
Вывод:
#<RuntimeError: Boo!>
English - $ERROR_INFO
$@ (Стек вызовов)
То же, что и $!.backtrace; возвращает массив позиций стека вызовов:
begin
raise RuntimeError.new('Boo!')
rescue RuntimeError
pp $@.take(4)
end
Вывод:
["(irb):338:in `<top (required)>'", "/snap/ruby/317/lib/ruby/3.2.0/irb/workspace.rb:119:in `eval'", "/snap/ruby/317/lib/ruby/3.2.0/irb/workspace.rb:119:in `evaluate'", "/snap/ruby/317/lib/ruby/3.2.0/irb/context.rb:502:in `evaluate'"]
English - $ERROR_POSITION.
Сопоставление с образцом
Эти глобальные переменные хранят информацию о последнем успешном совпадении в текущем контексте.
Подробнее и примеры см. в Глобальные переменные Regexp.
$~ (MatchData)
Объект MatchData, созданный из совпадения; локальный для потока и локальный для фрейма.
English - $LAST_MATCH_INFO.
$& (Совпавший подстрока)
Совпавшая строка.
English - $MATCH.
$` (Подстрока перед совпадением)
Строка слева от совпадения.
English - $PREMATCH.
$' (Подстрока после совпадения)
Строка справа от совпадения.
English - $POSTMATCH.
$+ (Последняя совпавшая группа)
Последняя совпавшая группа.
English - $LAST_PAREN_MATCH.
$1, $2, и т. д. (Совпавшая группа)
Для $n n-я группа совпадения.
Нет английского аналога.
Разделители
$/ (Разделитель записей входных данных)
Разделитель записей входных данных, по умолчанию перевод строки.
English - $INPUT_RECORD_SEPARATOR, $RS.
Алиас $-0.
$; (Разделитель полей входных данных)
Разделитель полей входных данных, по умолчанию nil.
English - $FIELD_SEPARATOR, $FS.
Алиас $-F.
$\ (Разделитель записей выходных данных)
Разделитель записей выходных данных, по умолчанию nil.
English - $OUTPUT_RECORD_SEPARATOR, $ORS.
Потоки
$stdin (Стандартный ввод)
Текущий поток стандартного ввода; по умолчанию:
$stdin # => #<IO:<STDIN>>
$stdout (Стандартный вывод)
Текущий поток стандартного вывода; по умолчанию:
$stdout # => #<IO:<STDOUT>>
$stderr (Стандартная ошибка)
Текущий поток стандартной ошибки; по умолчанию:
$stderr # => #<IO:<STDERR>>
$< (ARGF или $stdin)
Указывает на поток ARGF, если он не пустой, иначе на поток $stdin; только чтение.
English - $DEFAULT_INPUT.
$> (По умолчанию стандартный вывод)
Поток вывода, по умолчанию $stdout.
English - <tt>$DEFAULT_OUTPUT
$. (Позиция ввода)
Позиция ввода (номер строки) в недавно прочитанном потоке.
English - $INPUT_LINE_NUMBER, $NR
$_ (Последняя прочитанная строка)
Строка (строка) из недавно прочитанного потока.
English - $LAST_READ_LINE.
Процессы
$0
Изначально содержит имя выполняемого скрипта; может быть переназначено.
$* (ARGV)
Указывает на ARGV.
English - $ARGV.
$$ (Process ID)
ID процесса текущего процесса. То же, что и Process.pid.
English - $PROCESS_ID, $PID.
$? (Статус дочернего процесса)
Изначально nil, в противном случае — объект Process::Status, созданный для завершившегося дочернего процесса; локальный для потока.
English - $CHILD_STATUS.
$LOAD_PATH (Путь загрузки)
Содержит массив путей, которые будут просматриваться методами Kernel#load и Kernel#require.
Singleton метод $LOAD_PATH.resolve_feature_path(feature) возвращает:
-
[:rb, path], гдеpath— путь к файлу Ruby, подлежащему загрузке для данногоfeature. -
[:so+ path], гдеpath— путь к объектному файлу общего использования, подлежащему загрузке для данногоfeature. -
nilесли такогоfeatureиpathнет.
Примеры:
$LOAD_PATH.resolve_feature_path('timeout')
# => [:rb, "/snap/ruby/317/lib/ruby/3.2.0/timeout.rb"]
$LOAD_PATH.resolve_feature_path('date_core')
# => [:so, "/snap/ruby/317/lib/ruby/3.2.0/x86_64-linux/date_core.so"]
$LOAD_PATH.resolve_feature_path('foo')
# => nil
Алиас $: и $-I.
$LOADED_FEATURES
Содержит массив путей к загруженным файлам:
$LOADED_FEATURES.take(10) # => ["enumerator.so", "thread.rb", "fiber.so", "rational.so", "complex.so", "ruby2_keywords.rb", "/snap/ruby/317/lib/ruby/3.2.0/x86_64-linux/enc/encdb.so", "/snap/ruby/317/lib/ruby/3.2.0/x86_64-linux/enc/trans/transdb.so", "/snap/ruby/317/lib/ruby/3.2.0/x86_64-linux/rbconfig.rb", "/snap/ruby/317/lib/ruby/3.2.0/rubygems/compatibility.rb"]
Алиас $".
Отладка
$FILENAME
Значение, возвращаемое методом ARGF.filename.
$DEBUG
Изначально true если опция командной строки -d или --debug указана, в противном случае изначально false; может быть установлено в любое из этих значений во время выполнения программы.
Когда true, печатает каждое поднятое исключение в $stderr.
Алиас $-d.
$VERBOSE
Изначально true если опция командной строки -v или -w указана, в противном случае изначально false; может быть установлено в любое из этих значений, или в nil, во время выполнения программы.
Когда true, включает Ruby предупреждения.
Когда nil, отключает предупреждения, включая те, что исходят от Kernel#warn.
Алиас $-v и $-w.
Другие переменные
$-a
Указывает, была ли задана опция командной строки -a; только чтение.
$-i
Содержит расширение, заданное с опцией командной строки -i, или nil если нет.
Псевдоним метода ARGF.inplace_mode.
$-l
Указывает, была ли установлена опция командной строки -l; только чтение.
$-p
Указывает, была ли задана опция командной строки -p; только чтение.
Устаревшие
$=
$,
Предопределённые глобальные константы
Потоки
STDIN
Поток стандартного ввода (значение по умолчанию для $stdin):
STDIN # => #<IO:<STDIN>>
STDOUT
Поток стандартного вывода (значение по умолчанию для $stdout):
STDOUT # => #<IO:<STDOUT>>
STDERR
Поток стандартной ошибки (значение по умолчанию для $stderr):
STDERR # => #<IO:<STDERR>>
Среда
ENV
Хэш, содержащий текущие имена и значения переменных среды:
ENV.take(5) # => [["COLORTERM", "truecolor"], ["DBUS_SESSION_BUS_ADDRESS", "unix:path=/run/user/1000/bus"], ["DESKTOP_SESSION", "ubuntu"], ["DISPLAY", ":0"], ["GDMSESSION", "ubuntu"]]
ARGF
Виртуальное объединение файлов, указанных в командной строке, или из $stdin если не было указано ни одного файла, "-" указано, или после того, как все файлы были прочитаны.
ARGV
Массив переданных аргументов командной строки.
TOPLEVEL_BINDING
Связывание Binding верхнего уровня:
TOPLEVEL_BINDING # => #<Binding:0x00007f58da0da7c0>
RUBY_VERSION
Версия Ruby:
RUBY_VERSION # => "3.2.2"
RUBY_RELEASE_DATE
Строка даты выпуска:
RUBY_RELEASE_DATE # => "2023-03-30"
RUBY_PLATFORM
Идентификатор платформы:
RUBY_PLATFORM # => "x86_64-linux"
RUBY_PATCHLEVEL
Целое число уровня исправления для данной версии Ruby:
RUBY_PATCHLEVEL # => 53
Для сборки разработки уровень исправления будет -1.
RUBY_REVISION
Хэш git коммита для данного Ruby:
RUBY_REVISION # => "e51014f9c05aa65cbf203442d37fef7c12390015"
RUBY_COPYRIGHT
Строка авторских прав:
RUBY_COPYRIGHT # => "ruby - Copyright (C) 1993-2023 Yukihiro Matsumoto"
RUBY_ENGINE
Имя реализации Ruby:
RUBY_ENGINE # => "ruby"
RUBY_ENGINE_VERSION
Версия реализации Ruby:
RUBY_ENGINE_VERSION # => "3.2.2"
RUBY_DESCRIPTION
Описание реализации Ruby:
RUBY_DESCRIPTION # => "ruby 3.2.2 (2023-03-30 revision e51014f9c0) [x86_64-linux]"
Встроенные данные
DATA
Определяется только в том случае, если программа имеет эту строку:
__END__
При определении DATA является объектом File, содержащим строки, следующие за __END__, расположенными в начале этих строк:
p DATA
DATA.each_line { |line| p line }
__END__
Вывод:
#<File:t.rb> "Foo\n" "Bar\n" "Baz\n"
Ruby Core © 1993–2022 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.