Class: Flame::Application

Inherits:
Object
  • Object
show all
Defined in:
lib/flame/application.rb

Overview

Core class, like Framework::Application

Defined Under Namespace

Classes: Config

Class Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize ⇒ Application

Returns a new instance of Application.



29
30
31
32
33
34
35
36
37
# File 'lib/flame/application.rb', line 29

def initialize
	app = self
	@builder = Rack::Builder.new do
		app.class.middlewares.each do |m|
			use m[:class], *m[:args], &m[:block]
		end
		run app
	end
end

Class Attribute Details

.config ⇒ Object

Returns the value of attribute config.



9
10
11
# File 'lib/flame/application.rb', line 9

def config
  @config
end

Class Method Details

.default_config_dirs(root_dir:) ⇒ Object



70
71
72
73
74
75
76
77
# File 'lib/flame/application.rb', line 70

def self.default_config_dirs(root_dir:)
	{
		root_dir: File.realpath(root_dir),
		public_dir: proc { File.join(config[:root_dir], 'public') },
		views_dir: proc { File.join(config[:root_dir], 'views') },
		config_dir: proc { File.join(config[:root_dir], 'config') }
	}
end

.helpers(*modules) ⇒ Object



61
62
63
# File 'lib/flame/application.rb', line 61

def self.helpers(*modules)
	modules.empty? ? (@helpers ||= []) : @helpers = modules
end

.inherited(app) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
# File 'lib/flame/application.rb', line 17

def self.inherited(app)
	app.config = Config.new(
		app,
		default_config_dirs(
			root_dir: File.dirname(caller[0].split(':')[0])
		).merge(
			environment: ENV['RACK_ENV'] || 'development'
		)
	)
	# app.use Rack::Session::Pool
end

.middlewares ⇒ Object



53
54
55
# File 'lib/flame/application.rb', line 53

def self.middlewares
	@middlewares ||= []
end

.mount(ctrl, path = nil, &block) ⇒ Object



49
50
51
# File 'lib/flame/application.rb', line 49

def self.mount(ctrl, path = nil, &block)
	router.add_controller(ctrl, path, block)
end

.router ⇒ Object

Router for routing



66
67
68
# File 'lib/flame/application.rb', line 66

def self.router
	@router ||= Flame::Router.new(self)
end

.use(middleware, *args, &block) ⇒ Object



57
58
59
# File 'lib/flame/application.rb', line 57

def self.use(middleware, *args, &block)
	middlewares << { class: middleware, args: args, block: block }
end

Instance Method Details

#call(env) ⇒ Object

Init function



40
41
42
43
44
45
46
47
# File 'lib/flame/application.rb', line 40

def call(env)
	if env[:FLAME_CALL]
		Flame::Dispatcher.new(self, env).run!
	else
		env[:FLAME_CALL] = true
		@builder.call env
	end
end

#config ⇒ Object

Framework configuration



13
14
15
# File 'lib/flame/application.rb', line 13

def config
	self.class.config
end