Перейти к основному содержимому

if FILE == $0 — запуск скрипта и require

Разработчику

В Ruby ближайший аналог Python if __name__ == "__main__": — проверка if __FILE__ == $0.

ПеременнаяСмысл
__FILE__Путь к текущему файлу
$0Имя скрипта, переданного интерпретатору (точка входа процесса)

См. также: Первая программа · Python — разбор __name__.


Пример

# calculator.rb
def add(a, b)
a + b
end

if __FILE__ == $0
puts add(5, 3)
end

Прямой запуск:

ruby calculator.rb
# => 8

Подключение:

require_relative "calculator"
# демо не печатается
puts add(10, 20)

require и код верхнего уровня

require / require_relative выполняют файл один раз (кэш в $LOADED_FEATURES). Любой код вне блока if __FILE__ == $0 выполнится при первом require.

puts "Файл загружен" # выполнится при require

if __FILE__ == $0
puts "Запуск как скрипт"
end

Демо и CLI держат внутри проверки; константы и определения методов — снаружи.


Rails и гемы

В Rails точка входа — bin/rails, config.ru, а не if __FILE__ == $0 в каждой модели. В гемах исполняемые команды регистрируют в .gemspec (executables).

Для учебных .rb и утилит паттерн с $0 остаётся стандартом.


Сравнение с Python

PythonRuby
__name__ == "__main__"__FILE__ == $0
import modulerequire "module"

Дальше по разделу

ТемаСтатья
IRB, первая программа20 — Первая программа
Модули и классы102 — ООП
Rails21 — Rails

См. также

Другие статьи этого же раздела в боковом меню (как на странице "О разделе").