module Synapse::Rails::Providers
Public Class Methods
for(service, params={})
click to toggle source
# File lib/synapse/rails/providers.rb, line 11 def for service, params={} klass_name = "::Synapse::Rails::Providers::#{service.to_s.camelize}" params = params.with_indifferent_access.except(:if) Object.const_get(klass_name).new params end
provider(service, function='common')
click to toggle source
# File lib/synapse/rails/providers.rb, line 8 def provider service, function='common' @services end
use(service, params={})
click to toggle source
# File lib/synapse/rails/providers.rb, line 16 def use service, params={} klass_name = "::Synapse::Rails::Providers::#{service.to_s.camelize}" return self.send(:for,service,params) if Object.const_defined?(klass_name) tester = params[:if] if params[:if].is_a? Proc tester = Proc.new { Object.const_defined? params[:if] } if [Symbol, Class].include? params[:if].class tester = Proc.new { true } if params[:if] == nil return unless tester.call build = true unless Object.const_defined? klass_name build = true unless Object.const_defined?(klass_name).respond_to? :synapse if build klass = Class.new(Base) klass.service = service klass.tester = tester self.const_set(klass_name.split('::').last,klass) end self.send(:for,service,params) end