2015-09-11 2 views
0

Мы используем воздушный тормоз на всей нашей кодовой базе, который отлично работает, за исключением пользовательских классов, которые не наследуются от иерархии Rails (то есть ActiveRecord).notify_airbrake вызывает ошибку на пользовательских классах

Некоторый код:

class Offer 
    def counter(amount, qty=1) 
    begin 
     offers_response = viyet_mage_rest_client.counter_offer(@id.to_i, amount, qty.to_i) 
    rescue => e 
     notify_airbrake(e) 
     offers_response = [] 
    end 
    end 
end 

В тормозных щитках мы видим:

NoMethodError: undefined method `notify_airbrake' for Offer:Class 

Как ошибка. Я хочу фактическую ошибку, а не ошибку для сообщения об ошибке!

Наш файл airbrake.rb:

if Rails.env.production? || Rails.env.staging? 
    Airbrake.configure do |config| 
    config.api_key = Settings.airbrake.api_key 
    config.secure = true 
    end 
end 

Любая помощь будет оценен по достоинству!

+3

Привет! Попробуйте 'Airbrake.notify (e)' вместо 'notify_airbrake (e)'. – kyrylo

+0

'notify_airbrake' предназначен только для контроллеров. ref: https://github.com/airbrake/airbrake/blob/master/lib/airbrake/rails/action_controller.rb – Kris

ответ

4

Метод, который вам нужен, это Airbrake.notify_or_ignore(). Для вашего данного примера:

class Offer 
    def counter(amount, qty=1) 
    begin 
     offers_response = viyet_mage_rest_client.counter_offer(@id.to_i, amount, qty.to_i) 
    rescue => e 
     Airbrake.notify_or_ignore(e) 
     offers_response = [] 
    end 
    end 
end 

Более подробную информацию можно найти здесь: https://github.com/airbrake/airbrake/wiki/Using-Airbrake-with-plain-Ruby

Смежные вопросы