class Fenix::Application
Attributes
env[R]
request[R]
response[R]
Public Class Methods
disable(*options)
click to toggle source
@param [options] Array<Symbol>
@example
disable :cache
@since 1.0.0 @api public
# File lib/fenix/core/application.rb, line 75 def disable(*options) options.each { |option| settings[option] = false } end
enable(*options)
click to toggle source
@param [options] Array<Symbol>
@example
enable :cache
@since 1.0.0 @api public
# File lib/fenix/core/application.rb, line 63 def enable(*options) options.each { |option| settings[option] = true } end
extensions()
click to toggle source
@return [Array] @since 1.0.0 @api public
# File lib/fenix/core/application.rb, line 83 def extensions @_extensions ||= [] end
new(*arguments, &block)
click to toggle source
@private
Calls superclass method
# File lib/fenix/core/application.rb, line 17 def new(*arguments, &block) instance = super(*arguments, &block) stack.run(instance) stack end
register(*extensions)
click to toggle source
@param [extensions] Array
@example
register Fenix::Assets register Fenix::Cookies
@since 1.0.0 @api public
# File lib/fenix/core/application.rb, line 96 def register(*extensions) self.extensions += extensions extensions.each do |extension| extension.registered(self) if extension.respond_to?(:registered) extend extension end end
routes()
click to toggle source
@return [Hash] @since 1.0.0 @api public
# File lib/fenix/core/application.rb, line 42 def routes @_routes ||= Hash.new { |hash, key| hash[key] = [] } end
settings()
click to toggle source
@return [Fenix::Settings] @see Fenix::Settings
@since 1.0.0 @api public
# File lib/fenix/core/application.rb, line 109 def settings @_settings ||= Fenix::Settings.new end
stack()
click to toggle source
@return [Rack::Builder] @see github.com/rack/rack/blob/master/lib/rack/builder.rb @since 1.0.0 @api public
# File lib/fenix/core/application.rb, line 51 def stack @_stack ||= Rack::Builder.new end
Private Class Methods
compile_route(path, conditions, &block)
click to toggle source
@private
# File lib/fenix/core/application.rb, line 30 def compile_route(path, conditions, &block) { conditions: conditions, object: Mustermann.new(path), block: block } end
Public Instance Methods
call(env)
click to toggle source
@private
# File lib/fenix/core/application.rb, line 178 def call(env) @env = env @request = Fenix::Request.new(env) @response = Fenix::Response.new dispatch @response.finish end
halt(status = 500)
click to toggle source
@since 1.0.0 @api public
# File lib/fenix/core/application.rb, line 172 def halt(status = 500) response.status = status throw :halt end
locale()
click to toggle source
@return [Symbol] @since 1.0.0 @api public
# File lib/fenix/core/application.rb, line 133 def locale I18n.locale end
logger()
click to toggle source
@since 1.0.0 @api public
# File lib/fenix/core/application.rb, line 153 def logger request.logger end
params()
click to toggle source
@return [Hash] @since 1.0.0 @api public
# File lib/fenix/core/application.rb, line 140 def params request.params end
redirect(uri, **notifications)
click to toggle source
@since 1.0.0 @api public
# File lib/fenix/core/application.rb, line 159 def redirect(uri, **notifications) if env['HTTP_VERSION'] == 'HTTP/1.1' and env['REQUEST_METHOD'] != 'GET' status = 303 else status = 302 end response['Location'] = uri halt(status) end
session()
click to toggle source
@return [Hash] @since 1.0.0 @api public
# File lib/fenix/core/application.rb, line 126 def session env['rack.session'] end
settings()
click to toggle source
@return [Fenix::Settings] @see Fenix::Settings
@since 1.0.0 @api public
# File lib/fenix/core/application.rb, line 119 def settings self.class.settings end
Private Instance Methods
dispatch()
click to toggle source
@private
# File lib/fenix/core/application.rb, line 188 def dispatch catch :halt do if route = find_route response.write(instance_eval(&route[:block])) else raise Fenix::NotFound end end end
find_route()
click to toggle source
@private
# File lib/fenix/core/application.rb, line 199 def find_route self.class.routes[request.request_method].detect do |route| if match = route[:object].match(request.path_info) match.names.each_with_index do |index, name| request[name] = match.captures[index] end end end end