airbrake 4.3.8 → 5.0.0.rc.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (134) hide show
  1. checksums.yaml +4 -4
  2. data/lib/airbrake.rb +16 -185
  3. data/lib/airbrake/capistrano/tasks.rb +64 -0
  4. data/lib/airbrake/delayed_job/plugin.rb +48 -0
  5. data/lib/airbrake/rack/middleware.rb +45 -0
  6. data/lib/airbrake/rack/notice_builder.rb +80 -0
  7. data/lib/airbrake/rack/user.rb +51 -0
  8. data/lib/airbrake/rails/action_controller.rb +35 -0
  9. data/lib/airbrake/rails/active_job.rb +23 -0
  10. data/lib/airbrake/rails/active_record.rb +40 -0
  11. data/lib/airbrake/rails/railtie.rb +61 -0
  12. data/lib/airbrake/rake/task_ext.rb +61 -0
  13. data/lib/airbrake/rake/tasks.rb +93 -0
  14. data/lib/airbrake/resque/failure.rb +19 -0
  15. data/lib/airbrake/sidekiq/error_handler.rb +35 -0
  16. data/lib/airbrake/version.rb +4 -1
  17. data/lib/generators/airbrake_generator.rb +25 -0
  18. data/lib/generators/airbrake_initializer.rb.erb +55 -0
  19. data/spec/airbrake_spec.rb +0 -0
  20. data/spec/apps/rack/dummy_app.rb +17 -0
  21. data/spec/apps/rails/dummy_app.rb +150 -0
  22. data/spec/apps/rails/dummy_task.rake +20 -0
  23. data/spec/apps/rails/logs/32.log +13358 -0
  24. data/spec/apps/rails/logs/40.log +6854 -0
  25. data/spec/apps/rails/logs/41.log +3170 -0
  26. data/spec/apps/rails/logs/42.log +23919 -0
  27. data/spec/apps/rails/logs/50.log +10976 -0
  28. data/spec/apps/sinatra/dummy_app.rb +12 -0
  29. data/spec/integration/rack/rack_spec.rb +17 -0
  30. data/spec/integration/rails/rails_spec.rb +135 -0
  31. data/spec/integration/rails/rake_spec.rb +160 -0
  32. data/spec/integration/shared_examples/rack_examples.rb +106 -0
  33. data/spec/integration/sinatra/sinatra_spec.rb +15 -0
  34. data/spec/spec_helper.rb +127 -0
  35. data/spec/unit/rack/middleware_spec.rb +80 -0
  36. data/spec/unit/rack/notice_builder_spec.rb +35 -0
  37. data/spec/unit/rack/user_spec.rb +78 -0
  38. data/spec/unit/rake/tasks_spec.rb +40 -0
  39. data/spec/unit/sidekiq/error_handler_spec.rb +29 -0
  40. metadata +110 -325
  41. data/CHANGELOG +0 -1716
  42. data/Gemfile +0 -3
  43. data/Guardfile +0 -6
  44. data/INSTALL +0 -20
  45. data/LICENSE +0 -61
  46. data/README.md +0 -148
  47. data/README_FOR_HEROKU_ADDON.md +0 -102
  48. data/Rakefile +0 -179
  49. data/TESTED_AGAINST +0 -7
  50. data/airbrake.gemspec +0 -41
  51. data/bin/airbrake +0 -12
  52. data/features/metal.feature +0 -34
  53. data/features/rack.feature +0 -60
  54. data/features/rails.feature +0 -324
  55. data/features/rake.feature +0 -33
  56. data/features/sinatra.feature +0 -126
  57. data/features/step_definitions/file_steps.rb +0 -14
  58. data/features/step_definitions/rack_steps.rb +0 -27
  59. data/features/step_definitions/rails_application_steps.rb +0 -267
  60. data/features/step_definitions/rake_steps.rb +0 -22
  61. data/features/support/airbrake_shim.rb.template +0 -11
  62. data/features/support/aruba.rb +0 -5
  63. data/features/support/env.rb +0 -39
  64. data/features/support/matchers.rb +0 -35
  65. data/features/support/rails.rb +0 -156
  66. data/features/support/rake/Rakefile +0 -77
  67. data/features/user_informer.feature +0 -57
  68. data/generators/airbrake/airbrake_generator.rb +0 -94
  69. data/generators/airbrake/lib/insert_commands.rb +0 -34
  70. data/generators/airbrake/lib/rake_commands.rb +0 -24
  71. data/generators/airbrake/templates/airbrake_tasks.rake +0 -25
  72. data/generators/airbrake/templates/capistrano_hook.rb +0 -6
  73. data/generators/airbrake/templates/initializer.rb +0 -4
  74. data/install.rb +0 -1
  75. data/lib/airbrake/backtrace.rb +0 -103
  76. data/lib/airbrake/capistrano.rb +0 -103
  77. data/lib/airbrake/capistrano3.rb +0 -3
  78. data/lib/airbrake/cli/client.rb +0 -76
  79. data/lib/airbrake/cli/options.rb +0 -45
  80. data/lib/airbrake/cli/printer.rb +0 -33
  81. data/lib/airbrake/cli/project.rb +0 -17
  82. data/lib/airbrake/cli/project_factory.rb +0 -33
  83. data/lib/airbrake/cli/runner.rb +0 -49
  84. data/lib/airbrake/cli/validator.rb +0 -8
  85. data/lib/airbrake/configuration.rb +0 -366
  86. data/lib/airbrake/jobs/send_job.rb +0 -7
  87. data/lib/airbrake/notice.rb +0 -411
  88. data/lib/airbrake/rack.rb +0 -64
  89. data/lib/airbrake/rails.rb +0 -45
  90. data/lib/airbrake/rails/action_controller_catcher.rb +0 -32
  91. data/lib/airbrake/rails/controller_methods.rb +0 -146
  92. data/lib/airbrake/rails/error_lookup.rb +0 -35
  93. data/lib/airbrake/rails/middleware.rb +0 -63
  94. data/lib/airbrake/rails3_tasks.rb +0 -126
  95. data/lib/airbrake/railtie.rb +0 -46
  96. data/lib/airbrake/rake_handler.rb +0 -75
  97. data/lib/airbrake/response.rb +0 -29
  98. data/lib/airbrake/sender.rb +0 -213
  99. data/lib/airbrake/shared_tasks.rb +0 -59
  100. data/lib/airbrake/sidekiq.rb +0 -8
  101. data/lib/airbrake/sinatra.rb +0 -40
  102. data/lib/airbrake/tasks.rb +0 -81
  103. data/lib/airbrake/tasks/airbrake.cap +0 -28
  104. data/lib/airbrake/user_informer.rb +0 -36
  105. data/lib/airbrake/utils/params_cleaner.rb +0 -141
  106. data/lib/airbrake/utils/rack_filters.rb +0 -45
  107. data/lib/airbrake_tasks.rb +0 -62
  108. data/lib/rails/generators/airbrake/airbrake_generator.rb +0 -155
  109. data/lib/templates/rescue.erb +0 -91
  110. data/rails/init.rb +0 -1
  111. data/resources/README.md +0 -34
  112. data/resources/airbrake_2_4.xsd +0 -89
  113. data/resources/airbrake_3_0.json +0 -52
  114. data/resources/ca-bundle.crt +0 -3376
  115. data/script/integration_test.rb +0 -35
  116. data/test/airbrake_tasks_test.rb +0 -161
  117. data/test/backtrace_test.rb +0 -215
  118. data/test/capistrano_test.rb +0 -44
  119. data/test/configuration_test.rb +0 -303
  120. data/test/controller_methods_test.rb +0 -230
  121. data/test/helper.rb +0 -233
  122. data/test/integration.rb +0 -13
  123. data/test/integration/catcher_test.rb +0 -371
  124. data/test/logger_test.rb +0 -79
  125. data/test/notice_test.rb +0 -494
  126. data/test/notifier_test.rb +0 -288
  127. data/test/params_cleaner_test.rb +0 -204
  128. data/test/rack_test.rb +0 -62
  129. data/test/rails_initializer_test.rb +0 -36
  130. data/test/recursion_test.rb +0 -10
  131. data/test/response_test.rb +0 -18
  132. data/test/sender_test.rb +0 -335
  133. data/test/support/response_shim.xml +0 -4
  134. data/test/user_informer_test.rb +0 -29
data/Gemfile DELETED
@@ -1,3 +0,0 @@
1
- source "http://rubygems.org"
2
-
3
- gemspec
data/Guardfile DELETED
@@ -1,6 +0,0 @@
1
- guard :test do
2
- watch(%r{^lib/(.+)\.rb$}) { |m| "test/#{m[1]}_test.rb" }
3
- watch(%r{^test/.+_test\.rb$})
4
- watch('test/helper.rb') { "test" }
5
- end
6
-
data/INSTALL DELETED
@@ -1,20 +0,0 @@
1
- === Configuration
2
-
3
- You should have something like this in config/initializers/airbrake.rb.
4
-
5
- Airbrake.configure do |config|
6
- config.api_key = '1234567890abcdef'
7
- end
8
-
9
- (Please note that this configuration should be in a global configuration, and
10
- is *not* environment-specific. Airbrake is smart enough to know what errors are
11
- caused by what environments, so your staging errors don't get mixed in with
12
- your production errors.)
13
-
14
- You can test that Airbrake is working in your production environment by using
15
- this rake task (from RAILS_ROOT):
16
-
17
- rake airbrake:test
18
-
19
- If everything is configured properly, that task will send a notice to Airbrake
20
- which will be visible immediately.
data/LICENSE DELETED
@@ -1,61 +0,0 @@
1
- This product includes jquery written by John Resig
2
- and distributed under an MIT license.
3
- See https://github.com/jquery/jquery/blob/master/MIT-LICENSE.txt
4
-
5
- Copyright (c) 2011 John Resig, http://jquery.com/
6
-
7
- Permission is hereby granted, free of charge, to any person obtaining
8
- a copy of this software and associated documentation files (the
9
- "Software"), to deal in the Software without restriction, including
10
- without limitation the rights to use, copy, modify, merge, publish,
11
- distribute, sublicense, and/or sell copies of the Software, and to
12
- permit persons to whom the Software is furnished to do so, subject to
13
- the following conditions:
14
-
15
- The above copyright notice and this permission notice shall be
16
- included in all copies or substantial portions of the Software.
17
-
18
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
19
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
21
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
22
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
23
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
24
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25
-
26
-
27
- All other components of this product are
28
- Copyright (c) 2007-2015 Rackspace, Inc.
29
-
30
- Subject to the terms of this notice, Rackspace, Inc. grants you a
31
- nonexclusive, nontransferable license, without the right to
32
- sublicense, to (a) install and execute one copy of these files on any
33
- number of workstations owned or controlled by you and (b) distribute
34
- verbatim copies eof these files to third parties. As a condition to the
35
- foregoing grant, you must provide this notice along with each copy you
36
- distribute and you must not remove, alter, or obscure this notice. All
37
- other use, reproduction, modification, distribution, or other
38
- exploitation of these files is strictly prohibited, except as may be set
39
- forth in a separate written license agreement between you and ERackspace,
40
- Inc. The terms of any such license agreement will control over this
41
- notice. The license stated above will be automatically terminated and
42
- revoked if you exceed its scope or violate any of the terms of this
43
- notice.
44
-
45
- This License does not grant permission to use the trade names,
46
- trademarks, service marks, or product names of Rackspace, Inc.,
47
- Airbrake, Exceptional, Airbrake.io, Exceptional.io except as
48
- required for reasonable and customary use in describing the origin
49
- of this file and reproducing the content of this notice. You may
50
- not mark or brand this file with any trade name, trademarks,
51
- servicemarks, or product names other than the original brand
52
- (if any)provided by Rackspace, Inc.
53
-
54
- Unless otherwise expressly agreed by Rackspace, Inc., in a
55
- separate written license agreement, these files are provided AS IS,
56
- WITHOUT WARRANTY OF ANY KIND, including without any implied warranties
57
- of MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE, or NON-INFRINGEMENT.
58
- As a condition to your use of these files, you are solely responsible for
59
- such use. Rackspace, Inc. will have no liability to you for direct,
60
- indirect, consequential, incidental, special, or punitive damages or
61
- for lost profits or data.
data/README.md DELETED
@@ -1,148 +0,0 @@
1
- Airbrake
2
- ========
3
-
4
- [![Circle CI](https://circleci.com/gh/airbrake/airbrake/tree/master.png?circle-token=66cb9cfc6d20f550a2dbde522f5f0f9f81bd653b)](https://circleci.com/gh/airbrake/airbrake)
5
- [![Code Climate](https://codeclimate.com/github/airbrake/airbrake.png)](https://codeclimate.com/github/airbrake/airbrake)
6
- [![Coverage Status](https://coveralls.io/repos/airbrake/airbrake/badge.png?branch=master)](https://coveralls.io/r/airbrake/airbrake?branch=master)
7
- [![Dependency Status](https://gemnasium.com/airbrake/airbrake.png)](https://gemnasium.com/airbrake/airbrake)
8
-
9
- <img src="http://f.cl.ly/items/3Q163w1r2K1J1b030k0g/ruby%2009.19.32.jpg" width=800px>
10
-
11
- This is the notifier gem for integrating apps with [Airbrake](http://airbrake.io).
12
-
13
- When an uncaught exception occurs, Airbrake will POST the relevant data
14
- to the Airbrake server specified in your environment.
15
-
16
- <img scr="http://f.cl.ly/items/142j0Z2u0R1Y2L0L3D26/ruby.jpg" width=800px;>
17
-
18
- Help
19
- ----
20
-
21
- For help with using Airbrake and this notifier visit [our support site](http://help.airbrake.io).
22
-
23
- For **SSL** verification see the [Resources](https://github.com/airbrake/airbrake/blob/master/resources/README.md).
24
-
25
- Rails Installation
26
- ------------------
27
-
28
- ### Rails 3.x/4.x
29
-
30
- Add the airbrake gem to your Gemfile. In Gemfile:
31
-
32
- gem 'airbrake'
33
-
34
- Then from your project's RAILS_ROOT, and in your development environment, run:
35
-
36
- bundle install
37
- rails generate airbrake --api-key your_key_here
38
-
39
- The generator creates a file under `config/initializers/airbrake.rb` configuring Airbrake with your API key. This file should be checked into your version control system so that it is deployed to your staging and production environments.
40
-
41
- ### Rails 2.x
42
-
43
- Add the airbrake gem to your app. In config/environment.rb:
44
-
45
- config.gem 'airbrake'
46
-
47
- or if you are using bundler:
48
-
49
- gem 'airbrake', :require => 'airbrake/rails'
50
-
51
- Then from your project's RAILS_ROOT, and in your development environment, run:
52
-
53
- rake gems:install
54
- rake gems:unpack GEM=airbrake
55
- script/generate airbrake --api-key your_key_here
56
-
57
- As always, if you choose not to vendor the airbrake gem, make sure
58
- every server you deploy to has the gem installed or your application won't start.
59
-
60
- The generator creates a file under `config/initializers/airbrake.rb` configuring Airbrake with your API key. This file should be checked into your version control system so that it is deployed to your staging and production environments.
61
-
62
- Ignored exceptions
63
- ------------------------
64
-
65
- Exceptions raised from Rails environments named **development**, **test** or **cucumber** will be ignored by default.
66
-
67
- You can clear the list of ignored environments with this setting:
68
-
69
- config.development_environments = []
70
-
71
- List of ignored exception classes includes:
72
-
73
- ActiveRecord::RecordNotFound
74
- ActionController::RoutingError
75
- ActionController::InvalidAuthenticityToken
76
- CGI::Session::CookieStore::TamperedWithCookie
77
- ActionController::UnknownHttpMethod
78
- ActionController::UnknownAction
79
- AbstractController::ActionNotFound
80
- Mongoid::Errors::DocumentNotFound
81
- ActionController::UnknownFormat
82
-
83
- You can alter this list with
84
-
85
- config.ignore_only = []
86
-
87
- which will cause none of the exception classes to be ignored.
88
-
89
- Check the [wiki](https://github.com/airbrake/airbrake/wiki/Customizing-your-airbrake.rb) for more customization options.
90
-
91
- Supported frameworks
92
- ------------------------
93
-
94
- See **[TESTED_AGAINST](https://github.com/airbrake/airbrake/blob/master/TESTED_AGAINST)** for a full list of frameworks and versions we test against.
95
-
96
- Airbrake wiki pages
97
- ------------------------
98
- Our wiki contains a lot of additional information about Airbrake configuration. Please browse the wiki when finished reading this
99
- README:
100
-
101
- https://github.com/airbrake/airbrake/wiki
102
-
103
- Development
104
- -----------
105
-
106
- For running unit tests, you should run
107
-
108
- bundle
109
- bundle exec rake test:unit
110
-
111
- If you wish to run the entire suite, which checks the different framework
112
- integrations with cucumber, you should run the following commands
113
-
114
- bundle
115
- bundle exec appraisal install
116
- bundle exec rake
117
-
118
- We use [Appraisals](https://github.com/thoughtbot/appraisal) to run the integration
119
- tests.
120
-
121
- Maintainers
122
- -----------
123
-
124
- Make sure all tests are passing before pushing the new version. Also, make sure integration
125
- test is passing. You can run it with:
126
-
127
- ./script/integration_test.rb <api_key> <host>
128
-
129
- After this is passing, change the version inside *lib/airbrake/version.rb* and
130
- push the new version with Changeling:
131
-
132
- rake changeling:change
133
-
134
- Credits
135
- -------
136
-
137
- ![thoughtbot](https://secure.gravatar.com/avatar/a95a04df2dae60397c38c9bd04492c53)
138
-
139
- Airbrake is maintained and funded by [airbrake.io](http://airbrake.io).
140
-
141
- Thank you to all [the contributors](https://github.com/airbrake/airbrake/contributors)!
142
-
143
- The names and logos for Airbrake, thoughtbot are trademarks of their respective holders.
144
-
145
- License
146
- -------
147
-
148
- Airbrake is Copyright © 2008-2015 Airbrake.
@@ -1,102 +0,0 @@
1
- Airbrake on Heroku
2
- ==================
3
-
4
- Send your application errors to our hosted service and reclaim your inbox.
5
-
6
- 1. Installing the Heroku add-on
7
- ----------------------------
8
- To use Airbrake on Heroku, install the Airbrake add-on:
9
-
10
- $ heroku addons:add airbrake:developer # If you'd like another plan, specify that instead.
11
- # Check https://addons.heroku.com/airbrake for a full list of plans.
12
-
13
- 2. Including the Airbrake notifier in your application
14
- --------------------------------------------------
15
- After adding the Airbrake add-on, you will need to install and configure the Airbrake notifier.
16
-
17
- Your application connects to Airbrake with an API key. On Heroku, this is automatically provided to your
18
- application in `ENV['AIRBRAKE_API_KEY']`, so installation should be a snap!
19
-
20
- ### Rails 3.x
21
-
22
- Add the airbrake and heroku gems to your Gemfile. In Gemfile:
23
-
24
- gem 'airbrake'
25
- gem 'heroku'
26
-
27
- Then from your project's RAILS_ROOT, run:
28
-
29
- $ bundle install
30
- $ script/rails generate airbrake --heroku
31
-
32
- ### Rails 2.x
33
-
34
- Install the heroku gem if you haven't already:
35
-
36
- gem install heroku
37
-
38
- Add the airbrake gem to your app. In config/environment.rb:
39
-
40
- config.gem 'airbrake'
41
-
42
- Then from your project's RAILS_ROOT, run:
43
-
44
- $ rake gems:install
45
- $ rake gems:unpack GEM=airbrake
46
- $ script/generate airbrake --heroku
47
-
48
- As always, if you choose not to vendor the airbrake gem, make sure
49
- every server you deploy to has the gem installed or your application won't start.
50
-
51
- ### Rack applications
52
-
53
- In order to use airbrake in a non-Rails rack app, just load the airbrake, configure your API key, and use the Airbrake::Rack middleware:
54
-
55
- require 'rubygems'
56
- require 'rack'
57
- require 'airbrake'
58
-
59
- Airbrake.configure do |config|
60
- config.api_key = `ENV['AIRBRAKE_API_KEY']`
61
- end
62
-
63
- app = Rack::Builder.app do
64
- use Airbrake::Rack
65
- run lambda { |env| raise "Rack down" }
66
- end
67
-
68
- ### Rails 1.x
69
-
70
- For Rails 1.x, visit the [Airbrake's README on GitHub](http://github.com/airbrake/airbrake),
71
- and be sure to use `ENV['AIRBRAKE_API_KEY']` where your API key is required in configuration code.
72
-
73
- 3. Configure your notification settings (important!)
74
- ---------------------------------------------------
75
-
76
- Once you have included and configured the notifier in your application,
77
- you will want to configure your notification settings.
78
-
79
- This is important - without setting your email address, you won't receive notification emails.
80
-
81
- Airbrake can deliver exception notifications to your email inbox. To configure these delivery settings:
82
-
83
- 1. Visit your applications resources page, like [ http://api.heroku.com/myapps/my-great-app/resources ](http://api.heroku.com/myapps/my-great-app/resources).
84
- 2. Click the name of your Airbrake addon. (It may still be called Hoptoad.)
85
- 3. Click "Settings" to configure the Airbrake Add-on.
86
-
87
- 4. Optionally: Set up deploy notification
88
- -----------------------------------------
89
-
90
- If your Airbrake plan supports deploy notification, set it up for your Heroku application like this:
91
-
92
- rake airbrake:heroku:add_deploy_notification
93
-
94
- This will install a Heroku [HTTP Deploy Hook](http://docs.heroku.com/deploy-hooks) to notify Airbrake of the deploy.
95
-
96
- You can pass in additional information for the deploy hook, in the ENV. Here are the available parameters:
97
- * `ENV["RAILS_ENV"]` - Rails environment you're deploying to, if not set on Heroku
98
- * `ENV["AIRBRAKE_API_KEY"]` - API key if not saved on Heroku or in initializer
99
- * `ENV["HEROKU_APP"]` - app name if you have multiple Heroku apps
100
- * `ENV["REPO"]` - Github url of the repo you're deploying, set this if you're not using remote named "origin"
101
-
102
- We will also set "username" and "revision" from Heroku variables.
data/Rakefile DELETED
@@ -1,179 +0,0 @@
1
- require 'rubygems' unless RUBY_VERSION > "1.8"
2
- require 'bundler/setup'
3
- require 'appraisal'
4
- require 'rake'
5
- require 'rake/testtask'
6
- require 'coveralls/rake/task'
7
- require 'rubygems/package_task'
8
- require 'cucumber/rake/task'
9
- require './lib/airbrake/version'
10
-
11
- Coveralls::RakeTask.new
12
-
13
- appraisal_environments = %w(rails-4.0 rails-3.2 rails-3.1 rails-3.0 rake sinatra rack)
14
- task default: %w( test:unit coveralls:push) +
15
- appraisal_environments.map {|ae| "test:integration:#{ae.gsub(/[\-\.]/, '_')}"} +
16
- appraisal_environments.map {|ae| "test:cucumber:#{ae.gsub(/[\-\.]/, '_')}"}
17
-
18
-
19
- namespace :test do
20
- Rake::TestTask.new(:unit) do |t|
21
- t.libs << 'lib'
22
- t.pattern = 'test/*_test.rb'
23
- t.verbose = true
24
- end
25
-
26
- desc "Integration tests Rake, Sinatra, Rack and for all versions of Rails"
27
- namespace :integration do
28
- appraisal_environments.each do |appraisal_env|
29
- task appraisal_env.gsub(/[\-\.]/, '_').to_sym do
30
- ENV['INTEGRATION'] = 'true'
31
- system "appraisal #{appraisal_env} rake integration_test" or exit!(1)
32
- end
33
- end
34
- end
35
-
36
- desc "Cucumber tests Rake, Sinatra, Rack and for all versions of Rails"
37
- namespace :cucumber do
38
- appraisal_environments.each do |appraisal_env|
39
- task appraisal_env.gsub(/[\-\.]/, '_').to_sym do
40
- ENV['INTEGRATION'] = 'true'
41
- system "appraisal #{appraisal_env} rake cucumber" or exit!(1)
42
- end
43
- end
44
- end
45
- end
46
-
47
- Rake::TestTask.new(:integration_test) do |t|
48
- t.libs << 'lib'
49
- t.pattern = 'test/integration.rb'
50
- t.verbose = true
51
- end
52
-
53
- namespace :changeling do
54
- desc "Bumps the version by a minor or patch version, depending on what was passed in."
55
- task :bump, :part do |t, args|
56
- # Thanks, Jeweler!
57
- if Airbrake::VERSION =~ /^(\d+)\.(\d+)\.(\d+)(?:\.(.*?))?$/
58
- major = $1.to_i
59
- minor = $2.to_i
60
- patch = $3.to_i
61
- build = $4
62
- else
63
- abort
64
- end
65
-
66
- case args[:part]
67
- when /major/
68
- major += 1
69
- minor = 0
70
- patch = 0
71
- when /minor/
72
- minor += 1
73
- patch = 0
74
- when /patch/
75
- patch += 1
76
- else
77
- abort
78
- end
79
-
80
- version = [major, minor, patch, build].compact.join('.')
81
-
82
- File.open(File.join("lib", "airbrake", "version.rb"), "w") do |f|
83
- f.write <<EOF
84
- module Airbrake
85
- VERSION = "#{version}".freeze
86
- end
87
- EOF
88
- end
89
- end
90
-
91
- desc "Writes out the new CHANGELOG and prepares the release"
92
- task :change do
93
- load 'lib/airbrake/version.rb'
94
- file = "CHANGELOG"
95
- old = File.read(file)
96
- version = Airbrake::VERSION
97
- message = "Bumping to version #{version}"
98
- editor = ENV["EDITOR"] || "vim" # prefer vim if no env variable for editor is set
99
-
100
- File.open(file, "w") do |f|
101
- f.write <<EOF
102
- Version #{version} - #{Time.now}
103
- ===============================================================================
104
-
105
- #{`git log $(git for-each-ref --sort=taggerdate --format '%(tag)' refs/tags | tail -1)..HEAD | git shortlog`}
106
- #{old}
107
- EOF
108
- end
109
-
110
- exec ["#{editor} #{file}",
111
- "git commit -aqm '#{message}'",
112
- "git tag -a -m '#{message}' v#{version}",
113
- "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(' && ')
114
- end
115
-
116
- desc "Bump by a major version (1.2.3 => 2.0.0)"
117
- task :major do |t|
118
- Rake::Task['changeling:bump'].invoke(t.name)
119
- Rake::Task['changeling:change'].invoke
120
- end
121
-
122
- desc "Bump by a minor version (1.2.3 => 1.3.0)"
123
- task :minor do |t|
124
- Rake::Task['changeling:bump'].invoke(t.name)
125
- Rake::Task['changeling:change'].invoke
126
- end
127
-
128
- desc "Bump by a patch version, (1.2.3 => 1.2.4)"
129
- task :patch do |t|
130
- Rake::Task['changeling:bump'].invoke(t.name)
131
- Rake::Task['changeling:change'].invoke
132
- end
133
-
134
- desc "Push the latest version and tags"
135
- task :push do |t|
136
- system("git push origin master")
137
- system("git push origin $(git tag | grep -v rc | tail -1)")
138
- end
139
- end
140
-
141
- begin
142
- require 'yard'
143
- YARD::Rake::YardocTask.new do |t|
144
- t.files = ['lib/**/*.rb', 'TESTING.rdoc']
145
- end
146
- rescue LoadError
147
- end
148
-
149
- GEM_ROOT = File.dirname(__FILE__).freeze
150
-
151
- desc "Clean files generated by rake tasks"
152
- task :clobber => [:clobber_rdoc, :clobber_package]
153
-
154
- LOCAL_GEM_ROOT = File.join(GEM_ROOT, 'tmp', 'local_gems').freeze
155
-
156
- # Helper method that's used to only include relevant features when using
157
- # various gemfiles. We don't want to, for instance, test sinatra features when
158
- # using the rails gemfile and vice versa.
159
- def cucumber_opts
160
- opts = "--tags ~@wip "
161
-
162
- opts << ENV["FEATURE"] and return if ENV["FEATURE"]
163
-
164
- case ENV["BUNDLE_GEMFILE"]
165
- when /rails/
166
- opts << "features/rails.feature features/metal.feature features/user_informer.feature"
167
- when /rack/
168
- opts << "features/rack.feature"
169
- when /sinatra/
170
- opts << "features/sinatra.feature"
171
- when /rake/
172
- opts << "features/rake.feature"
173
- end
174
- end
175
-
176
- Cucumber::Rake::Task.new(:cucumber) do |t|
177
- t.fork = true
178
- t.cucumber_opts = cucumber_opts
179
- end