class Quince::SinatraMiddleware

Public Class Methods

new() click to toggle source
# File lib/quince_sinatra.rb, line 13
def initialize
  Quince.underlying_app = Class.new(Sinatra::Base) do
    configure :development do
      if Object.const_defined? "Sinatra::Reloader"
        register Sinatra::Reloader
        dont_reload __FILE__
        also_reload $0
      end
    end
    use Rack::JSONBodyParser
    set :public_folder, File.join(File.dirname(File.expand_path($0)), "public")
  end
end

Private Class Methods

routes() click to toggle source
# File lib/quince_sinatra.rb, line 45
def self.routes
  @routes ||= {}
end

Public Instance Methods

create_route_handler(verb:, route:, component: nil, &blck) click to toggle source
# File lib/quince_sinatra.rb, line 27
def create_route_handler(verb:, route:, component: nil, &blck)
  meth = case verb
    when :POST, :post
      :post
    when :GET, :get
      :get
    else
      raise "invalid verb"
    end
  handler = component ? ->(_) { component } : blck
  Quince::SinatraMiddleware.send(:routes)[[verb, route]] = handler

  Quince.underlying_app.public_send meth, route do
    handler = Quince::SinatraMiddleware.send(:routes)[[verb, route]]
    Quince.to_html(handler.call(params))
  end
end