没有从带有 Airbrake rails 集成的 Rake 任务中收到异常
No exception received from Rake task with Airbrake rails integration
自第 5 版以来,Airbrake 及其 Rails 集成可在任何 Rake 任务中提供自动异常报告。
但是我的 errbit 服务器没有收到 rake 异常。
我做了以下测试:
- 创建一个新的 rails 4.1 应用程序。
- 包括空气制动器 gem。
- 创建 Airbrake 初始化程序(使用错误位配置)。
- 添加引发异常的 rake 任务。
Gemfile
source 'https://rubygems.org'
gem 'rails', '4.1.6'
gem 'sqlite3'
gem 'sass-rails', '~> 4.0.3'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.0.0'
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 2.0'
gem 'sdoc', '~> 0.4.0', group: :doc
gem 'spring', group: :development
gem 'airbrake', '5.0.5'
initializers/airbrake.rb
Airbrake.configure do |config|
config.environment = Rails.env
config.host = 'https://xxxxxxxxxx.herokuapp.com/'
config.project_id = true
config.project_key = 'xxxxxxxxxxx'
config.ignore_environments = []
end
lib/rake/raise.rake
namespace :raise do
desc 'raise error'
task error: :environment do
1 / 0
end
end
我尝试执行 rake 任务 rake raise:error
并得到以下回溯:
rake aborted!
ZeroDivisionError: divided by 0
/Users/Yann/code/airbraker/lib/tasks/raise.rake:4:in `/'
/Users/Yann/code/airbraker/lib/tasks/raise.rake:4:in `block (2 levels) in <top (required)>'
/Users/Yann/.gem/ruby/2.2.2/gems/airbrake-5.0.5/lib/airbrake/rake/task_ext.rb:19:in `execute'
Tasks: TOP => raise:error
(See full trace by running task with --trace)
而且我的 errbit 服务器从未收到任何异常。
注意:执行rake airbrake:test
向我的errbit服务器发送异常,我假设我的配置是正确的。
我是不是漏掉了什么?
这是一个小错误。问题是 Airbrake 试图异步,有时它不能按预期工作。在这种特殊情况下,Ruby 进程在 Airbrake 发送您的异常之前退出。
我已经提交了一个补丁,应该可以解决这个问题:https://github.com/airbrake/airbrake/pull/513
自第 5 版以来,Airbrake 及其 Rails 集成可在任何 Rake 任务中提供自动异常报告。 但是我的 errbit 服务器没有收到 rake 异常。
我做了以下测试:
- 创建一个新的 rails 4.1 应用程序。
- 包括空气制动器 gem。
- 创建 Airbrake 初始化程序(使用错误位配置)。
- 添加引发异常的 rake 任务。
Gemfile
source 'https://rubygems.org'
gem 'rails', '4.1.6'
gem 'sqlite3'
gem 'sass-rails', '~> 4.0.3'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.0.0'
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 2.0'
gem 'sdoc', '~> 0.4.0', group: :doc
gem 'spring', group: :development
gem 'airbrake', '5.0.5'
initializers/airbrake.rb
Airbrake.configure do |config|
config.environment = Rails.env
config.host = 'https://xxxxxxxxxx.herokuapp.com/'
config.project_id = true
config.project_key = 'xxxxxxxxxxx'
config.ignore_environments = []
end
lib/rake/raise.rake
namespace :raise do
desc 'raise error'
task error: :environment do
1 / 0
end
end
我尝试执行 rake 任务 rake raise:error
并得到以下回溯:
rake aborted!
ZeroDivisionError: divided by 0
/Users/Yann/code/airbraker/lib/tasks/raise.rake:4:in `/'
/Users/Yann/code/airbraker/lib/tasks/raise.rake:4:in `block (2 levels) in <top (required)>'
/Users/Yann/.gem/ruby/2.2.2/gems/airbrake-5.0.5/lib/airbrake/rake/task_ext.rb:19:in `execute'
Tasks: TOP => raise:error
(See full trace by running task with --trace)
而且我的 errbit 服务器从未收到任何异常。
注意:执行rake airbrake:test
向我的errbit服务器发送异常,我假设我的配置是正确的。
我是不是漏掉了什么?
这是一个小错误。问题是 Airbrake 试图异步,有时它不能按预期工作。在这种特殊情况下,Ruby 进程在 Airbrake 发送您的异常之前退出。
我已经提交了一个补丁,应该可以解决这个问题:https://github.com/airbrake/airbrake/pull/513