exception_handler 0.5.1 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -1
  3. data/.travis.yml +4 -4
  4. data/Gemfile +1 -3
  5. data/README.md +111 -98
  6. data/app/assets/images/exception_handler/connect/facebook.png +0 -0
  7. data/app/assets/images/exception_handler/connect/fusion.png +0 -0
  8. data/app/assets/images/exception_handler/connect/linkedin.png +0 -0
  9. data/app/assets/images/exception_handler/connect/twitter.png +0 -0
  10. data/app/assets/images/exception_handler/connect/youtube.png +0 -0
  11. data/app/assets/images/exception_handler/noise.png +0 -0
  12. data/app/assets/images/favicon.ico +0 -0
  13. data/app/assets/stylesheets/exception_handler.css.erb +18 -0
  14. data/app/assets/stylesheets/styles/_base.css.erb +34 -0
  15. data/app/assets/stylesheets/styles/_exception.css.erb +105 -0
  16. data/app/assets/stylesheets/styles/_footer.css.erb +27 -0
  17. data/app/assets/stylesheets/styles/_responsive.css +5 -0
  18. data/app/controllers/exception_handler/exception_controller.rb +28 -33
  19. data/app/mailers/exception_handler/exception_mailer.rb +17 -0
  20. data/app/models/exception_handler/exception.rb +191 -0
  21. data/app/views/exception_handler/exception/show.html.erb +3 -32
  22. data/app/views/exception_handler/mailers/layout.haml +8 -0
  23. data/app/views/exception_handler/mailers/layout.text.erb +1 -0
  24. data/app/views/exception_handler/mailers/new_exception.erb +4 -0
  25. data/app/views/layouts/exception.html.erb +15 -23
  26. data/config/locales/exception_handler.en.yml +13 -0
  27. data/exception_handler.gemspec +61 -16
  28. data/lib/exception_handler.rb +20 -79
  29. data/lib/exception_handler/config.rb +20 -22
  30. data/lib/exception_handler/engine.rb +36 -0
  31. data/lib/generators/exception_handler/migration_generator.rb +28 -10
  32. data/lib/generators/exception_handler/views_generator.rb +5 -5
  33. data/lib/generators/templates/migration.rb.erb +12 -11
  34. metadata +41 -64
  35. data/app/assets/images/exception_handler/close.png +0 -0
  36. data/app/assets/images/exception_handler/home.png +0 -0
  37. data/app/assets/stylesheets/exception_handler/error.css.erb +0 -309
  38. data/app/helpers/exception_handler/application_helper.rb +0 -56
  39. data/app/models/exception_handler/error.rb +0 -14
  40. data/app/services/exception_handler/exception.rb +0 -34
  41. data/config/locales/en.yml +0 -9
  42. data/lib/exception_handler/parse.rb +0 -23
  43. data/lib/exception_handler/parser/data.rb +0 -59
  44. data/lib/exception_handler/parser/ignore.rb +0 -32
  45. data/lib/exception_handler/version.rb +0 -3
  46. data/post_install_message.md +0 -53
  47. data/spec/helpers/exception_handler/application_helper_spec.rb +0 -42
@@ -1,56 +0,0 @@
1
- module ExceptionHandler
2
- module ApplicationHelper
3
-
4
- ##################
5
-
6
- #Refs
7
- #http://stackoverflow.com/a/5795683/1143732
8
- #http://stackoverflow.com/questions/8028021/helpers-in-rails-engine
9
- #ActiveSupport.on_load( :action_view ){ include ExceptionHandler::ViewHelpers }
10
-
11
- ##################
12
-
13
- #App (Application name)
14
- def app
15
- Rails.application.class.parent_name
16
- end
17
-
18
- #Details
19
- def details
20
- @details ||= {}.tap do |h|
21
- I18n.with_options scope: [:exception, :show, @exception.response], message: @exception.message do |i18n|
22
- h[:name] = i18n.t "#{@exception.class.name.underscore}.title", default: i18n.t(:title, default: @exception.class.name)
23
- h[:description] = i18n.t "#{@exception.class.name.underscore}.description", default: i18n.t(:description, default: @exception.message)
24
- end
25
- end
26
- end
27
-
28
- #Social
29
- def social *services
30
- output = []
31
- # options = args.extract_options! http://simonecarletti.com/blog/2009/09/inside-ruby-on-rails-extract_options-from-arrays/ - args for hash
32
-
33
- services = ExceptionHandler.config.social unless services.any? #-> http://api.rubyonrails.org/classes/Hash.html#method-i-compact
34
- services.except(:url).compact.each do |service,username| #-> except http://stackoverflow.com/a/11105831/1143732
35
- output.push link_to(image_tag("exception_handler/connect/#{service}.png", title: "Find us on " + service.to_s.titleize), link(service), target: :blank, class: service.to_s)
36
- end
37
-
38
- output.join("").html_safe #-> ruby returns last line
39
- end
40
-
41
-
42
- ##################
43
-
44
- private
45
-
46
- def link service #-> bloated way to allow single references in config
47
- url = []
48
- url.push ExceptionHandler.config.social[:url][service]
49
- url.push ExceptionHandler.config.social[service]
50
- url.join("/")
51
- end
52
-
53
- ##################
54
-
55
- end
56
- end
@@ -1,14 +0,0 @@
1
- module ExceptionHandler
2
- class Error < ActiveRecord::Base
3
-
4
- #Table is called "errors"
5
- #Dev needs to use migration to create db
6
- def self.table_name
7
- ExceptionHandler.config.db
8
- end
9
-
10
- #Associations
11
- belongs_to :usable, polymorphic: true
12
-
13
- end
14
- end
@@ -1,34 +0,0 @@
1
- module ExceptionHandler
2
- class Exception #-> https://www.netguru.co/blog/service-objects-in-rails-will-help
3
- attr_reader :exception, :request, :class, :message
4
-
5
- ######################
6
-
7
- def initialize request
8
- @request = request
9
- @exception = request.env['action_dispatch.exception']
10
-
11
- @class = @exception.class
12
- @message = @exception.message
13
- end
14
-
15
- ######################
16
-
17
- # Status code (404, 500 etc)
18
- def code
19
- ActionDispatch::ExceptionWrapper.new(@request.env, @exception).status_code
20
- end
21
-
22
- # Server Response ("Not Found" etc)
23
- def response
24
- ActionDispatch::ExceptionWrapper.rescue_responses[@exception.class.name]
25
- end
26
-
27
- ######################
28
-
29
- alias_method :status, :code #-> http://stackoverflow.com/a/11848832/1143732 (has to be below methods)
30
-
31
- ######################
32
-
33
- end
34
- end
@@ -1,9 +0,0 @@
1
- en:
2
- exception:
3
- show:
4
- not_found:
5
- title: "Not Found"
6
- description: "Sorry, this page is missing."
7
- internal_server_error:
8
- title: "Internal Server Error"
9
- description: "Sorry, the server failed with the error: %{message}"
@@ -1,23 +0,0 @@
1
- module ExceptionHandler
2
- class Parse
3
-
4
- # Init
5
- def initialize(app)
6
- @app = app
7
- end
8
-
9
- #Exception
10
- def call(env)
11
- @app.call(env)
12
-
13
- rescue Exception => exception
14
- request = ActionDispatch::Request.new(env)
15
- controller = request.env['action_controller.instance']
16
- ignore = ExceptionHandler::Parser::Ignore.new(exception, request).match?
17
-
18
- ExceptionHandler::Parser::Data.create exception, request, controller unless ignore
19
- raise exception
20
- end
21
-
22
- end
23
- end
@@ -1,59 +0,0 @@
1
- module ExceptionHandler
2
- module Parser
3
- class Data
4
-
5
- # Data
6
- attr_reader :exception, :request, :controller, :user
7
-
8
- #Create
9
- class << self
10
- def create exception, request, controller
11
-
12
- @exception = exception
13
- @request = request
14
- @controller = controller
15
-
16
- #http://blog.habanerohq.com/post/16800611137/selectively-silence-activerecord-logging
17
- message = ""
18
- Rails.logger.silence do #-> stops Error.create from showing output
19
- ExceptionHandler::Error.create info do |error|
20
- message += "\n======================\n"
21
- message += "#{error.class_name}:\n"
22
- message += "\n#{error.message}\n"
23
- message += Rails.backtrace_cleaner.clean(error.trace.split("\n")).join("\n")
24
- message += "\n======================\n"
25
- end
26
- end
27
- Rails.logger.fatal message unless message.blank?
28
-
29
- end
30
- end
31
-
32
- private
33
-
34
- #User
35
- def user
36
- @controller.send(:current_user) if @controller.respond_to?(:current_user)
37
- end
38
-
39
- #Info
40
- def info
41
- info = {
42
- class_name: @exception.class.to_s,
43
- message: @exception.message.to_s,
44
- trace: @exception.backtrace.join("\n"),
45
- target_url: @request.url,
46
- referer_url: @request.referer,
47
- params: @request.params.inspect,
48
- user_agent: @request.user_agent
49
- }
50
- if @user && @user.respond_to(:id)
51
- info[:usable_type] = @user.model_name.human
52
- info[:usable_id] = @user.id
53
- end
54
- info
55
- end
56
-
57
- end
58
- end
59
- end
@@ -1,32 +0,0 @@
1
- module ExceptionHandler
2
- module Parser
3
- class Ignore
4
-
5
- #Init
6
- def initialize(exception, request)
7
- @exception, @request = exception, request
8
- end
9
-
10
- #Matches?
11
- def match?
12
- return true if errors.include?(@exception.class) && @request.referer.blank?
13
- return true if @request.user_agent =~ bots
14
- end
15
-
16
- private
17
-
18
- #Has to be instance vars for env to handle ActionController::RoutingError constant etc
19
-
20
- #Errors
21
- def errors #-> http://ruby-doc.org/core-2.2.0/Array.html#class-Array-label-Creating+Arrays
22
- [ActionController::RoutingError, AbstractController::ActionNotFound, ActiveRecord::RecordNotFound]
23
- end
24
-
25
- #Bots
26
- def bots
27
- Regexp.new %w(Baidu Gigabot Googlebot libwww-per lwp-trivial msnbot SiteUptime Slurp Wordpress ZIBB ZyBorg Yandex Jyxobot Huaweisymantecspider ApptusBot).join("|"), Regexp::IGNORECASE
28
- end
29
-
30
- end
31
- end
32
- end
@@ -1,3 +0,0 @@
1
- module ExceptionHandler
2
- VERSION = "0.5.1"
3
- end
@@ -1,53 +0,0 @@
1
- ########################################################################################
2
- ## _____ _ _ _ _ _ _ ##
3
- ## | ___| | | (_) | | | | | | | ##
4
- ## | |____ _____ ___ _ __ | |_ _ ___ _ __ | |_| | __ _ _ __ __| | | ___ _ __ ##
5
- ## | __\ \/ / __/ _ \ '_ \| __| |/ _ \| '_ \ | _ |/ _` | '_ \ / _` | |/ _ \ '__| ##
6
- ## | |___> < (_| __/ |_) | |_| | (_) | | | | | | | | (_| | | | | (_| | | __/ | ##
7
- ## \____/_/\_\___\___| .__/ \__|_|\___/|_| |_| \_| |_/\__,_|_| |_|\__,_|_|\___|_| ##
8
- ## | | ##
9
- ## |_| ##
10
- ########################################################################################
11
-
12
- IMPORTANT -
13
- **IF UPGRADING EXCEPTION HANDLER (to 0.4.7)***
14
- **DELETE INITIALIZER (config/initializers/exception_handler.rb)**
15
-
16
- We've changed the initialization process for ExceptionHandler.
17
-
18
- The initializer has been replaced with /config/application.rb
19
- options:
20
-
21
- #config/application.rb
22
- config.exception_handler = {
23
- db: false, #-> defaults to :errors if true, else use :table_name
24
- email: false, #-> need to integrate
25
- social: {
26
- :twitter => 'frontlineutils',
27
- :facebook => 'frontline.utilities',
28
- :linkedin => 'frontline-utilities',
29
- :youtube => 'frontlineutils',
30
- :fusion => 'frontlineutils',
31
- :url => {
32
- :facebook => 'https://facebook.com',
33
- :twitter => 'http://twitter.com',
34
- :youtube => 'https://youtube.com/user',
35
- :linkedin => 'https://linkedin.com/company',
36
- :fusion => 'https://frontlinefusion.com',
37
- },
38
- },
39
- layouts: {
40
- '400' => nil,
41
- '500' => 'exception'
42
- },
43
- }
44
-
45
- If you've made any changes to your initializer,
46
- you MUST DELETE it, replacing the options with
47
- those in config/application.rb, or
48
- config/environments/production.rb.
49
-
50
- More info on the ExceptionHandler github page:
51
- http://github.com/richpeck/exception_handler
52
-
53
- Thank you & enjoy!!
@@ -1,42 +0,0 @@
1
- #####################################################
2
- ## _ _ _ ##
3
- ## | | | | | | ##
4
- ## | |_| | ___| |_ __ ___ _ __ ___ ##
5
- ## | _ |/ _ \ | '_ \ / _ \ '__/ __| ##
6
- ## | | | | __/ | |_) | __/ | \__ \ ##
7
- ## \_| |_/\___|_| .__/ \___|_| |___/ ##
8
- ## | | ##
9
- ## |_| ##
10
- #####################################################
11
-
12
- # Should reside in spec/**module**/helpers
13
- # Testing specific helpers (in this case ApplicationHelper)
14
- # Refs...
15
- # http://stackoverflow.com/a/12846630/1143732
16
- # https://github.com/rspec/rspec-rails#helper-specs
17
-
18
- #####################################################
19
-
20
- # Needs the RSpec helper / config
21
- require 'spec_helper'
22
-
23
- ####
24
-
25
- module ExceptionHandler
26
- describe "ApplicationHelper", type: :helper do
27
-
28
- # Defs
29
- #let (:page) { ErrorPage.new exception, { "PATH_INFO" => "/some/path" } }
30
-
31
- #####################################################
32
-
33
- # "app" method
34
- # https://www.relishapp.com/rspec/rspec-rails/v/2-0/docs/helper-specs/helper-spec
35
- it "displays parent Rails app name" do
36
- helper.app.should eql(Rails.application.class.parent_name)
37
- end
38
- end
39
- end
40
-
41
- #####################################################
42
- #####################################################