Class: ExceptionHandler::Config
- Inherits:
-
Object
- Object
- ExceptionHandler::Config
- Defined in:
- lib/exception_handler/config.rb
Constant Summary collapse
- TABLE =
> Table Name
> Has to be “errors” because “exceptions” is a reserved word
:errors
- SOCIAL =
> Social URLs
> Extracted from “social” block
ActiveSupport::HashWithIndifferentAccess.new({ facebook: "https://www.facebook.com", twitter: "https://www.twitter.com", youtube: "https://www.youtube.com/user", linkedin: "https://www.linkedin.com/company", fusion: "https://www.frontlinefusion.com" })
- DEFAULTS =
> Defaults
> stackoverflow.com/a/8917301/1143732
ActiveSupport::HashWithIndifferentAccess.new({ # => General options dev: nil, # => defaults to "false" for dev mode db: nil, # => defaults to :errors if true, else use "table_name" / :table_name email: nil, # => requires string email and ActionMailer # => Used in "exception" layout social: { facebook: nil, twitter: nil, youtube: nil, linkedin: nil, fusion: nil, }, # => Defaults for exceptions. Override with specific status codes # => Please note these are all STRINGS exceptions: { # => 4xx/5xx base standard # => :all provide block customization (overrides 4xx/5xx) # => specific provides individual (overrides all) # => 4xx Errors (resource not found) # => https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#4xx_Client_errors '4xx' => { layout: nil # notification: true #(this is for emails - it's true by default - only if you have email inputted) # action: ____, (this is general) # background: (can define custom background for exceptions layout if required) }, # => 5xx Errors (server error) # => https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#5xx_Server_errors '5xx' => { layout: 'exception' # notification: true (this is for emails - it's true by default - only if you have email inputted) # action: _____, (this is general) # background: (can define custom background for exceptions layout if required) } }, # Deprecated #layouts: { # => nil inherits from ApplicationController # => 4xx errors should be nil # => 5xx errors should be "exception" but can be nil if explicitly defined #500 => 'exception', #501 => 'exception', #502 => 'exception', #503 => 'exception', #504 => 'exception', #505 => 'exception', #507 => 'exception', #510 => 'exception' #}, # => If you want to map your own classes to HTTP errors # => use this... custom_exceptions: { #'ActionController::RoutingError' => :not_found # => example } })
Instance Attribute Summary collapse
-
#custom_exceptions ⇒ Object
> Instace Objects => ExceptionHandler.config.dev => ExceptionHandler.config.db => ExceptionHandler.config.email => ExceptionHandler.config.social => ExceptionHandler.config.layouts -> will need to be deprecated => ExceptionHandler.config.exceptions => ExceptionHandler.config.custom_exceptions.
-
#db ⇒ Object
> DB => If config db = “true”, use TABLE constant.
-
#dev ⇒ Object
> Instace Objects => ExceptionHandler.config.dev => ExceptionHandler.config.db => ExceptionHandler.config.email => ExceptionHandler.config.social => ExceptionHandler.config.layouts -> will need to be deprecated => ExceptionHandler.config.exceptions => ExceptionHandler.config.custom_exceptions.
-
#email ⇒ Object
> Instace Objects => ExceptionHandler.config.dev => ExceptionHandler.config.db => ExceptionHandler.config.email => ExceptionHandler.config.social => ExceptionHandler.config.layouts -> will need to be deprecated => ExceptionHandler.config.exceptions => ExceptionHandler.config.custom_exceptions.
-
#exceptions ⇒ Object
> Instace Objects => ExceptionHandler.config.dev => ExceptionHandler.config.db => ExceptionHandler.config.email => ExceptionHandler.config.social => ExceptionHandler.config.layouts -> will need to be deprecated => ExceptionHandler.config.exceptions => ExceptionHandler.config.custom_exceptions.
-
#layouts ⇒ Object
> Instace Objects => ExceptionHandler.config.dev => ExceptionHandler.config.db => ExceptionHandler.config.email => ExceptionHandler.config.social => ExceptionHandler.config.layouts -> will need to be deprecated => ExceptionHandler.config.exceptions => ExceptionHandler.config.custom_exceptions.
-
#social ⇒ Object
> Instace Objects => ExceptionHandler.config.dev => ExceptionHandler.config.db => ExceptionHandler.config.email => ExceptionHandler.config.social => ExceptionHandler.config.layouts -> will need to be deprecated => ExceptionHandler.config.exceptions => ExceptionHandler.config.custom_exceptions.
Instance Method Summary collapse
-
#initialize(values) ⇒ Config
constructor
> Constructor => Merges DEFAULTS to values, creates instances vars (for attr_accessor).
-
#options(status, pluck = nil) ⇒ Object
> Options => Requires argument.
Constructor Details
#initialize(values) ⇒ Config
> Constructor
> Merges DEFAULTS to values, creates instances vars (for attr_accessor)
134 135 136 137 138 139 140 141 142 143 144 145 |
# File 'lib/exception_handler/config.rb', line 134 def initialize values # => Vars DEFAULTS.deep_merge!(values || {}).each do |k,v| instance_variable_set("@#{k}",v) end # => Validation raise ExceptionHandler::Error, "Email Not Valid" if @email && !@email.nil? && !@email.is_a?(String) raise ExceptionHandler::Error, "Migration Required → \"#{db}\" doesn't exist" if @db && !ActiveRecord::Base.connection.table_exists?(db) && (File.basename($0) != "rake" && !ARGV.include?("db:migrate")) end |
Instance Attribute Details
#custom_exceptions ⇒ Object
> Instace Objects
> ExceptionHandler.config.dev
> ExceptionHandler.config.db
> ExceptionHandler.config.email
> ExceptionHandler.config.social
> ExceptionHandler.config.layouts -> will need to be deprecated
> ExceptionHandler.config.exceptions
> ExceptionHandler.config.custom_exceptions
32 33 34 |
# File 'lib/exception_handler/config.rb', line 32 def custom_exceptions @custom_exceptions end |
#db ⇒ Object
> DB
> If config db = “true”, use TABLE constant
32 33 34 |
# File 'lib/exception_handler/config.rb', line 32 def db @db end |
#dev ⇒ Object
> Instace Objects
> ExceptionHandler.config.dev
> ExceptionHandler.config.db
> ExceptionHandler.config.email
> ExceptionHandler.config.social
> ExceptionHandler.config.layouts -> will need to be deprecated
> ExceptionHandler.config.exceptions
> ExceptionHandler.config.custom_exceptions
32 33 34 |
# File 'lib/exception_handler/config.rb', line 32 def dev @dev end |
#email ⇒ Object
> Instace Objects
> ExceptionHandler.config.dev
> ExceptionHandler.config.db
> ExceptionHandler.config.email
> ExceptionHandler.config.social
> ExceptionHandler.config.layouts -> will need to be deprecated
> ExceptionHandler.config.exceptions
> ExceptionHandler.config.custom_exceptions
32 33 34 |
# File 'lib/exception_handler/config.rb', line 32 def email @email end |
#exceptions ⇒ Object
> Instace Objects
> ExceptionHandler.config.dev
> ExceptionHandler.config.db
> ExceptionHandler.config.email
> ExceptionHandler.config.social
> ExceptionHandler.config.layouts -> will need to be deprecated
> ExceptionHandler.config.exceptions
> ExceptionHandler.config.custom_exceptions
32 33 34 |
# File 'lib/exception_handler/config.rb', line 32 def exceptions @exceptions end |
#layouts ⇒ Object
> Instace Objects
> ExceptionHandler.config.dev
> ExceptionHandler.config.db
> ExceptionHandler.config.email
> ExceptionHandler.config.social
> ExceptionHandler.config.layouts -> will need to be deprecated
> ExceptionHandler.config.exceptions
> ExceptionHandler.config.custom_exceptions
32 33 34 |
# File 'lib/exception_handler/config.rb', line 32 def layouts @layouts end |
#social ⇒ Object
> Instace Objects
> ExceptionHandler.config.dev
> ExceptionHandler.config.db
> ExceptionHandler.config.email
> ExceptionHandler.config.social
> ExceptionHandler.config.layouts -> will need to be deprecated
> ExceptionHandler.config.exceptions
> ExceptionHandler.config.custom_exceptions
32 33 34 |
# File 'lib/exception_handler/config.rb', line 32 def @social end |
Instance Method Details
#options(status, pluck = nil) ⇒ Object
> Options
> Requires argument
161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 |
# File 'lib/exception_handler/config.rb', line 161 def status, pluck=nil # => Structure from old + new setup # => 1. layouts => [500, '500'] # => 2. exceptions => [500, '500' 'all', '4xx'/'5xx'] { layouts: [status, status.to_s], # old + new exceptions: [status, status.to_s, 'all', status.to_s.first + 'xx'] }.each do |key,array| # => Array # => https://stackoverflow.com/a/26877095/1143732 array.each do |specific| item = self.send(key).try(:[], specific) return (item.is_a?(Hash) ? ActiveSupport::HashWithIndifferentAccess.new(item)[pluck.try(:to_sym)] : item) if item.present? || (self.send(key).try(:has_key?, specific) && item.nil?) #if result exists and it has a value (including nil) end end end |