Spec-Zone.ru › Ruby 3.4

Глобальные переменные

Предопределённые глобальные переменные

Некоторые предопределённые глобальные переменные имеют синонимы, доступные через модуль 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API