errdo 0.11.3 → 0.11.4

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8248415a05b7019172a5af28071f172b742b5205
4
- data.tar.gz: 7cdc8eac963f93d6e3bad8085200705c97fdbeba
3
+ metadata.gz: a1c02753b228820b93c239b4e9ebc3165d28ae24
4
+ data.tar.gz: 692b5bccf41783f97e64d1a2966870f812d35c74
5
5
  SHA512:
6
- metadata.gz: 0f99749ff9ed1f28a1f891e57d2ac8866ecbad9bbe1cb022b3b03408f9f68d0c0a1c2e885545a4fcf91a1999c8e3e82d467bb7126effae3ef7f37caf09862f48
7
- data.tar.gz: f5b0423971719d38471e7f4bd1d1292bfbee34b082ac0301b6051bd408554696134ae1a7dd256c5c0f07aec44fceb2948f8ad6deee3c0551bcaa3d7b15783151
6
+ metadata.gz: c597f080b1063557aeae0a7f1cb138daa6cad60495490e2cbd2a00e12db8154402043cd5a8b4f86d9b243ac7d4d66823267c6505fc4aa87c2363489520462049
7
+ data.tar.gz: 18e5d90035c81216865bef07427ceace199cdffa487b85cb7cf545481f7303db9fe550107ae83764e60c74975face2bcbb40d640ed6ad65c263985a3f3eb81da
@@ -9,7 +9,7 @@ module Errdo
9
9
  before_action :authorize_user
10
10
 
11
11
  def index
12
- @errors = Errdo::Error.order(last_occurred_at: :desc).page params[:page]
12
+ @errors = Errdo::Error.order(last_occurred_at: :desc).includes(:last_experiencer).page params[:page]
13
13
  end
14
14
 
15
15
  def show
@@ -4,9 +4,11 @@ module Errdo
4
4
  def initialize(env)
5
5
  user_parser = Errdo::Models::UserParser.new(env)
6
6
  @env_parser = Errdo::Models::ErrorEnvParser.new(env, user_parser)
7
- create_errors(@env_parser) unless Errdo.error_name.blank?
7
+
8
+ error = nil
9
+ error = create_errors(@env_parser) unless Errdo.error_name.blank?
8
10
  Errdo.notify_with.each do |notifier|
9
- notifier.notify(@env_parser)
11
+ notifier.notify(@env_parser, error: error)
10
12
  end
11
13
  end
12
14
 
@@ -15,6 +17,7 @@ module Errdo
15
17
  def create_errors(parser)
16
18
  error = Errdo::Error.find_or_create(parser.error_hash)
17
19
  error.try(:error_occurrences).try(:create, parser.error_occurrence_hash)
20
+ return error
18
21
  end
19
22
 
20
23
  end
data/config/routes.rb CHANGED
@@ -1,4 +1,6 @@
1
1
  Errdo::Engine.routes.draw do
2
+ default_url_options host: Rails.application.config.action_mailer.default_url_options[:host]
3
+
2
4
  resources :errors, only: [:show, :update]
3
5
 
4
6
  root to: "errors#index"
@@ -18,6 +18,10 @@ module Errdo
18
18
  errdo.root_path
19
19
  end
20
20
  end
21
+
22
+ def user_show_url(user)
23
+ user_show_path(user)
24
+ end
21
25
  end
22
26
  end
23
27
  end
data/lib/errdo/logger.rb CHANGED
@@ -12,6 +12,7 @@ module Errdo
12
12
  def log
13
13
  error = Errdo::Error.find_or_create(**@parser.error_hash, importance: @importance)
14
14
  error.try(:error_occurrences).try(:create, @parser.error_occurrence_hash)
15
+ return error
15
16
  end
16
17
 
17
18
  end
@@ -2,7 +2,7 @@ module Errdo
2
2
  module Models
3
3
  class ErrorEnvParser
4
4
 
5
- attr_accessor :user, :exception_class_name, :exception_message, :http_method,
5
+ attr_accessor :exception_class_name, :exception_message, :http_method,
6
6
  :host_name, :url, :backtrace, :ip, :user_agent, :referer,
7
7
  :query_string, :param_values, :cookie_values, :header_values,
8
8
  :experiencer_id, :experiencer_type
@@ -51,9 +51,13 @@ module Errdo
51
51
  @backtrace.first if @backtrace.respond_to?(:first)
52
52
  end
53
53
 
54
+ def user
55
+ @experiencer_type.constantize.find_by(id: @experiencer_id) if @experiencer_type && Errdo.error_name
56
+ end
57
+
54
58
  private
55
59
 
56
- def set_accessible_params(env, request, controller, user)
60
+ def set_accessible_params(env, request, controller, new_user)
57
61
  @exception_class_name = env["action_dispatch.exception"].class.to_s
58
62
  @exception_message = env["action_dispatch.exception"].try(:message)
59
63
  @http_method = request.try(:request_method)
@@ -67,8 +71,8 @@ module Errdo
67
71
  @param_values = scrubbed_params(request)
68
72
  @cookie_values = request.try(:cookies)
69
73
  @header_values = controller.try(:headers)
70
- @experiencer_id = user.try(:id)
71
- @experiencer_type = user.try(:class).try(:name)
74
+ @experiencer_id = new_user.try(:id)
75
+ @experiencer_type = new_user.try(:class).try(:name)
72
76
  end
73
77
 
74
78
  def prepare_backtrace(env)
@@ -15,10 +15,10 @@ module Errdo
15
15
  username: options[:name] || 'Errdo-bot'
16
16
  end
17
17
 
18
- def notify(parser)
19
- messager = SlackMessager.new(parser)
18
+ def notify(parser, options = nil)
19
+ messager = SlackMessager.new(parser, options)
20
20
  begin
21
- @slack_notifier.ping messager.message
21
+ @slack_notifier.ping(*messager.message)
22
22
  rescue => e
23
23
  Rails.logger.error e
24
24
  end
@@ -30,25 +30,40 @@ module Errdo
30
30
 
31
31
  include Errdo::Helpers::ViewsHelper # For the naming of the user in the message
32
32
 
33
- def initialize(parser)
33
+ def initialize(parser, options = nil)
34
34
  @user = parser.user
35
35
  @backtrace = parser.short_backtrace
36
36
  @exception_name = parser.exception_name
37
37
  @exception_message = parser.exception_message
38
+ @error = options ? options[:error] : nil
38
39
  end
39
40
 
40
41
  def message
41
- "#{exception_string}#{user_message_addon}\n#{@backtrace}"
42
+ url_helpers = Errdo::Engine.routes.url_helpers
43
+ error_url = url_helpers.error_url(@error) if @error
44
+ [exception_string, attachments:
45
+ [
46
+ title: @exception_message,
47
+ title_link: error_url,
48
+ fields: additional_fields,
49
+ color: "#36a64f"
50
+ ]]
42
51
  end
43
52
 
44
53
  private
45
54
 
46
55
  def exception_string
47
- "#{@exception_name || 'None'} | #{@exception_message}"
56
+ @exception_name || 'None'
48
57
  end
49
58
 
50
- def user_message_addon
51
- "\nExperienced by #{user_show_string(@user)} " if @user
59
+ def additional_fields
60
+ fields = [{ title: "Backtrace",
61
+ value: @backtrace.to_s }]
62
+ if @user
63
+ fields += [{ title: "User Affected",
64
+ value: user_show_string(@user) }]
65
+ end
66
+ return fields
52
67
  end
53
68
 
54
69
  end
data/lib/errdo/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Errdo
2
- VERSION = '0.11.3'.freeze
2
+ VERSION = '0.11.4'.freeze
3
3
  end
data/lib/errdo.rb CHANGED
@@ -123,14 +123,14 @@ module Errdo
123
123
 
124
124
  # Logs the error to the database as a warning
125
125
  def self.warn(*args)
126
- Errdo::Logger.new('warning', *args).log
127
- Errdo::Notifier.new(*args).notify
126
+ error = Errdo::Logger.new('warning', *args).log
127
+ Errdo::Notifier.new(*args, error: error).notify
128
128
  end
129
129
 
130
130
  # Logs the error to the database and notifies the user
131
131
  def self.error(*args)
132
- Errdo::Logger.new('error', *args).log
133
- Errdo::Notifier.new(*args).notify
132
+ error = Errdo::Logger.new('error', *args).log
133
+ Errdo::Notifier.new(*args, error: error).notify
134
134
  end
135
135
 
136
136
  def self.setup
@@ -40,4 +40,5 @@ Rails.application.configure do
40
40
 
41
41
  # Raises error for missing translations
42
42
  # config.action_view.raise_on_missing_translations = true
43
+ config.action_mailer.default_url_options = { host: 'localhost:3000' }
43
44
  end
@@ -76,4 +76,6 @@ Rails.application.configure do
76
76
 
77
77
  # Do not dump schema after migrations.
78
78
  config.active_record.dump_schema_after_migration = false
79
+
80
+ config.action_mailer.default_url_options = { host: 'localhost:3000' }
79
81
  end
@@ -39,4 +39,6 @@ Rails.application.configure do
39
39
 
40
40
  # Raises error for missing translations
41
41
  # config.action_view.raise_on_missing_translations = true
42
+
43
+ config.action_mailer.default_url_options = { host: 'localhost:3000' }
42
44
  end
Binary file
Binary file