Руководства по командной строке

Man » Онлайн-руководство ruby - подробная онлайн-документация для страницы руководства ruby

🌍
ruby — Интерпретируемый объектно-ориентированный язык сценариев

СИНТАКСИС

ruby     [--copyright]     [--version]     [-SUacdlnpswvy]     [-0[octal]]     [-C     directory]
[-E  external[:internal]]  [-F[pattern]]  [-I  directory]  [-K[c]]  [-T[level]]  [-W[level]]
[-e  command]  [-i[extension]]  [-r  library]  [-x[directory]]  [--{enable|disable}-FEATURE]
[--dump=target] [--verbose] [--crash-report=template] [--] [program_file] [argument ...]

ОПИСАНИЕ

Ruby — это интерпретируемый язык сценариев для быстрой и простой объектно-ориентированной разработки. Он имеет множество функций для обработки текстовых файлов и выполнения задач системного управления (как в Perl). Он прост, понятен и расширяем.

Если вам нужен язык для простой объектно-ориентированной разработки, или вам не нравится сложность Perl, или вам нравится концепция LISP, но вы не любите слишком много скобок, то Ruby может быть вашим языком.

ОСОБЕННОСТИ

Особенности Ruby:

Интерпретируемый Ruby — это интерпретируемый язык, поэтому вам не нужно перекомпилировать программы, написанные на Ruby, чтобы их выполнить.

Переменные не имеют типа (динамическая типизация) Переменные в Ruby могут содержать данные любого типа. Вам не нужно беспокоиться о типизации переменных. Следовательно, проверка во время компиляции менее строгая.

Нет необходимости в объявлении Вы можете использовать переменные в своих программах Ruby без каких-либо объявлений. Имена переменных указывают на их область видимости: глобальная, классовая, экземпляра или локальная.

Простой синтаксис Ruby имеет простой синтаксис, слегка заимствованный из Eiffel.

Отсутствие управления памятью на уровне пользователя В Ruby реализовано автоматическое управление памятью. Объекты, на которые больше ниоткуда не ссылаются, автоматически собираются сборщиком мусора, встроенным в интерпретатор.

Все является объектом Ruby — это чисто объектно-ориентированный язык, таким он был с момента своего создания. Даже такие базовые данные, как целые числа, рассматриваются как объекты.

Классы, наследование и методы Будучи объектно-ориентированным языком, Ruby, естественно, имеет такие базовые функции, как классы, наследование и методы.

Методы для отдельных объектов В Ruby есть возможность определять методы для определенных объектов. Например, вы можете определить действие «нажатие кнопки» для определенного виджета, определив метод для этой кнопки. Или, если хотите, вы можете создать свою собственную систему прототипного наследования с использованием методов для отдельных объектов.

Подключение через модули В Ruby намеренно отсутствует множественное наследование, так как это может вызывать путаницу. Вместо этого в Ruby есть возможность совместно использовать реализации в иерархии наследования. Это часто называют «подключением».

Итераторы В Ruby есть итераторы для абстракции циклов.


Замыкания В Ruby можно представить процедуру в виде объекта.

Обработка текста и регулярные выражения В Ruby есть множество функций для обработки текста, как и в Perl.

M17N, независимость от набора символов

Ruby поддерживает многоязыковое программирование. Легко обрабатывать тексты, написанные на разных естественных языках и закодированные разными кодировками, без привязки к Unicode.

Большие числа Благодаря встроенным большим числам вы можете, например, вычислить факториал(400).

Рефлексия и предметно-ориентированные языки Класс также является экземпляром класса Class. Определение классов и методов является выражением, как и 1+1. Таким образом, ваши программы могут даже писать и изменять программы. Вы можете написать свое приложение на собственном языке программирования поверх Ruby.

Обработка исключений Как в Java(tm).

Прямой доступ к операционной системе Ruby может использовать большинство системных вызовов Unix, которые часто используются в системном программировании.

Динамическая загрузка В большинстве систем Unix можно загружать объектные файлы в интерпретатор Ruby «на лету».

Богатые библиотеки В дополнение к «встроенным библиотекам» и «стандартным библиотекам», которые поставляются вместе с Ruby, существует огромное количество сторонних библиотек («gems»), доступных через систему управления пакетами под названием «RubyGems», а именно команда gem(1). Посетите RubyGems.org (https://rubygems.org/), чтобы найти нужные вам gems, и изучите GitHub (https://github.com/), чтобы узнать, как они разрабатываются и используются.

ОПЦИИ

Интерпретатор Ruby принимает следующие параметры командной строки (переключатели). Они очень похожи на параметры perl(1).

--copyright    Выводит уведомление об авторских правах и немедленно завершает работу без запуска какой-либо программы.

--version      Выводит версию интерпретатора Ruby и немедленно завершает работу без запуска какой-либо программы.

-0[octal]      (Цифра «ноль»). Указывает разделитель входных записей ($/) в виде восьмеричного числа.

Если цифра не указана, в качестве разделителя используется нулевой символ. Другие переключатели могут следовать за цифрами. -00 переводит Ruby в режим абзаца. -0777 заставляет Ruby читать весь файл сразу как одну строку, поскольку не существует допустимого символа с таким значением.

-C directory
-X directory   Заставляет Ruby переключиться в указанный каталог.

-E external[:internal]
--encoding external[:internal]

Указывает значения по умолчанию для внешних и внутренних кодировок. Значения должны быть разделены двоеточием (:).

Вы можете опустить значение для внутренних кодировок, тогда значение (Encoding.default_internal) будет равно nil.

--external-encoding=encoding
--internal-encoding=encoding

Укажите внешнюю или внутреннюю кодировку по умолчанию.

-F pattern     Указывает разделитель входных полей ($;).

-I directory   Используется для указания Ruby, где загружать файлы библиотек. Путь к каталогу будет добавлен в переменную load-path ($:).

-K kcode       Указывает кодировку KANJI (японский). Значение по умолчанию для кодировок скриптов (__ENCODING__) и внешних кодировок (Encoding.default_external) будет указанным. kcode может быть одним из.

e       EUC-JP

s       Windows-31J (CP932)

u       UTF-8

n       ASCII-8BIT (BINARY)

-S             Заставляет Ruby использовать переменную окружения PATH для поиска скрипта, если его имя не начинается со слеша. Это используется для эмуляции #! на машинах, которые не поддерживают его, следующим образом:

#! /usr/local/bin/ruby
# Эта строка делает следующую строку комментарием в Ruby \
exec /usr/local/bin/ruby -S $0 $*

На некоторых системах $0 не всегда содержит полный путь, поэтому вам нужен переключатель -S, чтобы указать Ruby искать скрипт, если это необходимо (для обработки пробелов и т. д.). Более подходящей конструкцией, чем $*, была бы ${1+"$@"}, но она не работает, если скрипт интерпретируется csh(1).

-T[level=1]    Включает проверки на "загрязнение" на указанном уровне (по умолчанию 1).

-U             Устанавливает значение по умолчанию для внутренних кодировок (Encoding.default_internal) в UTF-8.

-W[level=2]    Включает подробный режим на указанном уровне без вывода сообщения о версии в начале. Уровень может быть:

0      Подробный режим — "тихий". Устанавливает $VERBOSE в nil.

1      Подробный режим — "средний". Устанавливает $VERBOSE в false.

2 (по умолчанию) Подробный режим — "подробный". Устанавливает $VERBOSE в true. -W2 то же самое, что и -w

-a             Включает автоматический режим разделения строк при использовании с -n или -p. В автоматическом режиме разделения строк Ruby выполняет ` $F = $_.split` в начале каждого цикла.

--backtrace-limit=num
Ограничивает максимальную длину трассировок до num строк (по умолчанию -1, что означает отсутствие ограничений).

-c             Заставляет Ruby проверять синтаксис скрипта и завершать работу без его выполнения. Если синтаксических ошибок нет, Ruby выводит "Syntax OK" в стандартный вывод.

-d
--debug        Включает режим отладки. $DEBUG будет установлено в true.

-e command     Указывает скрипт из командной строки, при этом Ruby не будет искать остальные аргументы на предмет имени файла скрипта.

-h
--help         Выводит сводку опций.

-i extension   Указывает режим редактирования "на месте". Расширение, если оно указано, добавляется к старому имени файла, чтобы создать резервную копию. Например:

% echo matz > /tmp/junk
% cat /tmp/junk
matz
% ruby -p -i.bak -e '$_.upcase!' /tmp/junk
% cat /tmp/junk
MATZ
% cat /tmp/junk.bak
matz

-l             (Строчная буква "l".) Включает автоматическую обработку завершения строк, что означает, что сначала устанавливается $\ в значение $/, а затем каждая прочитанная строка обрезается с помощью chomp!.

-n             Заставляет Ruby предполагать следующий цикл вокруг вашего скрипта, что заставляет его итерировать по именам файлов аргументов, примерно как sed -n или awk.

while gets
...
end

-p             Действует в основном так же, как переключатель -n, но выводит значение переменной $_ в конце каждого цикла. Например:

% echo matz | ruby -p -e '$_.tr! "a-z", "A-Z"'
MATZ

-r library     Заставляет Ruby загружать библиотеку с помощью require. Это полезно при использовании -n или -p.

-s             Включает обработку параметров командной строки, идущих после имени скрипта, но перед любыми аргументами файлов (или перед `--`). Все найденные параметры удаляются из `ARGV` и соответствующие переменные устанавливаются в скрипте. Например:

#! /usr/local/bin/ruby -s
# выводит "true", если скрипт был вызван с параметром `-xyz`.
print "true\n" if $xyz

-v             Включает подробный режим. Ruby выводит свою версию в начале и устанавливает переменную `$VERBOSE` в `true`. Некоторые методы выводят дополнительные сообщения, если эта переменная установлена в `true`. Если этот параметр указан и другие параметры отсутствуют, Ruby завершает работу после вывода своей версии.

-w             Включает подробный режим без вывода сообщения о версии в начале. Устанавливает переменную `$VERBOSE` в `true`.

-x[directory]  Сообщает Ruby, что скрипт встроен в сообщение. Ведущий мусор отбрасывается до первой строки, начинающейся с `"#!` и содержащей строку `"ruby"`. Все значимые параметры в этой строке будут применены. Конец скрипта должен быть указан либо `EOF`, `^D` (Ctrl+D), `^Z` (Ctrl+Z), либо зарезервированным словом `__END__`. Если указано имя каталога, Ruby переключится в этот каталог перед выполнением скрипта.

-y
--yydebug      Этот параметр не гарантированно совместим.

Включает режим отладки компилятора. Ruby будет выводить множество сообщений о внутреннем состоянии во время компиляции. Используйте этот параметр только в том случае, если вы собираетесь отлаживать интерпретатор Ruby.

--disable-FEATURE
--enable-FEATURE
Отключает (или включает) указанную ФУНКЦИЮ.
--disable-gems
--enable-gems      Отключает (или включает) библиотеки RubyGems. По умолчанию Ruby загружает последнюю версию каждой установленной gem. Константа `Gem` имеет значение `true`, если RubyGems включены, и `false`, если выключены.

--disable-rubyopt
--enable-rubyopt   Игнорирует (или учитывает) переменную окружения `RUBYOPT`. По умолчанию Ruby учитывает эту переменную.

--disable-all
--enable-all      Отключает (или включает) все функции.

--dump=target  Выводит некоторую информацию.

Выводит указанный параметр. `target` может быть одним из следующих:

version Выводит описание версии (то же, что и `--version`).

usage   Выводит краткое сообщение об использовании (то же, что и `-h`).

help    Показывает подробное сообщение о справке (то же, что и `--help`).

syntax  Проверяет синтаксис (то же, что и `-c --yydebug`).

Или одним из следующих, которые предназначены для отладки интерпретатора:

yydebug                 Включает режим отладки компилятора (то же, что и `--yydebug`).

parsetree               Выводит текстовое представление AST Ruby для программы.

parsetree_with_comment  Выводит текстовое представление AST Ruby для программы, но с добавлением исходного кода Ruby к каждому узлу.

insns                   Выводит список дизассемблированных инструкций байт-кода.

insns_without_opt       Выводит список дизассемблированных инструкций байт-кода до применения различных оптимизаций.

--verbose      Включает подробный режим без вывода сообщения о версии в начале. Устанавливает переменную `$VERBOSE` в `true`. Если этот параметр указан и аргументы скрипта (файл скрипта или параметры `-e`) отсутствуют, Ruby немедленно завершает работу.

--crash-report=template
Указывает шаблон пути для сохранения отчета об ошибке. См. переменную окружения `RUBY_CRASH_REPORT` для получения подробной информации.

ПЕРЕМЕННЫЕ ОКРУЖЕНИЯ

RUBYLIB Список каталогов, разделенных двоеточиями, которые добавляются в путь загрузки библиотек Ruby ($:).
Каталоги из этой переменной окружения ищутся перед стандартным путем загрузки.

г.:
RUBYLIB="$HOME/lib/ruby:$HOME/lib/rubyext"

RUBYOPT Дополнительные опции Ruby.

г.
RUBYOPT="-w -Ke"

Обратите внимание, что `RUBYOPT` может содержать только `-d`, `-E`, `-I`, `-K`, `-r`, `-T`, `-U`, `-v`, `-w`, `-W`, `--debug`, `--disable-FEATURE` и `--enable-FEATURE`.

RUBYPATH    Список каталогов, разделенных двоеточиями, в которых Ruby ищет программы Ruby при указании флага `-S`. Эта переменная предшествует переменной окружения `PATH`.

RUBYSHELL   Путь к системной командной оболочке. Эта переменная окружения включена только для платформ mswin32, mingw32 и OS/2. Если эта переменная не определена, Ruby обращается к `COMSPEC`.

PATH    Ruby обращается к переменной окружения `PATH` при вызове `Kernel#system`.

И Ruby зависит от некоторых переменных окружения, связанных с RubyGems, если RubyGems не отключен. См. справку gem(1) ниже.

% gem help

ПЕРЕМЕННЫЕ ОКРУЖЕНИЯ GC

Сборщик мусора Ruby (GC) отслеживает объекты в слотах фиксированного размера, но каждый объект может иметь дополнительные выделения памяти, обрабатываемые семейством функций malloc стандартной библиотеки C (malloc(3), calloc(3) и realloc(3)). В этой документации под «кучей» понимается куча объектов Ruby фиксированного размера, а под «malloc» — дополнительные выделения памяти, обычно называемые «кучей процесса». Таким образом, существует как минимум два возможных способа запуска GC:

1   Достижение лимита объектов.

2   Достижение лимита `malloc`.

В Ruby 2.1 был представлен генерационный GC, и лимиты разделены на молодые и старые поколения, что обеспечивает два дополнительных способа запуска GC:

3   Достижение лимита старых объектов.

4   Достижение лимита старого `malloc`.

В настоящее время существует 4 возможных области, в которых GC можно настроить с помощью следующих 11 переменных окружения: RUBY_GC_HEAP_INIT_SLOTS Начальное количество выделяемых слотов. Применяется ко всем размерам слотов. Представлено в Ruby 2.1, по умолчанию: 10000.

RUBY_GC_HEAP_%d_INIT_SLOTS  Начальное выделение слотов в определенной куче. Доступные кучи можно найти в ключах `GC.stat_heap`. Представлено в Ruby 3.3.

RUBY_GC_HEAP_FREE_SLOTS Подготовьте как минимум это количество слотов после GC. Выделите это количество слотов, если слотов недостаточно. Представлено в Ruby 2.1, по умолчанию: 4096.

RUBY_GC_HEAP_GROWTH_FACTOR  Увеличьте скорость выделения слотов кучи на этот коэффициент. Представлено в Ruby 2.1, по умолчанию: 1.8, минимум: 1.0 (без увеличения).

RUBY_GC_HEAP_GROWTH_MAX_SLOTS Предельное значение скорости выделения, ограничивающее количество слотов, чтобы предотвратить чрезмерное выделение памяти из-за
RUBY_GC_HEAP_GROWTH_FACTOR. Введено в Ruby 2.1, по умолчанию: 0 (без ограничения)

RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR Выполняет полную сборку мусора, когда количество старых объектов превышает R * N, где R — этот коэффициент, а N — количество старых объектов после последней полной сборки мусора. Введено в Ruby 1.1, по умолчанию: 2.0

RUBY_GC_MALLOC_LIMIT Начальный предел выделения памяти для молодого поколения из пула malloc. Сборка мусора запускается, когда этот предел достигнут. По умолчанию: 16 МБ.

RUBY_GC_MALLOC_LIMIT_MAX Максимальный предел выделения памяти для молодого поколения из пула malloc перед запуском сборки мусора. Предотвращает чрезмерный рост malloc из-за RUBY_GC_MALLOC_LIMIT_GROWTH_FACTOR. Введено в Ruby 2.1, по умолчанию: 32 МБ.

RUBY_GC_MALLOC_LIMIT_GROWTH_FACTOR Увеличивает предел выделения памяти для молодого поколения, уменьшая частоту сборок мусора, но увеличивая рост malloc до достижения значения RUBY_GC_MALLOC_LIMIT_MAX. Введено в Ruby 1.1, по умолчанию: 1.4, минимум: 1.0 (без роста).

RUBY_GC_OLDMALLOC_LIMIT Начальный предел выделения памяти для старого поколения из пула malloc. Полная сборка мусора запускается, когда этот предел достигнут. Введено в Ruby 2.1, по умолчанию: 16 МБ.

RUBY_GC_OLDMALLOC_LIMIT_MAX Максимальный предел выделения памяти для старого поколения из пула malloc перед запуском полной сборки мусора. Предотвращает чрезмерный рост malloc из-за RUBY_GC_OLDMALLOC_LIMIT_GROWTH_FACTOR. Введено в Ruby 2.1, по умолчанию: 128 МБ.

RUBY_GC_OLDMALLOC_LIMIT_GROWTH_FACTOR Увеличивает предел выделения памяти для старого поколения, уменьшая частоту полных сборок мусора, но увеличивая рост malloc до достижения значения RUBY_GC_OLDMALLOC_LIMIT_MAX. Введено в Ruby 2.1, по умолчанию: 1.2, минимум: 1.0 (без роста).

ПАРАМЕТРЫ СТЕКА

Параметры стека зависят от реализации и могут меняться в разных версиях Ruby. Виртуальный стек используется для чистого кода Ruby и управляется виртуальной машиной. Аппаратный стек используется операционной системой, и его использование зависит от C-расширений, а также от параметров компилятора C. Использование меньших значений для этих параметров может позволить приложениям поддерживать большее количество волокон или потоков; но увеличивает вероятность возникновения исключений SystemStackError и сбоев сегментации (SIGSEGV). Эти переменные среды доступны, начиная с Ruby 2.0.0. Все значения указываются в байтах.

RUBY_THREAD_VM_STACK_SIZE Размер виртуального стека, используемый при создании потока. По умолчанию: 524288 (32-битный процессор) или 1048575 (64-битный).

RUBY_THREAD_MACHINE_STACK_SIZE Размер аппаратного стека, используемый при создании потока. По умолчанию: 524288 или 1048575.

RUBY_FIBER_VM_STACK_SIZE Размер виртуального стека, используемый при создании волокна. По умолчанию: 65536 или 131072.

RUBY_FIBER_MACHINE_STACK_SIZE Размер аппаратного стека, используемый при создании волокна. По умолчанию: 262144 или 524288.

ПАРАМЕТРЫ ОТЧЕТОВ ОБ ОШИБКАХ

RUBY_CRASH_REPORT Шаблон пути для сохранения отчета об ошибке. По умолчанию: отсутствует.

Именование файлов отчетов об ошибках

Шаблон может содержать спецификаторы % которые заменяются следующими значениями при создании файла отчета об ошибке:

%%    Один символ %.
%e    Имя исполняемого файла.
%E    Путь к исполняемому файлу, при этом символы косой черты (/) заменяются на восклицательные знаки (!).
%f    Имя программы, $0.
%F    Путь к программе, $0, при этом символы косой черты (/) заменяются на восклицательные знаки (!).
%p    Идентификатор процесса (PID) сгенерировавшего дамп.
%t    Время создания дампа, выраженное в секундах с начала эпохи (1970-01-01 00:00:00 +0000 (UTC)).
%NNN  Символьный код в восьмеричной системе счисления.

Один символ % в конце шаблона удаляется из имени файла дампа, а также удаляется комбинация символа % с любым другим символом, отличным от перечисленных выше. Все остальные символы в шаблоне становятся буквальной частью имени файла дампа. В шаблоне могут быть символы /, которые интерпретируются как разделители имен каталогов.

Перенаправление отчетов об ошибках в программу

Если первый символ этого файла является символом вертикальной черты (|), то остальная часть строки интерпретируется как командная строка для программы (или скрипта), которая должна быть выполнена.

Шаблон перенаправления разбивается на пробелы для создания списка аргументов перед расширением параметров шаблона.

ССЫЛКИ

[https://www.ruby-lang.org/] Официальный веб-сайт.
[https://www.ruby-toolbox.com/] Всеобъемлющий каталог библиотек Ruby.

СООБЩЕНИЕ ОБ ОШИБКАХ

О проблемах безопасности следует сообщать по электронной почте на [_]. Сообщения об обнаруженных проблемах будут опубликованы после их исправления.

Другие ошибки и запросы на добавление новых функций можно сообщать через систему отслеживания ошибок Ruby [https://bugs.ruby-lang.org/]. Не сообщайте об ошибках безопасности через эту систему, поскольку она немедленно публикует информацию об ошибках.

АВТОРЫ

Ruby разработан и реализован Юкихиро Мацумото [_].

Список участников разработки Ruby можно найти по адресу [https://github.com/ruby/ruby/graphs/contributors].