Sha256: 4484743ac9024383df8461d58153410a074d4e222753f8b836ed5776af9102f6

Contents?: true

Size: 923 Bytes

Versions: 2

Compression:

Stored size: 923 Bytes

Contents

require 'hovercraft/loader'
require 'hovercraft/actions'
require 'sinatra/base'
require 'rack/contrib'
require 'forwardable'

module Hovercraft
  class Builder
    extend Forwardable

    def_delegator :@loader, :with_each_model

    def initialize
      @loader = Loader.new
    end

    def application
      application = Sinatra.new
      application = configure(application)
      application = generate_routes(application)
      application
    end

    def configure(application)
      application.register(Hovercraft::Actions)
      application.use(Rack::PostBodyContentTypeParser)
      application
    end

    def generate_routes(application)
      with_each_model do |model_class, model_name, plural_model_name|
        application.methods.grep(/generate/).each do |action|
          application.send(action, model_class, model_name, plural_model_name)
        end
      end
      application
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
hovercraft-0.0.2 lib/hovercraft/builder.rb
hovercraft-0.0.1 lib/hovercraft/builder.rb