exception_notification 3.0.0 → 3.0.1.rc1

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.rdoc CHANGED
@@ -1,8 +1,17 @@
1
+ == 3.0.1
2
+
3
+ * enhancements
4
+ * Custom Headers (by @DouweM)
5
+ * Make Tinder a soft-dependency (by @fgrehm)
6
+
7
+ * bug fixes
8
+ * Fix `code converter not found` (by @alanjds)
9
+
1
10
  == 3.0.0
2
11
 
3
12
  * enhancements
4
13
  * Campfire integration
5
- * Support fot HTML notifications (by @Xenofex)
14
+ * Support for HTML notifications (by @Xenofex)
6
15
  * Be able to override SMTP settings (by @piglop and @Macint)
7
16
 
8
17
  * bug fixes
data/Gemfile.lock CHANGED
@@ -1,9 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- exception_notification (3.0.0)
4
+ exception_notification (3.0.1.rc1)
5
5
  actionmailer (>= 3.0.4)
6
- tinder (~> 1.8)
7
6
 
8
7
  GEM
9
8
  remote: http://rubygems.org/
@@ -120,3 +119,4 @@ DEPENDENCIES
120
119
  mocha (>= 0.11.3)
121
120
  rails (>= 3.0.4)
122
121
  sqlite3 (>= 1.3.4)
122
+ tinder (~> 1.8)
data/README.md CHANGED
@@ -40,8 +40,16 @@ Campfire Integration
40
40
 
41
41
  Additionally, ExceptionNotification supports sending notifications to
42
42
  your Campfire room.
43
+
44
+ First you'll need to add [tinder](https://github.com/collectiveidea/tinder)
45
+ to your `Gemfile`:
46
+
47
+ ```ruby
48
+ gem 'tinder'
49
+ ```
50
+
43
51
  To configure it, you need to set the subdomain, token and room name,
44
- like this
52
+ like this:
45
53
 
46
54
  ```ruby
47
55
  Whatever::Application.config.middleware.use ExceptionNotifier,
@@ -90,7 +98,7 @@ Whatever::Application.config.middleware.use ExceptionNotifier,
90
98
  :sections => %w{my_section1 my_section2} + ExceptionNotifier::Notifier.default_sections
91
99
  ```
92
100
 
93
- Place your custom sections under `./app/views/exception_notifier/` with the suffix `.text.erb`, e.g.
101
+ Place your custom sections under `./app/views/exception_notifier/` with the suffix `.text.erb`, e.g.
94
102
  `./app/views/exception_notifier/_my_section1.text.erb`.
95
103
 
96
104
  If your new section requires information that isn't available by default, make sure
@@ -192,6 +200,20 @@ Whatever::Application.config.middleware.use ExceptionNotifier,
192
200
  You can make use of both the environment and the exception inside the lambda to decide wether to
193
201
  avoid or not sending the notification.
194
202
 
203
+ ### Headers
204
+
205
+ Additionally, you may want to set customized headers on the outcoming
206
+ emails. To do so, simply use the _:email_headers_ option:
207
+
208
+ ```ruby
209
+ Whatever::Application.config.middleware.use ExceptionNotifier,
210
+ :email_prefix => "[Whatever] ",
211
+ :sender_address => %{"notifier" <notifier@example.com>},
212
+ :exception_recipients => %w{exceptions@example.com},
213
+ :ignore_if => lambda { |env, e| e.message =~ /^Couldn't find Page with ID=/ },
214
+ :email_headers => { "X-Custom-Header" => "foobar" }
215
+ ```
216
+
195
217
  ### Verbose
196
218
 
197
219
  You can also choose to exclude the exception message from the subject, which is included by default.
data/Rakefile CHANGED
@@ -3,8 +3,12 @@ Bundler::GemHelper.install_tasks
3
3
 
4
4
  require 'rake/testtask'
5
5
 
6
- unless File.exists? "test/dummy/db/test.sqlite3"
7
- sh "cd test/dummy; rake db:migrate; rake db:test:prepare; cd ../../;"
6
+ task 'setup_dummy_app' do
7
+ unless File.exists? "test/dummy/db/test.sqlite3"
8
+ Bundler.with_clean_env do
9
+ sh "cd test/dummy; bundle; rake db:migrate; rake db:test:prepare; cd ../../;"
10
+ end
11
+ end
8
12
  end
9
13
 
10
14
  Rake::TestTask.new(:test) do |t|
@@ -14,4 +18,4 @@ Rake::TestTask.new(:test) do |t|
14
18
  t.verbose = true
15
19
  end
16
20
 
17
- task :default => :test
21
+ task :default => [:setup_dummy_app, :test]
@@ -1,8 +1,8 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'exception_notification'
3
- s.version = '3.0.0'
3
+ s.version = '3.0.1.rc1'
4
4
  s.authors = ["Jamis Buck", "Josh Peek"]
5
- s.date = %q{2012-10-15}
5
+ s.date = %q{2013-01-19}
6
6
  s.summary = "Exception notification for Rails apps"
7
7
  s.homepage = "http://smartinez87.github.com/exception_notification"
8
8
  s.email = "smartinez87@gmail.com"
@@ -12,7 +12,8 @@ Gem::Specification.new do |s|
12
12
  s.require_path = 'lib'
13
13
 
14
14
  s.add_dependency("actionmailer", ">= 3.0.4")
15
- s.add_dependency("tinder", "~> 1.8")
15
+
16
+ s.add_development_dependency "tinder", "~> 1.8"
16
17
  s.add_development_dependency "rails", ">= 3.0.4"
17
18
  s.add_development_dependency "mocha", ">= 0.11.3"
18
19
  s.add_development_dependency "sqlite3", ">= 1.3.4"
@@ -28,6 +28,7 @@ class ExceptionNotifier
28
28
  Notifier.default_verbose_subject = @options[:verbose_subject]
29
29
  Notifier.default_normalize_subject = @options[:normalize_subject]
30
30
  Notifier.default_smtp_settings = @options[:smtp_settings]
31
+ Notifier.default_email_headers = @options[:email_headers]
31
32
 
32
33
  @campfire = CampfireNotifier.new @options[:campfire]
33
34
 
@@ -1,6 +1,6 @@
1
1
  class ExceptionNotifier
2
2
  class CampfireNotifier
3
- require 'tinder'
3
+ cattr_accessor :tinder_available, true
4
4
 
5
5
  attr_accessor :subdomain
6
6
  attr_accessor :token
@@ -8,6 +8,8 @@ class ExceptionNotifier
8
8
 
9
9
  def initialize(options)
10
10
  begin
11
+ return unless tinder_available
12
+
11
13
  subdomain = options.delete(:subdomain)
12
14
  room_name = options.delete(:room_name)
13
15
  @campfire = Tinder::Campfire.new subdomain, options
@@ -28,3 +30,5 @@ class ExceptionNotifier
28
30
  end
29
31
  end
30
32
  end
33
+
34
+ ExceptionNotifier::CampfireNotifier.tinder_available = Gem.loaded_specs.keys.include? 'tinder'
@@ -18,6 +18,7 @@ class ExceptionNotifier
18
18
  attr_writer :default_verbose_subject
19
19
  attr_writer :default_normalize_subject
20
20
  attr_writer :default_smtp_settings
21
+ attr_writer :default_email_headers
21
22
 
22
23
  def default_sender_address
23
24
  @default_sender_address || %("Exception Notifier" <exception.notifier@default.com>)
@@ -55,6 +56,10 @@ class ExceptionNotifier
55
56
  @default_smtp_settings || nil
56
57
  end
57
58
 
59
+ def default_email_headers
60
+ @default_email_headers || {}
61
+ end
62
+
58
63
  def default_options
59
64
  { :sender_address => default_sender_address,
60
65
  :exception_recipients => default_exception_recipients,
@@ -65,7 +70,8 @@ class ExceptionNotifier
65
70
  :verbose_subject => default_verbose_subject,
66
71
  :normalize_subject => default_normalize_subject,
67
72
  :template_path => mailer_name,
68
- :smtp_settings => default_smtp_settings }
73
+ :smtp_settings => default_smtp_settings,
74
+ :email_headers => default_email_headers }
69
75
  end
70
76
 
71
77
  def normalize_digits(string)
@@ -155,8 +161,14 @@ class ExceptionNotifier
155
161
  subject = compose_subject
156
162
  name = @env.nil? ? 'background_exception_notification' : 'exception_notification'
157
163
 
158
- mail = mail(:to => @options[:exception_recipients], :from => @options[:sender_address],
159
- :subject => subject, :template_name => name) do |format|
164
+ headers = {
165
+ :to => @options[:exception_recipients],
166
+ :from => @options[:sender_address],
167
+ :subject => subject,
168
+ :template_name => name
169
+ }.merge(@options[:email_headers])
170
+
171
+ mail = mail(headers) do |format|
160
172
  format.text
161
173
  format.html if html_mail?
162
174
  end
@@ -18,7 +18,7 @@
18
18
  "#{title}\n\n#{summary.gsub(/^/, " ")}\n\n"
19
19
  end
20
20
  end.join
21
- sections = sections.force_encoding('UTF-8').encode('UTF-16', :invalid => :replace).encode('UTF-8') if sections.respond_to?(:force_encoding)
21
+ sections = sections.force_encoding('UTF-8').encode('UTF-16LE', :invalid => :replace).encode('UTF-8') if sections.respond_to?(:force_encoding)
22
22
  %>
23
23
  <%= raw sections %>
24
24
  </pre>
@@ -10,6 +10,6 @@
10
10
  "#{title}\n\n#{summary.gsub(/^/, " ")}\n\n"
11
11
  end
12
12
  end.join
13
- sections = sections.force_encoding('UTF-8').encode('UTF-16', :invalid => :replace).encode('UTF-8') if sections.respond_to?(:force_encoding)
13
+ sections = sections.force_encoding('UTF-8').encode('UTF-16LE', :invalid => :replace).encode('UTF-8') if sections.respond_to?(:force_encoding)
14
14
  %>
15
15
  <%= raw sections %>
@@ -27,7 +27,7 @@
27
27
  [title, summary.gsub(/^/, " "), nil].join("\n\n")
28
28
  end
29
29
  end.join
30
- sections = sections.force_encoding('UTF-8').encode('UTF-16', :invalid => :replace).encode('UTF-8') if sections.respond_to?(:force_encoding)
30
+ sections = sections.force_encoding('UTF-8').encode('UTF-16LE', :invalid => :replace).encode('UTF-8') if sections.respond_to?(:force_encoding)
31
31
  %>
32
32
 
33
33
  <%= raw sections %>
@@ -19,7 +19,7 @@
19
19
  [title, summary.gsub(/^/, " "), nil].join("\n\n")
20
20
  end
21
21
  end.join
22
- sections = sections.force_encoding('UTF-8').encode('UTF-16', :invalid => :replace).encode('UTF-8') if sections.respond_to?(:force_encoding)
22
+ sections = sections.force_encoding('UTF-8').encode('UTF-16LE', :invalid => :replace).encode('UTF-8') if sections.respond_to?(:force_encoding)
23
23
  %>
24
24
 
25
25
  <%= raw sections %>
@@ -1,4 +1,5 @@
1
1
  require 'test_helper'
2
+ require 'tinder'
2
3
 
3
4
  class CampfireNotifierTest < ActiveSupport::TestCase
4
5
 
data/test/dummy/Gemfile CHANGED
@@ -7,6 +7,7 @@ gem 'rails', '3.2.8'
7
7
 
8
8
  gem 'sqlite3'
9
9
 
10
+ gem 'tinder'
10
11
  gem 'exception_notification', :path => "../../.."
11
12
  # Use unicorn as the web server
12
13
  # gem 'unicorn'
@@ -3,7 +3,6 @@ PATH
3
3
  specs:
4
4
  exception_notification (3.0.0)
5
5
  actionmailer (>= 3.0.4)
6
- tinder (~> 1.8)
7
6
 
8
7
  GEM
9
8
  remote: http://rubygems.org/
@@ -116,3 +115,4 @@ DEPENDENCIES
116
115
  exception_notification!
117
116
  rails (= 3.2.8)
118
117
  sqlite3
118
+ tinder
@@ -5,6 +5,7 @@ Dummy::Application.config.middleware.use ExceptionNotifier,
5
5
  :email_prefix => "[Dummy ERROR] ",
6
6
  :sender_address => %{"Dummy Notifier" <dummynotifier@example.com>},
7
7
  :exception_recipients => %w{dummyexceptions@example.com},
8
+ :email_headers => { "X-Custom-Header" => "foobar" },
8
9
  :sections => ['new_section', 'request', 'session', 'environment', 'backtrace'],
9
10
  :background_sections => %w(new_bkg_section) + ExceptionNotifier::Notifier.default_background_sections
10
11
 
@@ -11,7 +11,6 @@ Dummy::Application.configure do
11
11
 
12
12
  # Show full error reports and disable caching
13
13
  config.consider_all_requests_local = true
14
- config.action_view.debug_rjs = true
15
14
  config.action_controller.perform_caching = false
16
15
 
17
16
  # Don't care if the mailer can't send
@@ -23,4 +22,3 @@ Dummy::Application.configure do
23
22
  # Only use best-standards-support built into browsers
24
23
  config.action_dispatch.best_standards_support = :builtin
25
24
  end
26
-
@@ -1,3 +1,4 @@
1
+ # encoding: UTF-8
1
2
  # This file is auto-generated from the current state of the database. Instead
2
3
  # of editing this file, please use the migrations feature of Active Record to
3
4
  # incrementally modify your database, and then regenerate this schema definition.
@@ -16,8 +17,8 @@ ActiveRecord::Schema.define(:version => 20110729022608) do
16
17
  t.string "title"
17
18
  t.text "body"
18
19
  t.string "secret"
19
- t.datetime "created_at"
20
- t.datetime "updated_at"
20
+ t.datetime "created_at", :null => false
21
+ t.datetime "updated_at", :null => false
21
22
  end
22
23
 
23
24
  end
@@ -59,6 +59,10 @@ class PostsControllerTest < ActionController::TestCase
59
59
  assert @mail.encoded.include? "secret\"=>\"[FILTERED]"
60
60
  end
61
61
 
62
+ test "mail should contain the custom header" do
63
+ assert @mail.encoded.include? 'X-Custom-Header: foobar'
64
+ end
65
+
62
66
  test "mail should not contain any attachments" do
63
67
  assert @mail.attachments == []
64
68
  end
@@ -17,6 +17,10 @@ class ExceptionNotificationTest < ActiveSupport::TestCase
17
17
  assert ExceptionNotifier::Notifier.default_email_format == :text
18
18
  end
19
19
 
20
+ test "should have default email headers overridden" do
21
+ assert ExceptionNotifier::Notifier.default_email_headers == { "X-Custom-Header" => "foobar"}
22
+ end
23
+
20
24
  test "should have default sections" do
21
25
  for section in %w(request session environment backtrace)
22
26
  assert ExceptionNotifier::Notifier.default_sections.include? section
metadata CHANGED
@@ -1,8 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: exception_notification
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0
5
- prerelease:
4
+ version: 3.0.1.rc1
5
+ prerelease: 6
6
6
  platform: ruby
7
7
  authors:
8
8
  - Jamis Buck
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-10-15 00:00:00.000000000 Z
13
+ date: 2013-01-19 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: actionmailer
@@ -36,7 +36,7 @@ dependencies:
36
36
  - - ~>
37
37
  - !ruby/object:Gem::Version
38
38
  version: '1.8'
39
- type: :runtime
39
+ type: :development
40
40
  prerelease: false
41
41
  version_requirements: !ruby/object:Gem::Requirement
42
42
  none: false
@@ -200,9 +200,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
200
200
  required_rubygems_version: !ruby/object:Gem::Requirement
201
201
  none: false
202
202
  requirements:
203
- - - ! '>='
203
+ - - ! '>'
204
204
  - !ruby/object:Gem::Version
205
- version: '0'
205
+ version: 1.3.1
206
206
  requirements: []
207
207
  rubyforge_project:
208
208
  rubygems_version: 1.8.23