module Charty::Backends
Public Class Methods
current()
click to toggle source
# File lib/charty/backends.rb, line 11 def self.current @current end
current=(backend_name)
click to toggle source
# File lib/charty/backends.rb, line 15 def self.current=(backend_name) backend_class = Backends.find_backend_class(backend_name) @current = backend_class.new end
find_backend_class(name)
click to toggle source
# File lib/charty/backends.rb, line 44 def self.find_backend_class(name) backend = @backends[normalize_name(name)] unless backend raise BackendNotFoundError, "Backend is not found: #{name.inspect}" end backend_class = backend[:class] unless backend[:prepared] if backend_class.respond_to?(:prepare) begin backend_class.prepare rescue LoadError raise BackendLoadError, "Backend load error: #{name.inspect}" end end backend[:prepared] = true end backend_class end
names()
click to toggle source
# File lib/charty/backends.rb, line 33 def self.names @backends.keys end
register(name, backend_class)
click to toggle source
# File lib/charty/backends.rb, line 37 def self.register(name, backend_class) @backends[normalize_name(name)] = { class: backend_class, prepared: false, } end
use(backend) { || ... }
click to toggle source
# File lib/charty/backends.rb, line 20 def self.use(backend) if block_given? begin saved, self.current = self.current, backend yield ensure self.current = saved end else self.current = backend end end
Private Class Methods
normalize_name(name)
click to toggle source
# File lib/charty/backends.rb, line 63 def self.normalize_name(name) case name when Symbol name.to_s else name.to_str end end