Class: Praxis::Plugins::PraxisMapperPlugin::Plugin
Instance Attribute Summary
#application, #block, #config, #config_attribute
Instance Method Summary
collapse
#after, #before, #options
Constructor Details
#initialize ⇒ Plugin
Returns a new instance of Plugin.
62
63
64
65
66
67
68
69
|
# File 'lib/praxis/plugins/praxis_mapper_plugin.rb', line 62
def initialize
@options = {
config_file: 'config/praxis_mapper.yml',
config_data: {
repositories: {}
}
}
end
|
Instance Method Details
#config_key ⇒ Object
71
72
73
|
# File 'lib/praxis/plugins/praxis_mapper_plugin.rb', line 71
def config_key
:praxis_mapper
end
|
#load_config! ⇒ Object
Make our own custom load_config! method
83
84
85
86
87
|
# File 'lib/praxis/plugins/praxis_mapper_plugin.rb', line 83
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) ⇒ Object
75
76
77
78
79
80
|
# File 'lib/praxis/plugins/praxis_mapper_plugin.rb', line 75
def prepare_config!(node)
node.attributes do
attribute :log_stats, String, values: ['detailed', 'short', 'skip'], default: 'detailed'
attribute :repositories, Attributor::Hash.of(key: String, value: RepositoryConfig)
end
end
|
#setup! ⇒ Object
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
# File 'lib/praxis/plugins/praxis_mapper_plugin.rb', line 89
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 (identity_map = payload[:request].identity_map)
PraxisMapperPlugin::Statistics.log(identity_map, log_stats)
end
end
end
end
|
#setup_sequel_repository(name, settings) ⇒ Object
112
113
114
115
116
117
118
|
# File 'lib/praxis/plugins/praxis_mapper_plugin.rb', line 112
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
|