Sha256: 83e233b98772807f8306ebaa0b83a29bace49c6dd1ca6a01332ce567459d8bb3
Contents?: true
Size: 1.4 KB
Versions: 1
Compression:
Stored size: 1.4 KB
Contents
require 'sinatra/base' require 'sinatra/async' module Powcloud module Insurance module HttpService # Establish base case for http services, useful for later patching which doesn't touch Sinatra::Base. class HttpServiceBase < Sinatra::Base def self.agent self.send :class_variable_get, :@@agent end def agent self.class.agent end end def self.included(base) base.extend(ClassMethods) end module ClassMethods def http_service(opts = {}, &blk) self.send :class_variable_set, :@@http_service_block, blk end end # Instance method! # Creates unique HttpService class per agent instance. def create_http_service agent_instance = self block = self.class.send(:class_variable_get, :@@http_service_block) http_service_class = Class.new(HttpServiceBase) do |clazz| # NOTE: @@agent will create Class::@@agent variable, instad of http_service_class1::@@agent class_variable_set(:@@agent, agent_instance) end # NOTE: Sinatra::Base.inherited callback is not called yet during do |clazz| block above. # This is why the following is going here, not in that block. http_service_class.register Sinatra::Async http_service_class.class_eval(&block) http_service_class end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
powcloud-insurance-0.1.0 | lib/powcloud/insurance/http_service.rb |