Computer >> 컴퓨터 >  >> 프로그램 작성 >> Ruby

Honeybadger Gem v3의 새로운 기능

TLDR:글머리 기호만 보려면 CHANGELOG를 확인하세요.

저는 최근 Ruby에서 예외를 보고하기 위해 gem에 대한 최신 주요 업데이트를 제공했습니다. v2release는 새로운 구성 전략을 포함하는 전체 재작성이지만 v3에는 주요 변경 사항이 적지만 기능 및 사용 편의성이 많이 개선되었습니다. 다룰 내용이 많으므로 바로 들어가겠습니다. 즐기세요!

일반 루비 모드

Rails 세계에서는 gem을 설치할 때 자동으로 애플리케이션과 통합될 것으로 예상됩니다. 예를 들어, 많은 gem은 Rails가 초기화될 때 자체 코드를 실행하기 위해 자체Railtie를 제공합니다.

Honeybadger gem은 이러한 접근 방식을 완벽하게 수용하므로 Rails, Sinatra, Sidekiq 및 기타 여러 인기 있는 gem과 프레임워크에 대한 포괄적인 오류 보고를 설정하기가 정말 쉽습니다. 말 그대로 require 'honeybadger'만큼 간단합니다. .

그러나 일부 Rubyists는 자체 통합을 선호합니다. Monkeypatching(Rails에서 많이 발생)은 그들을 분노하게 만들고, 그들이 원하는 마지막 것은 gem이 단순히 요구함으로써 명확하지 않은 방식으로 애플리케이션을 변경하는 것입니다. 나는 그것을 완전히 이해합니다(사실, 나 자신도 그런 사고방식을 취하는 경향이 있습니다).

다른 사람들은 우리가 통합한 라이브러리를 사용하지 않을 수 있으며 오히려 Honeybadger.notify를 사용하여 오류를 보고합니다. , 런타임에 불필요한 초기화를 방지합니다.

그래서 "Plain ol' Ruby" 모드(비공식 제목)를 추가했습니다. 구성을 작성하고 미들웨어를 처음부터 설치하는 것을 좋아하는 이상한 사람 중 하나라면(또는 그냥 일반 Ruby를 사용하고 있는 경우) 이제 require 'honeybadger/ruby'를 요구할 수 있습니다. 일반적인 require 'honeybadger' 대신 . 이제 Honeybadger.notify를 사용할 수 있습니다. , Honeybadger.context , 등. 자동 통합이 활성화되지 않음:Ruby에 대한 최소한의 예측 가능한 오류 추적:

require 'honeybadger/ruby'

begin
  # Failing code
rescue => exception
  Honeybadger.notify(exception)
end

여러 에이전트

평범한 루비에 대해 말하자면 이제 루비를 사용하여 Honeybadger 프로젝트에 오류를 보고하는 추가 에이전트를 만들 수 있습니다. 이것은 마침내 동일한 애플리케이션에서 여러 Honeybadge 프로젝트에 오류를 보고할 수 있음을 의미합니다. 다음과 같습니다.

OtherBadger = Honeybadger::Agent.new

OtherBadger.configure do |config|
  config.api_key = 'project api key'
end

begin
  # Failing code
rescue => exception
  OtherBadger.notify(exception)
end

Honeybadger.configure의 반환

우선 honeybadger.yml을 사용하는 경우 현재 gem을 구성하려면 걱정하지 마십시오. 아무것도 변경되지 않았으며 여전히 기본값입니다!

하지만 Ruby에서 프로그래밍 방식으로 gem을 구성하는 기능을 놓친 고객이 있었습니다. v3.0에서는 두 가지 장점을 모두 누릴 수 있습니다. honeybadger.yml을 통해 전체 구성을 계속 지원합니다. 및 환경 변수를 추가하고 Honeybadger.configure를 다시 추가했습니다. :

Honeybadger.configure do |config|
  config.api_key = 'project api key'
  config.exceptions.ignore += [CustomError]
end

구성의 우선 순위는 YAML -> ENV -> Ruby입니다. 즉, 환경 변수가 honeybadger.yml을 재정의합니다. 및 Honeybadger.configure willoverride 환경 변수.

크론 작업 및 명령줄 프로그램의 오류 보고

cron의 오랜 문제 중 하나는 자동 이메일 기능이 오류 출력을 이해하지 못한다는 것입니다. 물론, 작업이 실패하면 이메일을 보내지만 성공적인 작업이 표준 출력을 생성하는 경우에도 이메일을 보내드립니다.

이봐, Honeybadger를 사용하여 적은 실행 불가능한 이메일 알림? 이메일 대신 또는 이메일에 추가하여 크론 실패를 보고하기 위해 Honeybadge를 사용할 수 있다면 멋지지 않을까요? 이제 할 수 있습니다.

honeybadger exec를 추가했습니다. 보고 cron 실패 및 모든을 처리하기 위해 CLI(명령줄 인터페이스)에 명령 일반적으로 명령줄을 통해 실행하는 명령입니다. 즉, bash 스크립트, 실행 파일, make 작업 등을 사용하려면 honeybadger exec를 추가하기만 하면 됩니다. 명령 전:

$ honeybadger exec my-command --my-flag

명령이 성공적으로 실행되면 코드 0과 출력 없이 종료됩니다(표준 출력도 기본적으로 비활성화되어 있지만 특수 플래그로 활성화할 수 있음). 그러나 명령이 실패하면 실행된 명령과 전체 출력이 포함된 Honeybadger 알림을 받게 됩니다.

honeybadger exec 때문에 successcommands에 대해 기본적으로 모든 출력을 무음으로 설정하며 cron의 이메일 기능에 특히 유용합니다. honeybadger exec를 모두 사용하여 그리고 cron은 명령이 실패할 때 Honeybadger 알림을 받게 됩니다. 어떤 이유로 Honeybadger 알림도 실패하면(예:연결 문제로 인해) originalcommand의 출력을 덤프하고 cron은 여전히 ​​실패에 대해 이메일을 보냅니다.

명령줄에서 사용자 지정 오류 보고

이것은 매우 간단합니다. abash 스크립트(또는 모든 쉘)에서 사용자 정의 Honeybadger 알림을 보내고 싶습니까? honeybadger notify 사용 :

$ honeybadger notify --message "This is an error from the command line"

--class와 같은 선택적 플래그를 사용할 수 있습니다. , --구성요소 , --동작 등을 사용하여 알림에 추가 속성을 추가합니다.

기타 개선 사항

v3에서 더 많은 기능과 개선 사항을 추가했습니다.

  • Honeybadger.notify 이제 예외 외에 문자열 인수도 허용하므로 다음을 수행할 수 있습니다. Honeybadger.notify("these are not the badgers you're looking for") .
  • git 저장소 내부에 있을 때 git 개정은 예외와 함께 자동으로 보고됩니다. 개정판은 new:revision을 사용하여 수동으로 추가하거나 변경할 수 있습니다. 구성 옵션.
  • CLI의 사용자 인터페이스는 이제 장황한 오류 메시지에 훨씬 더 친숙하며 독립 실행형 실행 파일(Rails 외부)로 사용할 수 있습니다.
  • 테스트 제품군은 약 10배 더 빨라서 더 많은 새로운 기능과 통합을 더 빠르게 개발할 수 있습니다.
  • 요청 데이터 필터는 이제 기본적으로 와일드카드 일치 전략을 사용합니다. 따라서 "password"를 필터링하면 "password" 및 "password_confirmation" 요청 매개변수가 모두 필터링됩니다(이것이 Rails 필터가 작동하는 방식입니다).

변경 및 제거

또한 더 이상 의미가 없는 기능을 일부 변경하고 제거했습니다.

  • Ruby 1.9.3 및 2.0.x에 대한 지원을 중단했습니다. 앞으로 2.1.0은 공식적으로 지원되는 가장 낮은 버전이 될 것입니다.
  • v2에서 모든 지원 중단을 제거했습니다.
  • 사용되지 않는 측정항목 및 추적 코드가 제거되었습니다.
  • Honeybadger.start 더 이상 필요하지 않습니다(사용되는 경우 예외가 발생함). 이전에 Rails 외부에서 Honeybadger를 사용한 경우 Honeybadger.configure를 사용할 수 있습니다. 별도의 Honeybadger::Config를 생성하지 않고 에이전트를 구성하려면 인스턴스 또는 Honeybadger.start 호출 .
  • plugins.skip의 이름을 변경했습니다. skipped_pluggins 옵션 및 sidekiq.use_component 이제 true입니다. 기본적으로.
  • CGI 변수가 이제 화이트리스트에 추가되어 실수로 민감한 데이터가 유출되는 것을 방지합니다.
  • 개발 중인 Honeybadger.notify 메서드는 이제 유효한 인수 없이 호출될 때 예외를 발생시킵니다. 프로덕션에서는 오류를 기록합니다.
  • honeybadger.yml 평가 시 오류 이제 기록되는 대신 발생하여 구성 문제를 더 일찍 식별하는 데 도움이 됩니다. ERB 태그 내부의 오류에 대한 역추적도 개선되어 오류를 더 쉽게 디버그할 수 있습니다.