Module: Safely
- Extended by:
- Methods
- Defined in:
- lib/safely/core.rb,
lib/safely/version.rb
Defined Under Namespace
Modules: Methods
Constant Summary collapse
- DEFAULT_EXCEPTION_METHOD =
proc do |e, context| Errbase.report(e, context) end
- VERSION =
"0.3.0"
Class Attribute Summary collapse
- .env ⇒ Object
-
.raise_envs ⇒ Object
Returns the value of attribute raise_envs.
-
.report_exception_method ⇒ Object
Returns the value of attribute report_exception_method.
-
.tag ⇒ Object
Returns the value of attribute tag.
-
.throttle_counter ⇒ Object
Returns the value of attribute throttle_counter.
Class Method Summary collapse
Methods included from Methods
Class Attribute Details
.env ⇒ Object
26 27 28 |
# File 'lib/safely/core.rb', line 26 def env @env ||= ENV["RAILS_ENV"] || ENV["RACK_ENV"] || "development" end |
.raise_envs ⇒ Object
Returns the value of attribute raise_envs.
7 8 9 |
# File 'lib/safely/core.rb', line 7 def raise_envs @raise_envs end |
.report_exception_method ⇒ Object
Returns the value of attribute report_exception_method.
7 8 9 |
# File 'lib/safely/core.rb', line 7 def report_exception_method @report_exception_method end |
.tag ⇒ Object
Returns the value of attribute tag.
7 8 9 |
# File 'lib/safely/core.rb', line 7 def tag @tag end |
.throttle_counter ⇒ Object
Returns the value of attribute throttle_counter.
7 8 9 |
# File 'lib/safely/core.rb', line 7 def throttle_counter @throttle_counter end |
Class Method Details
.report_exception(e, tag: nil, context: {}) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/safely/core.rb', line 10 def report_exception(e, tag: nil, context: {}) tag = Safely.tag if tag.nil? if tag && e. e = e.dup # leave original exception unmodified = e. e.define_singleton_method(:message) do "[#{tag == true ? "safely" : tag}] #{}" end end if report_exception_method.arity == 1 report_exception_method.call(e) else report_exception_method.call(e, context) end end |
.throttled?(e, options) ⇒ Boolean
30 31 32 33 34 35 |
# File 'lib/safely/core.rb', line 30 def throttled?(e, ) return false unless key = "#{[:key] || Digest::MD5.hexdigest([e.class.name, e., e.backtrace.join("\n")].join("/"))}/#{(Time.now.to_i / [:period]) * [:period]}" throttle_counter.clear if throttle_counter.size > 1000 # prevent from growing indefinitely (throttle_counter[key] += 1) > [:limit] end |