class Soybean::Application

Attributes

services[R]

Public Class Methods

new(services, &block) click to toggle source
# File lib/soybean/application.rb, line 9
def initialize(services, &block)
  load!(services)
  configure(&block)

  logger.info "SOAP Services: START"
  at_exit{ logger.info "SOAP Services: STOP" }

  @app = Rack::Builder.new do
    Soybean.engines.each do |engine|
      engine.logger.info "Service found: #{engine.service.endpoint} route to /#{engine.service.class.name}" if engine.logger
      map "/#{engine.service.endpoint}" do
        run engine.new
      end
    end

    Soybean.engines.last.logger.info ""
  end.to_app
end

Public Instance Methods

call(env) click to toggle source
# File lib/soybean/application.rb, line 28
def call(env)
  @app.call(env)
end
logger(new_logger=nil) click to toggle source
# File lib/soybean/application.rb, line 32
def logger(new_logger=nil)
  @logger = new_logger unless new_logger.nil?
  @logger || Soybean.logger
end

Protected Instance Methods

configure(&block) click to toggle source
# File lib/soybean/application.rb, line 39
def configure(&block)
  instance_eval &block

  logger.datetime_format = "%Y-%m-%d %H:%M:%S"
  logger.formatter = proc { |severity, datetime, progname, msg|
    "#{msg}\n"
  }

  Soybean.engines.each do |engine|
    engine.logger = logger
  end
end
load!(path) click to toggle source
# File lib/soybean/application.rb, line 52
def load!(path)
  $:.unshift path
  ActiveSupport::Dependencies.autoload_paths << path
  Dir["#{path}/engines/*"].each { |f| require f }
end