Class: Phenotype::VersionedApp

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(strategies: []) ⇒ VersionedApp

Returns a new instance of VersionedApp.



4
5
6
7
8
# File 'lib/versioned_app.rb', line 4

def initialize(strategies: [])
  @routes = {}
  @strategies = strategies
  @default_routes = null_default 
end

Instance Attribute Details

#default_routesObject

Returns the value of attribute default_routes.



3
4
5
# File 'lib/versioned_app.rb', line 3

def default_routes
  @default_routes
end

#routesObject

Returns the value of attribute routes.



3
4
5
# File 'lib/versioned_app.rb', line 3

def routes
  @routes
end

#strategiesObject

Returns the value of attribute strategies.



3
4
5
# File 'lib/versioned_app.rb', line 3

def strategies
  @strategies
end

Instance Method Details

#add_strategy(strat) ⇒ Object



10
11
12
# File 'lib/versioned_app.rb', line 10

def add_strategy(strat)
  strategies.push(strat)
end

#add_version(version: nil, default: false, &block) ⇒ Object



14
15
16
17
# File 'lib/versioned_app.rb', line 14

def add_version(version: nil, default: false, &block)
  @default_routes = block if default
  routes[version] = block
end

#call(env) ⇒ Object



19
20
21
22
23
# File 'lib/versioned_app.rb', line 19

def call(env)
  strategy = get_strategy(env)
  return default_routes.call(env) unless strategy.version
  call_route(strategy.version).call(env)
end