class Praxis::Plugins::PraxisMapperPlugin::Plugin

Public Class Methods

new() click to toggle source
# File lib/praxis/plugins/praxis_mapper_plugin.rb, line 63
def initialize
  @options = {
    config_file: 'config/praxis_mapper.yml',
    config_data: {
      repositories: {}
    }
  }
end

Public Instance Methods

config_key() click to toggle source
# File lib/praxis/plugins/praxis_mapper_plugin.rb, line 72
def config_key
  :praxis_mapper
end
load_config!() click to toggle source

Make our own custom load_config! method

# File lib/praxis/plugins/praxis_mapper_plugin.rb, line 85
def load_config!
  config_file_path = application.root + options[:config_file]
  result = config_file_path.exist? ? YAML.load_file(config_file_path) : {}
  result.merge(@options[:config_data])
end
prepare_config!(node) click to toggle source
# File lib/praxis/plugins/praxis_mapper_plugin.rb, line 76
def prepare_config!(node)
  node.attributes do
    attribute :log_stats, String, values: ['detailed', 'short', 'skip'], default: 'detailed'
    attribute :stats_log_level, Symbol, values: [:fatal,:error,:warn,:info,:debug], default: :info
    attribute :repositories, Attributor::Hash.of(key: String, value: RepositoryConfig)
  end
end
setup!() click to toggle source
# File lib/praxis/plugins/praxis_mapper_plugin.rb, line 91
def setup!
  self.config.repositories.each do |repository_name, repository_config|
    type = repository_config['type']
    connection_settings = repository_config['connection_settings']

    case type
    when 'sequel'
      self.setup_sequel_repository(repository_name, connection_settings)
    else
      raise "unsupported repository type: #{type}"
    end
  end

  log_stats = PraxisMapperPlugin::Plugin.instance.config.log_stats
  unless log_stats == 'skip'
    Praxis::Notifications.subscribe 'praxis.request.all' do |name, *junk, payload|
      if (payload[:request].identity_map?)
        identity_map = payload[:request].identity_map
        PraxisMapperPlugin::Statistics.log(payload[:request], identity_map, log_stats)
      end
    end
  end
end
setup_sequel_repository(name, settings) click to toggle source
# File lib/praxis/plugins/praxis_mapper_plugin.rb, line 115
def setup_sequel_repository(name, settings)
  db = Sequel.connect(settings.dump.symbolize_keys)

  Praxis::Mapper::ConnectionManager.setup do
    repository(name.to_sym) { db }
  end
end