Как настроить гем Airbrake для регистрации всех исключений Rails как в среде разработки, так и в рабочей среде?

Мне было трудно отправлять исключения моего приложения Rails 3 через гем Airbrake. Сначала я подумал, что это ошибка конфигурации Airbrake с моей стороны, но после проб и ошибок и очень внимательного прочтения документации (https://github.com/thoughtbot/airbrake#readme) я обнаружил, что Airbrake не сообщает об ошибках. когда приложение работает в среде разработки. Он сообщает об ошибках, когда приложение работает в производственной среде.

Есть ли флаг для создания файла конфигурации Airbrake, который автоматически включает среду разработки в список сред, в которых не следует отправлять уведомления?

В настоящее время я выполняю команду, указанную в README

script/rails generate airbrake --api-key your_key_here

person Alan David Garcia    schedule 26.09.2011    source источник


Ответы (2)


Простой.

  config.consider_all_requests_local       = false

вместо

  config.consider_all_requests_local       = true

в вашем config/environments/development.rb. В моем случае, как я подозреваю и во многих других, это было просто временное изменение, чтобы я мог «протестировать» Airbrake notify_airbrake.

Вам нужно config.development_environments = [] в airbrake.rb

person StuFF mc    schedule 18.10.2011
comment
Я должен отметить, что вдобавок вам действительно нужно config.development_environments = [] в airbrake.rb! - person StuFF mc; 19.10.2011
comment
Другое дело, что для того, чтобы ошибка отображалась в airbrake, она должна исходить от поддомена, который вы настроили в настройках своей учетной записи airbrake (например, вероятно, не localhost). Вы можете использовать /etc/hosts, чтобы указать себе подходящий домен (например, dev.example.com). Это необходимо в дополнение к двум другим вещам. - person connec; 20.08.2013

Не уверен насчет параметров конфигурации, но вы можете явно отправлять уведомления в Airbrake с контроллера, используя

notify_airbrake(exception)

Таким образом, чтобы сделать это в процессе разработки, вы можете отловить все ошибки в своем application_controller, отправить уведомление и затем обработать ошибки, как и раньше. Посмотрите rescue_from, чтобы начать. Вот как я это делаю, чтобы получать уведомления из моей промежуточной среды (или, если быть точным, из любой среды, отличной от среды разработки и тестирования).

class ApplicationController < ActionController::Base

  rescue_from Exception, :with => :render_error

  private

  def render_error(exception)
    render :file => "#{Rails.root}/public/500.html", :layout => false, :status => 500
    logger.error(exception)
    notify_airbrake(exception) unless Rails.env.development? || Rails.env.test?
  end
end
person Thilo    schedule 27.09.2011
comment
Это отличное место для начала. Когда я добавил метод escape_from для Exception, я увидел, что файл 500.html был отрендерен и журнал был записан, как указано в первых двух строках блока. К сожалению, notify_airbrake не работал ни в среде разработки, ни в среде по умолчанию, только в рабочей среде (даже после того, как я удалил условие «если»). - person Alan David Garcia; 27.09.2011
comment
Я думаю, что мое идеальное решение лежит где-то в классе Airbrake::Configuration, а именно в объекте development_environments. rdoc.info/github/thoughtbot/airbrake/master/Airbrake/ - person Alan David Garcia; 27.09.2011
comment
Пожалуйста, смотрите ниже для дополнительного ответа! - person Alan David Garcia; 20.10.2011