Глобальные переменные
Предопределённые глобальные переменные
Некоторые предопределённые глобальные переменные имеют синонимы, доступные через модуль English. Для каждой такой переменной указан английский синоним.
Чтобы использовать модуль:
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, созданный по результатам совпадения; локален для потока и кадра.
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 — $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.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–2025 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.