Я смотрел на эту строку:
extensions << Module.new(&block) if block_given?
Кажется, создается новый модуль и добавляется его в массив.
Зачем вам собирать модуль из блока? Блок может быть чем угодно, и тогда массив расширений станет непредсказуемым.
Редактировать: это из базового класса Синатры:
def register(*extensions, &block)
extensions << Module.new(&block) if block_given?
extensions.each do |extension|
extend extension
extension.registered(self) if extension.respond_to?(:registered)
end
end