Sha256: 0df5911a9e01f614c3ee8aa291acf690459ee724924f6e73086a178257cc8d34

Contents?: true

Size: 807 Bytes

Versions: 8

Compression:

Stored size: 807 Bytes

Contents

require 'active_support/concern'
require 'active_support/all'

module Praxis
  module Controller
    extend ::ActiveSupport::Concern
    
    # A Controller always requires the callbacks
    include Praxis::Callbacks
    
    included do
      attr_reader :request
      attr_accessor :response
    end

    module ClassMethods
      def implements(definition)
        define_singleton_method(:definition) do
          definition
        end

        definition.controller = self
        Application.instance.controllers << self
      end
      
      def id
        self.name.gsub('::'.freeze,'-'.freeze)
      end
    end

    def initialize(request, response=Responses::Ok.new)
      @request = request
      @response = response
    end

    def definition
      self.class.definition
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
praxis-0.18.1 lib/praxis/controller.rb
praxis-0.18.0 lib/praxis/controller.rb
praxis-0.17.1 lib/praxis/controller.rb
praxis-0.17.0 lib/praxis/controller.rb
praxis-0.16.1 lib/praxis/controller.rb
praxis-0.16.0 lib/praxis/controller.rb
praxis-0.15.0 lib/praxis/controller.rb
praxis-0.14.0 lib/praxis/controller.rb