errornot_notifier 0.1.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. data/CHANGELOG +5 -0
  2. data/INSTALL +8 -8
  3. data/README.rdoc +63 -53
  4. data/Rakefile +92 -8
  5. data/TESTING.rdoc +1 -1
  6. data/generators/{hoptoad/hoptoad_generator.rb → errornot/errornot_generator.rb} +6 -6
  7. data/generators/{hoptoad → errornot}/lib/insert_commands.rb +0 -0
  8. data/generators/{hoptoad → errornot}/lib/rake_commands.rb +0 -0
  9. data/generators/errornot/templates/capistrano_hook.rb +6 -0
  10. data/generators/errornot/templates/errornot_notifier_tasks.rake +5 -0
  11. data/generators/{hoptoad → errornot}/templates/initializer.rb +2 -2
  12. data/lib/{hoptoad_notifier → errornot_notifier}/backtrace.rb +1 -1
  13. data/lib/errornot_notifier/capistrano.rb +20 -0
  14. data/lib/{hoptoad_notifier → errornot_notifier}/configuration.rb +14 -16
  15. data/lib/{hoptoad_notifier → errornot_notifier}/notice.rb +2 -2
  16. data/lib/{hoptoad_notifier → errornot_notifier}/rack.rb +8 -8
  17. data/lib/{hoptoad_notifier → errornot_notifier}/rails/action_controller_catcher.rb +9 -9
  18. data/lib/{hoptoad_notifier → errornot_notifier}/rails/controller_methods.rb +15 -15
  19. data/lib/{hoptoad_notifier → errornot_notifier}/rails/error_lookup.rb +9 -9
  20. data/lib/{hoptoad_notifier → errornot_notifier}/rails.rb +11 -11
  21. data/lib/{hoptoad_notifier → errornot_notifier}/sender.rb +8 -8
  22. data/lib/{hoptoad_notifier → errornot_notifier}/tasks.rb +19 -19
  23. data/lib/errornot_notifier/version.rb +3 -0
  24. data/lib/{hoptoad_notifier.rb → errornot_notifier.rb} +20 -20
  25. data/lib/{hoptoad_tasks.rb → errornot_tasks.rb} +9 -7
  26. data/lib/templates/rescue.erb +5 -5
  27. data/rails/init.rb +1 -1
  28. data/script/integration_test.rb +6 -6
  29. data/test/backtrace_test.rb +16 -16
  30. data/test/catcher_test.rb +22 -22
  31. data/test/configuration_test.rb +21 -23
  32. data/test/erronot_tasks_test.rb +147 -0
  33. data/test/helper.rb +16 -15
  34. data/test/logger_test.rb +12 -10
  35. data/test/notice_test.rb +9 -9
  36. data/test/notifier_test.rb +30 -30
  37. data/test/rack_test.rb +7 -7
  38. data/test/rails_initializer_test.rb +8 -8
  39. data/test/sender_test.rb +13 -12
  40. metadata +73 -53
  41. data/generators/hoptoad/templates/capistrano_hook.rb +0 -6
  42. data/generators/hoptoad/templates/hoptoad_notifier_tasks.rake +0 -5
  43. data/lib/hoptoad_notifier/capistrano.rb +0 -20
  44. data/lib/hoptoad_notifier/version.rb +0 -3
  45. data/test/hoptoad_tasks_test.rb +0 -138
data/CHANGELOG ADDED
@@ -0,0 +1,5 @@
1
+ Version 1.0.0 - XXX
2
+ ===============================================================================
3
+
4
+ Extract from HopToad notifier code base
5
+ and adapt to ErrorNot server
data/INSTALL CHANGED
@@ -1,25 +1,25 @@
1
1
  === Configuration
2
2
 
3
- You should have something like this in config/initializers/hoptoad.rb.
3
+ You should have something like this in config/initializers/errornot.rb.
4
4
 
5
- HoptoadNotifier.configure do |config|
5
+ ErrornotNotifier.configure do |config|
6
6
  config.api_key = '1234567890abcdef'
7
7
  end
8
8
 
9
9
  (Please note that this configuration should be in a global configuration, and
10
- is *not* environment-specific. Hoptoad is smart enough to know what errors are
10
+ is *not* environment-specific. Errornot is smart enough to know what errors are
11
11
  caused by what environments, so your staging errors don't get mixed in with
12
12
  your production errors.)
13
13
 
14
- You can test that Hoptoad is working in your production environment by using
14
+ You can test that Errornot is working in your production environment by using
15
15
  this rake task (from RAILS_ROOT):
16
16
 
17
- rake hoptoad:test
17
+ rake errornot:test
18
18
 
19
- If everything is configured properly, that task will send a notice to Hoptoad
19
+ If everything is configured properly, that task will send a notice to Errornot
20
20
  which will be visible immediately.
21
21
 
22
22
  NOTE FOR RAILS 1.2.* USERS:
23
23
 
24
- You will need to copy the hoptoad_notifier_tasks.rake file into your
25
- RAILS_ROOT/lib/tasks directory in order for the rake hoptoad:test task to work.
24
+ You will need to copy the errornot_notifier_tasks.rake file into your
25
+ RAILS_ROOT/lib/tasks directory in order for the rake errornot:test task to work.
data/README.rdoc CHANGED
@@ -21,14 +21,14 @@ Remove the vendor/plugins/exception_notifier directory.
21
21
 
22
22
  Add the errornot_notifier gem to your app. In config/environment.rb:
23
23
 
24
- config.gem 'errornot_notifier', :lib => 'hoptoad_notifier'
24
+ config.gem 'errornot_notifier'
25
25
 
26
26
  Then from your project's RAILS_ROOT, run:
27
27
 
28
28
  rake gems:install
29
- script/generate hoptoad --api-key your_key_here --server your_host
29
+ script/generate errornot --api-key your_key_here --server your_host
30
30
 
31
- Once installed, you should vendor the hoptoad_notifier gem.
31
+ Once installed, you should vendor the errornot_notifier gem.
32
32
 
33
33
  rake gems:unpack GEM=errornot_notifier
34
34
 
@@ -41,7 +41,7 @@ Install the errornot_notifier gem:
41
41
 
42
42
  gem install errornot_notifier
43
43
 
44
- Once installed, you should vendor the hoptoad_notifier gem:
44
+ Once installed, you should vendor the errornot_notifier gem:
45
45
 
46
46
  mkdir vendor/gems
47
47
  cd vendor/gems
@@ -55,17 +55,17 @@ block in environment.rb so that the vendored gem is loaded.
55
55
 
56
56
  Next add something like this at the bottom of your config/environment.rb:
57
57
 
58
- require 'hoptoad_notifier'
59
- require 'hoptoad_notifier/rails'
60
- HoptoadNotifier.configure do |config|
58
+ require 'errornot_notifier'
59
+ require 'errornot_notifier/rails'
60
+ ErrornotNotifier.configure do |config|
61
61
  config.api_key = 'your_key_here'
62
62
  config.host = 'host_of_your_errornot_instance'
63
63
  end
64
64
 
65
- You will also need to copy the hoptoad_notifier_tasks.rake file into your
66
- RAILS_ROOT/lib/tasks directory in order for the rake hoptoad:test task to work:
65
+ You will also need to copy the errornot_notifier_tasks.rake file into your
66
+ RAILS_ROOT/lib/tasks directory in order for the rake errornot:test task to work:
67
67
 
68
- cp vendor/gems/errornot_notifier-0.1.0/generators/hoptoad/templates/hoptoad_notifier_tasks.rake lib/tasks
68
+ cp vendor/gems/errornot_notifier-*/generators/errornot/templates/errornot_notifier_tasks.rake lib/tasks
69
69
 
70
70
  As always, if you choose not to vendor the errornot_notifier gem, make sure
71
71
  every server you deploy to has the gem installed or your application won't start.
@@ -75,27 +75,27 @@ every server you deploy to has the gem installed or your application won't start
75
75
  You can test that ErrorNot is working in your production environment by using
76
76
  this rake task (from RAILS_ROOT):
77
77
 
78
- rake hoptoad:test
78
+ rake errornot:test
79
79
 
80
- If everything is configured properly, that task will send a notice to Hoptoad
80
+ If everything is configured properly, that task will send a notice to Errornot
81
81
  which will be visible immediately.
82
82
 
83
83
  == Rack
84
84
 
85
- In order to use hoptoad_notifier in a non-Rails rack app, just load the
86
- hoptoad_notifier, configure your API key, and use the HoptoadNotifier::Rack
85
+ In order to use errornot_notifier in a non-Rails rack app, just load the
86
+ errornot_notifier, configure your API key, and use the ErrornotNotifier::Rack
87
87
  middleware:
88
88
 
89
89
  require 'rack'
90
- require 'hoptoad_notifier'
90
+ require 'errornot_notifier'
91
91
 
92
- HoptoadNotifier.configure do |config|
92
+ ErrornotNotifier.configure do |config|
93
93
  config.api_key = 'my_api_key'
94
94
  config.host = 'host_of_your_errornot_instance'
95
95
  end
96
96
 
97
97
  app = Rack::Builder.app do
98
- use HoptoadNotifier::Rack
98
+ use errornotNotifier::Rack
99
99
  run lambda { |env| raise "Rack down" }
100
100
  end
101
101
 
@@ -105,15 +105,15 @@ Using errornot_notifier in a Sinatra app is just like a Rack app, but you have
105
105
  to disable Sinatra's error rescuing functionality:
106
106
 
107
107
  require 'sinatra/base'
108
- require 'hoptoad_notifier'
108
+ require 'errornot_notifier'
109
109
 
110
- HoptoadNotifier.configure do |config|
110
+ ErrornotNotifier.configure do |config|
111
111
  config.api_key = 'my_api_key'
112
112
  config.host =' host_of_your_errornot_instance'
113
113
  end
114
114
 
115
115
  class MyApp < Sinatra::Default
116
- use HoptoadNotifier::Rack
116
+ use ErrornotNotifier::Rack
117
117
  enable :raise_errors
118
118
 
119
119
  get "/" do
@@ -132,36 +132,36 @@ controller, you can do something like this:
132
132
 
133
133
  ...
134
134
  rescue => ex
135
- notify_hoptoad(ex)
135
+ notify_errornot(ex)
136
136
  flash[:failure] = 'Encryptions could not be rerouted, try again.'
137
137
  end
138
138
  ...
139
139
 
140
- The #notify_hoptoad call will send the notice over to Hoptoad for later
141
- analysis. While in your controllers you use the notify_hoptoad method, anywhere
142
- else in your code, use HoptoadNotifier.notify.
140
+ The #notify_errornot call will send the notice over to Errornot for later
141
+ analysis. While in your controllers you use the notify_errornot method, anywhere
142
+ else in your code, use ErrornotNotifier.notify.
143
143
 
144
- To perform custom error processing after Hoptoad has been notified, define the
145
- instance method #rescue_action_in_public_without_hoptoad(exception) in your
144
+ To perform custom error processing after Errornot has been notified, define the
145
+ instance method #rescue_action_in_public_without_errornot(exception) in your
146
146
  controller.
147
147
 
148
- == Tracking deployments in Hoptoad ( It's not implement in ErrorNot )
148
+ == Tracking deployments in Errornot ( It's not implement in ErrorNot )
149
149
 
150
- Paying Hoptoad plans support the ability to track deployments of your application in Hoptoad.
151
- By notifying Hoptoad of your application deployments, all errors are resolved when a deploy occurs,
150
+ Paying Errornot plans support the ability to track deployments of your application in Errornot.
151
+ By notifying Errornot of your application deployments, all errors are resolved when a deploy occurs,
152
152
  so that you'll be notified again about any errors that reoccur after a deployment.
153
153
 
154
- Additionally, it's possible to review the errors in Hoptoad that occurred before and after a deploy.
154
+ Additionally, it's possible to review the errors in Errornot that occurred before and after a deploy.
155
155
 
156
- When Hoptoad is installed as a gem, you need to add
156
+ When Errornot is installed as a gem, you need to add
157
157
 
158
- require 'hoptoad_notifier/capistrano'
158
+ require 'errornot_notifier/capistrano'
159
159
 
160
160
  to your deploy.rb
161
161
 
162
162
  == Going beyond exceptions
163
163
 
164
- You can also pass a hash to notify_hoptoad method and store whatever you want,
164
+ You can also pass a hash to notify_errornot method and store whatever you want,
165
165
  not just an exception. And you can also use it anywhere, not just in
166
166
  controllers:
167
167
 
@@ -171,25 +171,25 @@ controllers:
171
171
  }
172
172
  my_unpredicable_method(params)
173
173
  rescue => e
174
- HoptoadNotifier.notify(
174
+ ErrornotNotifier.notify(
175
175
  :error_class => "Special Error",
176
176
  :error_message => "Special Error: #{e.message}",
177
177
  :parameters => params
178
178
  )
179
179
  end
180
180
 
181
- While in your controllers you use the notify_hoptoad method, anywhere else in
182
- your code, use HoptoadNotifier.notify. Hoptoad will get all the information
181
+ While in your controllers you use the notify_errornot method, anywhere else in
182
+ your code, use ErrornotNotifier.notify. Errornot will get all the information
183
183
  about the error itself. As for a hash, these are the keys you should pass:
184
184
 
185
- * :error_class - Use this to group similar errors together. When Hoptoad catches an exception it sends the class name of that exception object.
185
+ * :error_class - Use this to group similar errors together. When Errornot catches an exception it sends the class name of that exception object.
186
186
  * :error_message - This is the title of the error you see in the errors list. For exceptions it is "#{exception.class.name}: #{exception.message}"
187
- * :parameters - While there are several ways to send additional data to Hoptoad, passing a Hash as :parameters as in the example above is the most common use case. When Hoptoad catches an exception in a controller, the actual HTTP client request parameters are sent using this key.
187
+ * :parameters - While there are several ways to send additional data to Errornot, passing a Hash as :parameters as in the example above is the most common use case. When Errornot catches an exception in a controller, the actual HTTP client request parameters are sent using this key.
188
188
 
189
- Hoptoad merges the hash you pass with these default options:
189
+ Errornot merges the hash you pass with these default options:
190
190
 
191
191
  {
192
- :api_key => HoptoadNotifier.api_key,
192
+ :api_key => ErrornotNotifier.api_key,
193
193
  :error_message => 'Notification',
194
194
  :backtrace => caller,
195
195
  :parameters => {},
@@ -200,14 +200,14 @@ You can override any of those parameters.
200
200
 
201
201
  == Filtering
202
202
 
203
- You can specify a whitelist of errors, that Hoptoad will not report on. Use
203
+ You can specify a whitelist of errors, that Errornot will not report on. Use
204
204
  this feature when you are so apathetic to certain errors that you don't want
205
205
  them even logged.
206
206
 
207
207
  This filter will only be applied to automatic notifications, not manual
208
208
  notifications (when #notify is called directly).
209
209
 
210
- Hoptoad ignores the following exceptions by default:
210
+ Errornot ignores the following exceptions by default:
211
211
 
212
212
  ActiveRecord::RecordNotFound
213
213
  ActionController::RoutingError
@@ -215,10 +215,10 @@ Hoptoad ignores the following exceptions by default:
215
215
  ActionController::UnknownAction
216
216
  CGI::Session::CookieStore::TamperedWithCookie
217
217
 
218
- To ignore errors in addition to those, specify their names in your Hoptoad
218
+ To ignore errors in addition to those, specify their names in your Errornot
219
219
  configuration block.
220
220
 
221
- HoptoadNotifier.configure do |config|
221
+ ErrornotNotifier.configure do |config|
222
222
  config.api_key = '1234567890abcdef'
223
223
  config.ignore << ActiveRecord::IgnoreThisError
224
224
  end
@@ -226,7 +226,7 @@ configuration block.
226
226
  To ignore *only* certain errors (and override the defaults), use the
227
227
  #ignore_only attribute.
228
228
 
229
- HoptoadNotifier.configure do |config|
229
+ ErrornotNotifier.configure do |config|
230
230
  config.api_key = '1234567890abcdef'
231
231
  config.ignore_only = [ActiveRecord::IgnoreThisError]
232
232
  end
@@ -234,7 +234,7 @@ To ignore *only* certain errors (and override the defaults), use the
234
234
  To ignore certain user agents, add in the #ignore_user_agent attribute as a
235
235
  string or regexp:
236
236
 
237
- HoptoadNotifier.configure do |config|
237
+ ErrornotNotifier.configure do |config|
238
238
  config.api_key = '1234567890abcdef'
239
239
  config.ignore_user_agent << /Ignored/
240
240
  config.ignore_user_agent << 'IgnoredUserAgent'
@@ -242,42 +242,52 @@ string or regexp:
242
242
 
243
243
  To ignore exceptions based on other conditions, use #ignore_by_filter:
244
244
 
245
- HoptoadNotifier.configure do |config|
245
+ ErrornotNotifier.configure do |config|
246
246
  config.api_key = '1234567890abcdef'
247
247
  config.ignore_by_filter do |exception_data|
248
248
  true if exception_data[:error_class] == "RuntimeError"
249
249
  end
250
250
  end
251
251
 
252
- To replace sensitive information sent to the Hoptoad service with [FILTERED] use #params_filters:
252
+ To replace sensitive information sent to the Errornot service with [FILTERED] use #params_filters:
253
253
 
254
- HoptoadNotifier.configure do |config|
254
+ ErrornotNotifier.configure do |config|
255
255
  config.api_key = '1234567890abcdef'
256
256
  config.params_filters << "credit_card_number"
257
257
  end
258
258
 
259
259
  Note that, when rescuing exceptions within an ActionController method,
260
- hoptoad_notifier will reuse filters specified by #filter_params_logging.
260
+ errornot_notifier will reuse filters specified by #filter_params_logging.
261
261
 
262
262
  == Testing
263
263
 
264
- When you run your tests, you might notice that the Hoptoad service is recording
264
+ When you run your tests, you might notice that the Errornot service is recording
265
265
  notices generated using #notify when you don't expect it to. You can
266
266
  use code like this in your test_helper.rb to redefine that method so those
267
267
  errors are not reported while running tests.
268
268
 
269
- module HoptoadNotifier
269
+ module ErrornotNotifier
270
270
  def self.notify(thing)
271
271
  # do nothing.
272
272
  end
273
273
  end
274
274
 
275
+ == Proxy Support
276
+
277
+ The notifier supports using a proxy, if your server is not able to directly reach the Errornot servers. To configure the proxy settings, added the following information to your Errornot configuration block.
278
+
279
+ ErrornotNotifier.configure do |config|
280
+ config.proxy_host = ...
281
+ config.proxy_port = ...
282
+ config.proxy_user = ...
283
+ config.proxy_pass = ...
284
+
275
285
  == Supported Rails versions
276
286
 
277
287
  See SUPPORTED_RAILS_VERSIONS for a list of official supported versions of
278
288
  Rails.
279
289
 
280
- Please open up a support ticket on Tender ( http://help.hoptoadapp.com ) if
290
+ Please open up a support ticket on Tender ( http://help.Errornotapp.com ) if
281
291
  you're using a version of Rails that is not listed above and the notifier is
282
292
  not working properly.
283
293
 
data/Rakefile CHANGED
@@ -7,7 +7,7 @@ require 'cucumber/rake/task'
7
7
  desc 'Default: run unit tests.'
8
8
  task :default => [:test, :cucumber]
9
9
 
10
- desc 'Test the hoptoad_notifier gem.'
10
+ desc 'Test the errornot_notifier gem.'
11
11
  Rake::TestTask.new(:test) do |t|
12
12
  t.libs << 'lib'
13
13
  t.pattern = 'test/**/*_test.rb'
@@ -22,6 +22,83 @@ task :ginger do
22
22
  load File.join(*%w[vendor ginger bin ginger])
23
23
  end
24
24
 
25
+ namespace :changeling do
26
+ desc "Bumps the version by a minor or patch version, depending on what was passed in."
27
+ task :bump, :part do |t, args|
28
+ # Thanks, Jeweler!
29
+ if ErrornotNotifier::VERSION =~ /^(\d+)\.(\d+)\.(\d+)(?:\.(.*?))?$/
30
+ major = $1.to_i
31
+ minor = $2.to_i
32
+ patch = $3.to_i
33
+ build = $4
34
+ else
35
+ abort
36
+ end
37
+
38
+ case args[:part]
39
+ when /minor/
40
+ minor += 1
41
+ patch = 0
42
+ when /patch/
43
+ patch += 1
44
+ else
45
+ abort
46
+ end
47
+
48
+ version = [major, minor, patch, build].compact.join('.')
49
+
50
+ File.open(File.join("lib", "errornot_notifier", "version.rb"), "w") do |f|
51
+ f.write <<EOF
52
+ module ErrornotNotifier
53
+ VERSION = "#{version}".freeze
54
+ end
55
+ EOF
56
+ end
57
+ end
58
+
59
+ desc "Writes out the new CHANGELOG and prepares the release"
60
+ task :change do
61
+ load 'lib/errornot_notifier/version.rb'
62
+ file = "CHANGELOG"
63
+ old = File.read(file)
64
+ version = ErrornotNotifier::VERSION
65
+ message = "Bumping to version #{version}"
66
+
67
+ File.open(file, "w") do |f|
68
+ f.write <<EOF
69
+ Version #{version} - #{Date.today}
70
+ ===============================================================================
71
+
72
+ #{`git log $(git tag | tail -1)..HEAD | git shortlog`}
73
+ #{old}
74
+ EOF
75
+ end
76
+
77
+ exec ["#{ENV["EDITOR"]} #{file}",
78
+ "git commit -aqm '#{message}'",
79
+ "git tag -a -m '#{message}' v#{version}",
80
+ "echo '\n\n\033[32mMarked v#{version} /' `git show-ref -s refs/heads/master` 'for release. Run: rake changeling:push\033[0m\n\n'"].join(' && ')
81
+ end
82
+
83
+ desc "Bump by a minor version (1.2.3 => 1.3.0)"
84
+ task :minor do |t|
85
+ Rake::Task['changeling:bump'].invoke(t.name)
86
+ Rake::Task['changeling:change'].invoke
87
+ end
88
+
89
+ desc "Bump by a patch version, (1.2.3 => 1.2.4)"
90
+ task :patch do |t|
91
+ Rake::Task['changeling:bump'].invoke(t.name)
92
+ Rake::Task['changeling:change'].invoke
93
+ end
94
+
95
+ desc "Push the latest version and tags"
96
+ task :push do |t|
97
+ system("git push origin master")
98
+ system("git push origin $(git tag | tail -1)")
99
+ end
100
+ end
101
+
25
102
  begin
26
103
  require 'yard'
27
104
  YARD::Rake::YardocTask.new do |t|
@@ -31,13 +108,13 @@ rescue LoadError
31
108
  end
32
109
 
33
110
  GEM_ROOT = File.dirname(__FILE__).freeze
34
- VERSION_FILE = File.join(GEM_ROOT, 'lib', 'hoptoad_notifier', 'version')
111
+ VERSION_FILE = File.join(GEM_ROOT, 'lib', 'errornot_notifier', 'version')
35
112
 
36
113
  require VERSION_FILE
37
114
 
38
115
  gemspec = Gem::Specification.new do |s|
39
116
  s.name = %q{errornot_notifier}
40
- s.version = HoptoadNotifier::VERSION
117
+ s.version = ErrornotNotifier::VERSION
41
118
  s.summary = %q{Send your application errors to a hosted service and reclaim your inbox.}
42
119
 
43
120
  s.files = FileList['[A-Z]*', 'generators/**/*.*', 'lib/**/*.rb',
@@ -58,8 +135,8 @@ gemspec = Gem::Specification.new do |s|
58
135
  s.add_development_dependency("shoulda")
59
136
 
60
137
  s.authors = ["thoughtbot, inc, Cyril Mougel"]
61
- s.email = %q{support@hoptoadapp.com}
62
- s.homepage = "http://www.hoptoadapp.com"
138
+ s.email = %q{cyril.mougel@gmail.com}
139
+ s.homepage = "http://github.com/shingara/errornot_notifier"
63
140
 
64
141
  s.platform = Gem::Platform::RUBY
65
142
  end
@@ -85,19 +162,26 @@ LOCAL_GEMS = [['sham_rack', nil], ['capistrano', nil], ['sqlite3-ruby', nil], ['
85
162
  RAILS_VERSIONS.collect { |version| ['rails', version] }
86
163
 
87
164
  task :vendor_test_gems do
165
+ old_gem_path = ENV['GEM_PATH']
166
+ old_gem_home = ENV['GEM_HOME']
167
+ ENV['GEM_PATH'] = LOCAL_GEM_ROOT
168
+ ENV['GEM_HOME'] = LOCAL_GEM_ROOT
88
169
  LOCAL_GEMS.each do |gem_name, version|
89
170
  gem_file_pattern = [gem_name, version || '*'].compact.join('-')
90
171
  version_option = version ? "-v #{version}" : ''
91
172
  pattern = File.join(LOCAL_GEM_ROOT, 'gems', "#{gem_file_pattern}")
92
173
  existing = Dir.glob(pattern).first
93
174
  unless existing
94
- command = "gem install -i #{LOCAL_GEM_ROOT} --no-ri --no-rdoc #{version_option} #{gem_name}"
175
+ command = "gem install -i #{LOCAL_GEM_ROOT} --no-ri --no-rdoc --backtrace #{version_option} #{gem_name}"
95
176
  puts "Vendoring #{gem_file_pattern}..."
96
- unless system(command)
97
- $stderr.puts "Command failed: #{command}"
177
+ unless system("#{command} 2>&1")
178
+ puts "Command failed: #{command}"
179
+ exit(1)
98
180
  end
99
181
  end
100
182
  end
183
+ ENV['GEM_PATH'] = old_gem_path
184
+ ENV['GEM_HOME'] = old_gem_home
101
185
  end
102
186
 
103
187
  Cucumber::Rake::Task.new(:cucumber) do |t|
data/TESTING.rdoc CHANGED
@@ -1,6 +1,6 @@
1
1
  = For Maintainers:
2
2
 
3
- When developing the Hoptoad Notifier, be sure to use the integration test
3
+ When developing the Errornot Notifier, be sure to use the integration test
4
4
  against an existing project on staging before pushing to master.
5
5
 
6
6
  +./script/integration_test.rb <test project's api key> <staging server hostname>+
@@ -1,7 +1,7 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + "/lib/insert_commands.rb")
2
2
  require File.expand_path(File.dirname(__FILE__) + "/lib/rake_commands.rb")
3
3
 
4
- class HoptoadGenerator < Rails::Generator::Base
4
+ class ErrornotGenerator < Rails::Generator::Base
5
5
  def add_options!(opt)
6
6
  opt.on('-k', '--api-key=key', String, "Your ErrorNot API key") {|v| options[:api_key] = v}
7
7
  opt.on('-s', '--server=host', String, "Your host with errorNot is installed") {|v| options[:host] = v}
@@ -19,7 +19,7 @@ class HoptoadGenerator < Rails::Generator::Base
19
19
  end
20
20
  record do |m|
21
21
  m.directory 'lib/tasks'
22
- m.file 'hoptoad_notifier_tasks.rake', 'lib/tasks/hoptoad_notifier_tasks.rake'
22
+ m.file 'errornot_notifier_tasks.rake', 'lib/tasks/errornot_notifier_tasks.rake'
23
23
  if File.exists?('config/deploy.rb')
24
24
  m.append_to 'config/deploy.rb', capistrano_hook
25
25
  end
@@ -32,10 +32,10 @@ class HoptoadGenerator < Rails::Generator::Base
32
32
  m.template 'initializer.rb', 'config/errornot.rb',
33
33
  :assigns => {:api_key => options[:api_key],
34
34
  :host => options[:host]}
35
- m.append_to 'config/environment.rb', "require 'config/hoptoad'"
35
+ m.append_to 'config/environment.rb', "require 'config/errornot'"
36
36
  end
37
37
  end
38
- m.rake "hoptoad:test", :generate_only => true
38
+ m.rake "errornot:test", :generate_only => true
39
39
  end
40
40
  end
41
41
 
@@ -44,8 +44,8 @@ class HoptoadGenerator < Rails::Generator::Base
44
44
  end
45
45
 
46
46
  def api_key_configured?
47
- File.exists?('config/initializers/hoptoad.rb') ||
48
- system("grep HoptoadNotifier config/environment.rb")
47
+ File.exists?('config/initializers/errornot.rb') ||
48
+ system("grep ErrornotNotifier config/environment.rb")
49
49
  end
50
50
 
51
51
  def capistrano_hook
@@ -0,0 +1,6 @@
1
+
2
+ Dir[File.join(File.dirname(__FILE__), '..', 'vendor', 'gems', 'errornot_notifier-*')].each do |vendored_notifier|
3
+ $: << File.join(vendored_notifier, 'lib')
4
+ end
5
+
6
+ require 'errornot_notifier/capistrano'
@@ -0,0 +1,5 @@
1
+ Dir[File.join(RAILS_ROOT, 'vendor', 'gems', 'errornot_notifier-*')].each do |vendored_notifier|
2
+ $: << File.join(vendored_notifier, 'lib')
3
+ end
4
+
5
+ require 'errornot_notifier/tasks'
@@ -1,7 +1,7 @@
1
1
  <% if Rails::VERSION::MINOR < 2 -%>
2
- require 'hoptoad_notifier/rails'
2
+ require 'errornot_notifier/rails'
3
3
  <% end -%>
4
- HoptoadNotifier.configure do |config|
4
+ ErrornotNotifier.configure do |config|
5
5
  config.api_key = '<%= api_key %>'
6
6
  config.host = '<%= host %>'
7
7
  end
@@ -1,4 +1,4 @@
1
- module HoptoadNotifier
1
+ module ErrornotNotifier
2
2
  # Front end to parsing the backtrace for each notice
3
3
  class Backtrace
4
4
 
@@ -0,0 +1,20 @@
1
+ # Defines deploy:notify_errornot which will send information about the deploy to Errornot.
2
+
3
+ Capistrano::Configuration.instance(:must_exist).load do
4
+ after "deploy", "deploy:notify_errornot"
5
+ after "deploy:migrations", "deploy:notify_errornot"
6
+
7
+ namespace :deploy do
8
+ desc "Notify Errornot of the deployment"
9
+ task :notify_errornot, :except => { :no_release => true } do
10
+ rails_env = fetch(:errornot_env, fetch(:rails_env, "production"))
11
+ local_user = ENV['USER'] || ENV['USERNAME']
12
+ executable = RUBY_PLATFORM.downcase.include?('mswin') ? 'rake.bat' : 'rake'
13
+ notify_command = "#{executable} errornot:deploy TO=#{rails_env} REVISION=#{current_revision} REPO=#{repository} USER=#{local_user}"
14
+ notify_command << " API_KEY=#{ENV['API_KEY']}" if ENV['API_KEY']
15
+ puts "Notifying Errornot of Deploy (#{notify_command})"
16
+ `#{notify_command}`
17
+ puts "Errornot Notification Complete."
18
+ end
19
+ end
20
+ end