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.
63
64
65
66
67
68
69
70
|
# File 'lib/praxis/plugins/praxis_mapper_plugin.rb', line 63
def initialize
@options = {
config_file: 'config/praxis_mapper.yml',
config_data: {
repositories: {}
}
}
end
|
Instance Method Details
#config_key ⇒ Object
72
73
74
|
# File 'lib/praxis/plugins/praxis_mapper_plugin.rb', line 72
def config_key
:praxis_mapper
end
|
#load_config! ⇒ Object
Make our own custom load_config! method
85
86
87
88
89
|
# 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) ⇒ Object
76
77
78
79
80
81
82
|
# 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! ⇒ Object
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
# 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 (identity_map = payload[:request].identity_map)
PraxisMapperPlugin::Statistics.log(payload[:request], identity_map, log_stats)
end
end
end
end
|
#setup_sequel_repository(name, settings) ⇒ Object
114
115
116
117
118
119
120
|
# File 'lib/praxis/plugins/praxis_mapper_plugin.rb', line 114
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
|