Class: Junior::Application

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

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(app = nil) ⇒ Application

Returns a new instance of Application.



7
8
9
# File 'lib/junior/application.rb', line 7

def initialize(app = nil)
  @app = app
end

Instance Attribute Details

#appObject

Returns the value of attribute app.



5
6
7
# File 'lib/junior/application.rb', line 5

def app
  @app
end

#envObject

Returns the value of attribute env.



5
6
7
# File 'lib/junior/application.rb', line 5

def env
  @env
end

#requestObject

Returns the value of attribute request.



5
6
7
# File 'lib/junior/application.rb', line 5

def request
  @request
end

#responseObject

Returns the value of attribute response.



5
6
7
# File 'lib/junior/application.rb', line 5

def response
  @response
end

Class Method Details

.call(env) ⇒ Object



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

def call(env)
  prototype.call(env)
end

.development?Boolean

Returns:

  • (Boolean)


53
# File 'lib/junior/application.rb', line 53

def development?; environment == :development end

.middlewareObject



57
58
59
60
61
62
63
# File 'lib/junior/application.rb', line 57

def middleware
  if superclass.respond_to?(:middleware)
    superclass.middleware + ( @middleware || [] )
  else
    @middleware || []
  end
end

.new(*args, &block) ⇒ Object



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

def new(*args, &block)
  builder = Rack::Builder.new

  middleware.each { |middleware, args, block| builder.use(middleware, *args, &block) }

  builder.run super
  builder.to_app
end

.production?Boolean

Returns:

  • (Boolean)


54
# File 'lib/junior/application.rb', line 54

def production?;  environment == :production  end

.prototypeObject



36
37
38
# File 'lib/junior/application.rb', line 36

def prototype
  @prototype ||= new
end

.reset!Object



31
32
33
34
# File 'lib/junior/application.rb', line 31

def reset!
  @middleware = []
  @prototype  = nil
end

.set(option, value = self) ⇒ Object



69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/junior/application.rb', line 69

def set(option, value=self)
  if value.kind_of?(Proc)
    metadef(option, &value)
    metadef("#{option}?") { !!__send__(option) }
    metadef("#{option}=") { |val| set(option, Proc.new{val}) }
  elsif value == self && option.respond_to?(:to_hash)
    option.to_hash.each { |k,v| set(k, v) }
  elsif respond_to?("#{option}=")
    __send__ "#{option}=", value
  else
    set option, Proc.new{value}
  end
  self
end

.test?Boolean

Returns:

  • (Boolean)


55
# File 'lib/junior/application.rb', line 55

def test?;        environment == :test        end

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



65
66
67
# File 'lib/junior/application.rb', line 65

def use(middleware, *args, &block)
  @middleware << [ middleware, args, block ]
end

Instance Method Details

#call(env) ⇒ Object



11
12
13
# File 'lib/junior/application.rb', line 11

def call(env)
  dup.call!(env)
end

#call!(env) ⇒ Object



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

def call!(env)
  @env        = env
  @request    = Rack::Request.new(env)
  @response   = Rack::Response.new
  
  #puts env.inspect
  
  Dispatcher.dispatch!(self)
  
  status, header, body = @response.finish
  
  [status, header, body]
end