class Dossier::Client
Attributes
adapter[RW]
options[RW]
Public Class Methods
new(options)
click to toggle source
# File lib/dossier/client.rb, line 8 def initialize(options) self.options = options.symbolize_keys end
Public Instance Methods
dossier_adapter()
click to toggle source
# File lib/dossier/client.rb, line 16 def dossier_adapter adapter_name = options.fetch(:dossier_adapter) { determine_adapter_name } "Dossier::Adapter::#{adapter_name.classify}".constantize end
Private Instance Methods
determine_adapter_name()
click to toggle source
# File lib/dossier/client.rb, line 23 def determine_adapter_name if options.has_key?(:connection) namespace_for(options[:connection].class) else guess_adapter_name end end
guess_adapter_name()
click to toggle source
# File lib/dossier/client.rb, line 35 def guess_adapter_name return namespace_for(loaded_orms.first) if loaded_orms.length == 1 message = <<-Must_be_one_of_them_newfangled_ones.strip_heredoc You didn't specify a dossier_adapter. If you had exactly one ORM loaded that Dossier knew about, it would try to choose an appropriate adapter, but you have #{loaded_orms.length}. Must_be_one_of_them_newfangled_ones message << "Specifically, Dossier found #{loaded_orms.join(', ')}" if loaded_orms.any? raise IndeterminableAdapter.new(message) end
loaded_orms()
click to toggle source
# File lib/dossier/client.rb, line 47 def loaded_orms [].tap do |loaded_orms| loaded_orms << ActiveRecord::Base if defined?(ActiveRecord) end end
namespace_for(klass)
click to toggle source
# File lib/dossier/client.rb, line 31 def namespace_for(klass) klass.name.split('::').first.underscore end