errdo 0.11.3 → 0.11.4

Sign up to get free protection for your applications and to get access to all the features.
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