Что означает расширение .ru для конфига rack-приложения

Я задумался, что означает расширение .ru
у файла config.ru
и
почему приложение не запустится, если поменять расширение на .rb
.
Christian Neukirchen, автор оригинального кода запуска rack-приложения, сказал, что это
сокрашение от Rack Up
. Отдельное расширение он завел, чтобы люди не пытались запустить
конфиг с помощью обычного руби.
Так же, изучая исходники, я узнал несколько других секретов rack.
Параметры по умолчанию в config.ru
В файле config.ru
можно указать параметры по умолчанию, начав первую строку с символов #\
.
#\ -p 3000
run proc { |env| [ 200, {'Content-Type' => 'text/plain'}, ["hello"] ] }
Такое rack-приложение запустится на 3000-м порту, вместо 9292.
Что такое метод run в config.ru
#run
это метод класса Rack::Builder
,
так как конфиг файла для rackup
исполняется
в контексте Rack::Builder
c помощью eval
.
Что будет если передать rackup обычный rb-файл
Rackup
возьмет класс, который совпадает с именем файла и запустит его как rack-приложение .
# app.rb
#
# Usage: rackup app.rb
class App
def self.call(env)
[ 200, {'Content-Type' => 'text/plain'}, ["hello"] ]
end
end
Теперь файл config.ru
, который лежит в корне каждого Рейлс проекта, больше не вызывает у меня вопросов.