Module: Crystal

Defined in:
lib/crystal/core/config.rb,
lib/crystal/core/remote.rb,
lib/crystal/core/router.rb,
lib/crystal/core/crystal.rb,
lib/crystal/rack/adapter.rb,
lib/crystal/rack/support.rb,
lib/crystal/rack/rack_app.rb

Defined Under Namespace

Modules: Remote Classes: Adapter, Config, NotFound, RackApp, Request, Response, Router

Constant Summary collapse

VERSION =
'0.0.1'

Class Method Summary collapse

Class Method Details

.build_common_app(builder) ⇒ Object



13
14
15
# File 'lib/crystal/core/crystal.rb', line 13

def build_common_app builder
  Crystal::Adapter.build_common_app builder      
end

.call(request, response, params) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/crystal/core/crystal.rb', line 23

def call request, response, params
  klass, method = router.select_class request
  method ||= config.default_method
  
  raise "The remote class #{klass} must be a Crystal::Remote!" unless klass.is? Crystal::Remote
  raise "No method '#{method}' for remote class #{klass}!" unless klass.instance_methods.include? method
  raise "You try to call protected method '#{method}' for remote class '#{klass}'!" unless klass.public_instance_methods.include? method
  
  Micon.activate :request, {} do
    Micon[:request], Micon[:response], Micon[:params] = request, response, params
    controller = klass.new
    Micon[:controller] = controller
    controller.send method
  end        
end

.load_environmentObject



9
10
11
# File 'lib/crystal/core/crystal.rb', line 9

def load_environment
  $LOAD_PATH << config.root unless $LOAD_PATH.include? config.root
end

.runObject



17
18
19
20
21
# File 'lib/crystal/core/crystal.rb', line 17

def run      
  app = Crystal::Adapter.parse_config
  load_environment      
  Crystal::Adapter.run app
end