2011-09-26 15 views
10

Railing 3 uygulamasının istisnalarını Airbrake gem ile göndermek zor buldum. İlk başlarda bir Airbrake konfigürasyon hatası olduğunu düşündüm ama deneme yanılma ve hatadan sonra belgeleri (https://github.com/thoughtbot/airbrake#readme) çok yakından okuyarak Airbrake hatalarını rapor etmedim. Bir uygulama geliştirme ortamında çalışırken. Uygulama üretim ortamında çalışırken, hata bildiriyor.AirBrake gemini hem geliştirme hem de üretim ortamlarındaki tüm Rails istisnalarını günlüğe kaydetmek için nasıl yapılandırabilirim?

Bildirimlerin gönderilmemesi gereken ortamlar listesinde otomatik olarak geliştirme ortamını içeren bir AirBrake yapılandırma dosyası oluşturmak için bir bayrak var mı?

Şu anda bir yapılandırma seçenekleri hakkında

script/rails generate airbrake --api-key your_key_here 

cevap

18

Kolay. yerine config/environments/development.rb yılında

config.consider_all_requests_local  = true 

ait

config.consider_all_requests_local  = false 

. Benim durumumda, diğerleri gibi şüphelendiğim gibi, bu sadece geçici bir değişiklikti, bu yüzden Airbrake'nin notify_airbrake "testini" yapabilirim.

Bu başlamak için harika bir yerdir airbrake.rb

+20

Buna ek olarak, şunu da belirtmeliyim ki ** yapmalısınız '' config.development_environments = [] '' 'airbrake.rb''de! –

+0

Başka bir şey de, hava freninde hatanın gösterilmesi için, hava freni hesap ayarlarınızda yapılandırdığınız alt alan adından gelmesidir (örneğin, muhtemelen "localhost" değil). Kendinize uygun bir alan adı (ör. Dev.example.com) vermek için '/ etc/hosts' kullanabilirsiniz. Bu diğer iki şeye ek olarak gereklidir. – connec

14

emin değil README listelenen komutu yürütmeden ediyorum, ama açıkça yapmak Yani

notify_airbrake(exception) 

kullanarak bir kontrol cihazından Airbrake için bildirim gönderebilir Bu geliştirme sırasında, application_controller'daki tüm hataları yakalayabilir, bir bildirim gönderebilir ve hataları daha önce olduğu gibi ele alabilirsiniz. Başlamak için rescue_from'a bir göz atın. Evreleme ortamımdan bildirim almak için bunu yapıyorum (ya da tam olarak, geliştirme ve sınama dışında herhangi bir ortamından ).

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 
+1

yılında config.development_environments = [] gerekiyor. Exception için rescue_from yöntemini eklediğimde, 500.html dosyasının oluşturulduğunu ve bloğun ilk iki satırında belirtildiği gibi günlük yazıldığı gördüm. Ne yazık ki, notify_airbrake geliştirme veya varsayılan ortamlarda, yalnızca üretimde (koşul olmadığı sürece kaldırıldıktan sonra bile) çalışmadı. –

+0

İdeal çözümüm Airebrake :: Configuration' sınıfında, özellikle de development_environments' nesnesinde bir yerde yatıyor. http://rdoc.info/github/thoughtbot/airbrake/master/Airbrake/Configuration#development_environments-instance_method –

+0

Lütfen tamamlayıcı bir cevap için aşağıya bakın! –

İlgili konular