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'
Class Method Summary collapse
- .current_id ⇒ Object
- .delete(key) ⇒ Object
- .delete_all(keys) ⇒ Object
- .exception_key(id = current_id) ⇒ Object
- .exception_keys(page = 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(page = 0, field = nil, filter = nil, per_page = 10) ⇒ Object
- .filter_key(field, filter) ⇒ Object
- .filter_keys_for(field) ⇒ 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
.current_id ⇒ Object
27 28 29 |
# File 'lib/global_error_handler/redis.rb', line 27 def current_id redis.get(CURRENT_ID_KEY) end |
.delete(key) ⇒ Object
63 64 65 66 67 |
# File 'lib/global_error_handler/redis.rb', line 63 def delete(key) redis.lrem EXCEPTIONS_REDIS_KEY, 1, key clear_filters key redis.del key end |
.delete_all(keys) ⇒ Object
69 70 71 |
# File 'lib/global_error_handler/redis.rb', line 69 def delete_all(keys) keys.each { |key| delete(key) rescue next } end |
.exception_key(id = current_id) ⇒ Object
77 78 79 |
# File 'lib/global_error_handler/redis.rb', line 77 def exception_key(id = current_id) "#{EXCEPTION_KEY_PREFIX}:#{id}" end |
.exception_keys(page = 0, per_page = 10) ⇒ Object
43 44 45 |
# File 'lib/global_error_handler/redis.rb', line 43 def exception_keys(page = 0, per_page = 10) redis.lrange EXCEPTIONS_REDIS_KEY, page.to_i, per_page.to_i + page.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
35 36 37 |
# File 'lib/global_error_handler/redis.rb', line 35 def exceptions_count redis.llen EXCEPTIONS_REDIS_KEY end |
.filter_exception_keys(page = 0, field = nil, filter = nil, per_page = 10) ⇒ Object
47 48 49 |
# File 'lib/global_error_handler/redis.rb', line 47 def filter_exception_keys(page = 0, field = nil, filter = nil, per_page = 10) redis.lrange filter_key(field, filter), page.to_i, per_page.to_i + page.to_i - 1 end |
.filter_key(field, filter) ⇒ Object
81 82 83 |
# File 'lib/global_error_handler/redis.rb', line 81 def filter_key(field, filter) "#{FILTER_KEY_PREFIX}:#{field}:#{filter}" end |
.filter_keys_for(field) ⇒ Object
51 52 53 |
# File 'lib/global_error_handler/redis.rb', line 51 def filter_keys_for(field) redis.keys filter_key(field, '*') end |
.filtered_exceptions_count(field, filter) ⇒ Object
39 40 41 |
# File 'lib/global_error_handler/redis.rb', line 39 def filtered_exceptions_count(field, filter) redis.llen filter_key(field, filter) end |
.find(key) ⇒ Object
55 56 57 |
# File 'lib/global_error_handler/redis.rb', line 55 def find(key) Hashie::Mash.new redis.hgetall(key) end |
.find_all(keys) ⇒ Object
59 60 61 |
# File 'lib/global_error_handler/redis.rb', line 59 def find_all(keys) keys.map { |key| find(key) } end |
.redis ⇒ Object
17 18 19 20 21 22 23 24 25 |
# File 'lib/global_error_handler/redis.rb', line 17 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
8 9 10 11 12 13 14 15 |
# File 'lib/global_error_handler/redis.rb', line 8 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 %w(error_class error_message).each do |field| redis.rpush filter_key(field, info_hash[field.to_sym]), redis_key end end |
.truncate! ⇒ Object
73 74 75 |
# File 'lib/global_error_handler/redis.rb', line 73 def truncate! redis.flushdb end |