Что означает расширение .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, который лежит в корне каждого Рейлс проекта, больше не вызывает у меня вопросов.