나는 몇 개의 컨트롤러와 레이크 작업을 가진 간단한 레일 애플리케이션을 가지고있다. 두 작업은 whenever gem으로 구성된 cron에 의해 실행됩니다. 내 작업의레이크 작업에서 레일즈 예외 알리미
하나는 매일 실행되고, 언젠가는 예외가 발생하고 기본적으로 내가 크론하여이 경고를받을
내가 무슨 일이 일어나고 이런 이유로 난 그냥이 exception notification를 설치 한 것을 디버깅 할rake aborted!
undefined method `parameterize' for nil:NilClass
Tasks: TOP => mailboxes:clean_processed
(See full trace by running task with --trace)
내 Gemfile
gem "exception_notification", "~> 2.4.1", :require => 'exception_notifier'
에서이 라인 보석 및
내application.rb
파일에 구성
이 보석은 랙 미들웨어이기 때문에 웹 요청에만 사용할 수 있고 레이크 작업에는 사용할 수 없습니다. 나는 갈퀴 작업도 가능하게하고 싶습니다. 작업을 수행하는 this gist을 발견했습니다.
그것은 작동그러나 그 방법에 보석 구성을 반복 DRY 필요가 있고 난 또한
exception_notify { actual_task_code }
가 어떤인가에 같은 블록에있는 그들의 문을 둘러싸 내 모든 레이크 작업을 변경해야 이 문제를 해결하는 더 좋은 방법은?
P. 알림을 변경해야 할 경우 몇 줄의 코드 만 프로젝트에 추가 했으므로 문제가되지 않습니다.
P.P.S. 나는 또한 --trace
옵션을 추가하기 위해 crontab의 rake 라인을 변경할 수 있다는 것을 알고 있지만 예외 해결책 인 imho가 웹 코드에서도 도움이되는 더 나은 해결책이기 때문에 그 해결책을 좋아하지 않습니다.
업데이트 방금 전에이 관련 질문을 발견했습니다 : exception_notification for delayed_job 두 답변 모두 비슷한 트릭을 사용합니다. 2
나는 에어 브레이크 (이전 hoptoad라고도 함) 또는 예외적 같은 온라인 서비스를 시도거야있지만 모두 유료 서비스를하는 ...
업데이트 : 나는 매우의 Airbrake App 시도 좋은 응용 프로그램이지만 동일한 문제로 인해 고통을 겪고 있지만 레이크 작업에서 예외를 알리기 위해 Rakefile을 해킹해야합니다. 그러나이 코드가 필요하기 때문에 해킹은 덜 건조합니다.
# notify exceptions
def exception_notify
yield
rescue Exception => exception
HoptoadNotifier.notify exception
raise exception
end
구성 매개 변수를 반복 할 필요가 없습니다. 나는 갈퀴 작업에서 예외를 통지 받기 위해 이보다 더 잘할 수 없다고 생각합니다.
레이크 오류 로깅을 활성화하려면''conifg/initializers/airbrake.rb'''에''config.rescue_rake_exceptions = true'' 행을 추가해야합니다. – KurtPreston