Подтвердить что ты не робот

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

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

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

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

script/rails generate airbrake --api-key your_key_here
4b9b3361

Ответ 1

Непосредственная.

  config.consider_all_requests_local       = false

вместо

  config.consider_all_requests_local       = true

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

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

Ответ 2

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

notify_airbrake(exception)

Итак, чтобы сделать это в процессе разработки, вы можете поймать все ошибки в вашем приложении_процессоре, отправить уведомление и обработать ошибки, как и раньше. Посмотрите 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