Это похоже на предложение включения, но не требует доступа к файлу стойки.
Напишите ваши различные обработчики, такие как:
class FoodHandler < Sinatra::Base
get '/chunky/:food' do
"Chunky #{params[:food]}!"
end
end
Затем в вашем основном файле приложения:
require './lib/handlers/food_handler.rb'
class Main < Sinatra::Base
enable :sessions
... bla bla bla
use FoodHandler
end
Я использовал такую структуру для создания некоторых довольно сложных приложений Sinatra.Он масштабируется так же, как и Rails.
EDIT
Чтобы ваш конфигурационный файл определял маршруты, вы можете сделать что-то вроде этого:
class PlacesHandler < Sinatra::Base
# Given your example, this would define 'places/paris' and 'places/losangeles'
CONFIG['components'].select { |c| c['compontent_type'] == 'Mapper' }.each do |c|
get c['route'] do
@latitude = c['component_settings']['latitude']
@longitude = c['component_settings']['longitude']
end
end
end