Установка, irb и первая программа

Прежде чем писать настоящий код, нужно научиться его запускать. У Ruby два главных режима: интерактивная консоль для экспериментов и обычные скрипты для готовых программ.
Суть: irb — это «живая» консоль, где каждая строка сразу выполняется и показывает результат; файлы .rb запускаются командой ruby имя.rb и нужны для законченных программ.

Главное правило начинающего: ставьте Ruby не из системного пакета, а через менеджер версий. Системный Ruby в macOS или Linux часто старый и его опасно менять. Менеджеры mise, rbenv и asdf позволяют держать несколько версий и переключаться между проектами одной командой.

# установка свежего Ruby через mise
mise use -g [email protected]
ruby -v          # проверяем версию
# => ruby 3.4.0 ...

# запуск интерактивной консоли
irb

Разбор: первая программа

Классика жанра — вывести приветствие. В Ruby это одна строка, без обязательного main, точек с запятой и объявлений типов.

# hello.rb
puts "Привет, Ruby!"
name = "Эрнест"
puts "Рад знакомству, #{name}"

Запускаем файл командой ruby hello.rb. Метод puts печатает строку и переводит курсор на новую строку. Конструкция #{...} внутри двойных кавычек — это интерполяция: Ruby вычисляет выражение в скобках и вставляет результат в строку. Это первый инструмент, которым вы будете пользоваться постоянно.

Как работает под капотом

В irb работает цикл REPL: Read (прочитать строку) — Eval (вычислить) — Print (показать результат) — Loop (повторить). Поэтому консоль показывает значение каждого выражения после стрелки =>, даже если вы ничего не печатали через puts. В файле же ничего не выводится автоматически — там вы сами решаете, что показать пользователю.

       irb (REPL)                файл script.rb
   ------------------          --------------------
   ты пишешь строку            ты пишешь весь файл
        |                            |
   [Read]  читает                ruby script.rb
   [Eval]  вычисляет                  |
   [Print] печатает => ...       исполняет сверху вниз
   [Loop]  ждёт следующую        вывод только из puts/print

Разница принципиальная: irb печатает значение последнего выражения сам, а скрипт молчит, пока вы явно не попросите вывод. Новички часто путаются, почему «в консоли видно, а в файле нет».

Частые ошибки

  • Одинарные кавычки для интерполяции. 'Привет #{name}' выведет текст буквально — интерполяция работает только в двойных кавычках.
  • Путать puts, print и p. puts добавляет перевод строки, print — нет, p печатает «отладочное» представление объекта (со кавычками у строк).
  • Редактировать системный Ruby. Это может сломать утилиты ОС. Всегда работайте через менеджер версий.

Best practices

  • Держите irb открытым в соседнем окне и проверяйте идеи на лету.
  • Для отладки используйте p, а не puts — он покажет тип и точное содержимое объекта.
  • Называйте файлы строчными буквами через подчёркивание: my_script.rb — это соглашение всего сообщества.

Глубже: REPL как тренажёр мышления

Интерактивная консоль — это не просто «поиграться», а полноценный инструмент мышления опытного рубиста. В реальной работе вы будете запускать irb (а в проектах Rails — расширенную консоль приложения) десятки раз в день: проверить, что вернёт метод, посмотреть структуру данных, отладить выражение, прежде чем встроить его в код. Привычка «сначала проверю в консоли» экономит часы: вместо того чтобы менять файл, запускать программу целиком и ждать, вы получаете ответ за секунду. Современная альтернатива стандартному irb — гем pry, который добавляет подсветку синтаксиса, навигацию по объектам и возможность «провалиться» прямо в работающую программу для отладки. Но даже базовый irb в свежих версиях Ruby получил автодополнение по Tab и подсветку, так что отдельный инструмент на старте не нужен. Главное — выработать рефлекс: возник вопрос «а что вернёт эта строка?» — не гадайте, спросите консоль.

Итог. Вы умеете ставить Ruby через менеджер версий, экспериментировать в REPL-консоли irb и запускать законченные скрипты. Интерполяция #{...} и тройка puts/print/p — ваш базовый инструмент вывода.

Проверьте себя
1. Чем интерактивный irb отличается от запуска файла .rb?
Airb работает медленнее
Birb сам печатает значение каждого выражения, а файл выводит только то, что указано через puts/print
CВ irb нельзя использовать переменные
DФайл .rb не поддерживает интерполяцию
2. Что выведет строка puts 'Привет #{name}' с одинарными кавычками?
AЗначение переменной name
BТекст «Привет #{name}» буквально
CОшибку
DПустую строку