Class: GlobalErrorHandler::Redis
- Inherits:
-
Object
- Object
- GlobalErrorHandler::Redis
- Defined in:
- lib/global_error_handler/redis.rb
Constant Summary collapse
- CURRENT_ID_KEY =
'global_error_handler:current_id'- EXCEPTIONS_REDIS_KEY =
'global_error_handler:exceptions'- EXCEPTION_KEY_PREFIX =
'global_error_handler:exception'- FILTER_KEY_PREFIX =
'global_error_handler:filter'- FILTER_FIELDS =
%w(error_class error_message)- FILTER_MAX_CHARS =
60- REDIS_TTL =
4 weeks
4 * 7 * 24 * 60 * 60
Class Method Summary collapse
- .clear_filters(key) ⇒ Object
- .current_id ⇒ Object
- .delete(key) ⇒ Object
- .delete_all(keys) ⇒ Object
- .delete_dependencies(key) ⇒ Object
- .exception_key(id = current_id) ⇒ Object
- .exception_keys(start = 0, per_page = 10) ⇒ Object
-
.exceptions_count ⇒ Object
def sort(field, direction = ‘ASC’, page = 0, per_page = 1000) redis.sort(EXCEPTIONS_REDIS_KEY, by: “#EXCEPTION_KEY_PREFIX_*->#field_*”, order: “#direction”, limit: [page, per_page]) end.
- .filter_exception_keys(start = 0, field = nil, filter = nil, per_page = 10) ⇒ Object
- .filter_key(field, filter) ⇒ Object
- .filter_keys_for(field, filter = '') ⇒ Object
- .filtered_exceptions_count(field, filter) ⇒ Object
- .find(key) ⇒ Object
- .find_all(keys) ⇒ Object
- .redis ⇒ Object
- .store(info_hash) ⇒ Object
- .truncate! ⇒ Object
Class Method Details
.clear_filters(key) ⇒ Object
93 94 95 96 97 98 99 100 |
# File 'lib/global_error_handler/redis.rb', line 93 def clear_filters(key) FILTER_FIELDS.each do |field| field_value = build_filter_value(redis.hget key, field) filter_keys_for(field, field_value).each do |filter_key| redis.lrem filter_key, 1, key end end end |
.current_id ⇒ Object
31 32 33 |
# File 'lib/global_error_handler/redis.rb', line 31 def current_id redis.get(CURRENT_ID_KEY) end |
.delete(key) ⇒ Object
67 68 69 70 |
# File 'lib/global_error_handler/redis.rb', line 67 def delete(key) delete_dependencies key redis.del key end |
.delete_all(keys) ⇒ Object
72 73 74 |
# File 'lib/global_error_handler/redis.rb', line 72 def delete_all(keys) keys.each { |key| delete(key) rescue next } end |
.delete_dependencies(key) ⇒ Object
88 89 90 91 |
# File 'lib/global_error_handler/redis.rb', line 88 def delete_dependencies(key) redis.lrem EXCEPTIONS_REDIS_KEY, 1, key clear_filters key end |
.exception_key(id = current_id) ⇒ Object
80 81 82 |
# File 'lib/global_error_handler/redis.rb', line 80 def exception_key(id = current_id) "#{EXCEPTION_KEY_PREFIX}:#{id}" end |
.exception_keys(start = 0, per_page = 10) ⇒ Object
47 48 49 |
# File 'lib/global_error_handler/redis.rb', line 47 def exception_keys(start = 0, per_page = 10) redis.lrange EXCEPTIONS_REDIS_KEY, start.to_i, per_page.to_i + start.to_i - 1 end |
.exceptions_count ⇒ Object
def sort(field, direction = ‘ASC’, page = 0, per_page = 1000)
redis.sort(EXCEPTIONS_REDIS_KEY, by: "#{EXCEPTION_KEY_PREFIX}_*->#{field}_*", order: "#{direction}", limit: [page, per_page])
end
39 40 41 |
# File 'lib/global_error_handler/redis.rb', line 39 def exceptions_count redis.llen EXCEPTIONS_REDIS_KEY end |
.filter_exception_keys(start = 0, field = nil, filter = nil, per_page = 10) ⇒ Object
51 52 53 |
# File 'lib/global_error_handler/redis.rb', line 51 def filter_exception_keys(start = 0, field = nil, filter = nil, per_page = 10) redis.lrange filter_key(field, filter), start.to_i, per_page.to_i + start.to_i - 1 end |
.filter_key(field, filter) ⇒ Object
84 85 86 |
# File 'lib/global_error_handler/redis.rb', line 84 def filter_key(field, filter) "#{FILTER_KEY_PREFIX}:#{field}:#{filter}" end |
.filter_keys_for(field, filter = '') ⇒ Object
55 56 57 |
# File 'lib/global_error_handler/redis.rb', line 55 def filter_keys_for(field, filter = '') redis.keys filter_key(field, "#{filter}*") end |
.filtered_exceptions_count(field, filter) ⇒ Object
43 44 45 |
# File 'lib/global_error_handler/redis.rb', line 43 def filtered_exceptions_count(field, filter) redis.llen filter_key(field, filter) end |
.find(key) ⇒ Object
59 60 61 |
# File 'lib/global_error_handler/redis.rb', line 59 def find(key) Hashie::Mash.new redis.hgetall(key) end |
.find_all(keys) ⇒ Object
63 64 65 |
# File 'lib/global_error_handler/redis.rb', line 63 def find_all(keys) keys.map { |key| find(key) }.compact end |
.redis ⇒ Object
21 22 23 24 25 26 27 28 29 |
# File 'lib/global_error_handler/redis.rb', line 21 def redis @redis ||= begin unless $redis_global_exception_handler.is_a? Redis redis_config = YAML.load_file(File.join(Rails.root, 'config', 'redis.yml'))[Rails.env] $redis_global_exception_handler = Redis.new(redis_config['global_exception_handler']) end $redis_global_exception_handler end end |
.store(info_hash) ⇒ Object
11 12 13 14 15 16 17 18 19 |
# File 'lib/global_error_handler/redis.rb', line 11 def store(info_hash) redis_key = exception_key(next_id!) redis.hmset redis_key, info_hash.merge(id: current_id).to_a.flatten redis.rpush EXCEPTIONS_REDIS_KEY, redis_key FILTER_FIELDS.each do |field| redis.rpush filter_key(field, build_filter_value(info_hash[field.to_sym])), redis_key end redis.expire redis_key, REDIS_TTL end |
.truncate! ⇒ Object
76 77 78 |
# File 'lib/global_error_handler/redis.rb', line 76 def truncate! redis.flushdb end |