Ruby
 Computer >> コンピューター >  >> プログラミング >> Ruby

HoneybadgerGemv3の新機能

TLDR:箇条書きについては、CHANGELOGを確認してください。

最近、Rubyの例外を報告するために、gemの最新のメジャーアップデートを出荷しました。 v2releaseは、新しい構成戦略を含む完全な書き直しでしたが、v3には、重大な変更は少なく、機能と使いやすさの改善がたくさん含まれています。カバーすることがたくさんあるので、すぐに飛び込みます。お楽しみください!

>

Plainol'Rubyモード

Railsの世界では、gemをインストールすると、アプリケーションと自動的に統合されることがかなり期待されています。たとえば、多くのgemは、Railsの初期化時に独自のコードを実行するために独自のRailtieを提供しています。

ラーテルの宝石はそのアプローチを完全に取り入れており、Rails、Sinatra、Sidekiq、およびその他の多くの人気のある宝石やフレームワークの包括的なエラーレポートを非常に簡単に設定できます。文字通り、require 'honeybadger'と同じくらい簡単です。 。

ただし、一部のRubyistは、独自の統合をロールすることを好みます。モンキーパッチ(Railsでよく発生します)は彼らを怒らせます、そして彼らが望む最後のことは、宝石が単にそれを要求することによって彼らのアプリケーションを明白ではない方法で変えることです。私はそれを完全に理解しています(実際、私は自分自身でその考え方に傾倒しています)。

他の人は、私たちが統合しているライブラリを使用しておらず、Honeybadger.notifyを使用してエラー自体を報告したいと考えています。 、実行時の不要な初期化を回避します。

そのため、「Plain ol'Ruby」モード(非公式タイトル)を追加しました。構成の記述とミドルウェアのゼロからのインストールを楽しんでいる(または単純なRubyを使用している)usweirdosの場合、require 'honeybadger/ruby' 通常のrequire 'honeybadger'の代わりに 。これで、Honeybadger.notifyを使用できます 、Honeybadger.context 、など、自動統合がアクティブ化されていない場合:Rubyの最小限の予測可能なエラー追跡:

require 'honeybadger/ruby'

begin
  # Failing code
rescue => exception
  Honeybadger.notify(exception)
end
複数のエージェント

昔ながらのRubyと言えば、Rubyを使用して、Honeybadgerプロジェクトにエラーを報告する追加のエージェントを作成できるようになりました。これは、同じアプリケーション内の複数のHoneybadgerプロジェクトに最終的にエラーを報告できることを意味します。外観は次のとおりです。

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からgemprogramicallyに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です。これは、environmentvariablesが honeybadger.ymlをオーバーライドすることを意味します。 、およびHoneybadger.configure 環境変数を上書きします。

cronジョブとコマンドラインプログラムのエラーを報告する

cronの長年の問題の1つは、自動電子メール機能がエラー出力を理解しないことです。もちろん、タスクが失敗した場合はメールで通知されますが、成功したタスクで標準出力が生成された場合もメールで通知されます。

ねえ、ラーテルを使って少ないを取得しませんか 電子メールの代わりに、または電子メールに加えて、Honeybadgerを使用してcronの失敗を報告できたら、すばらしいと思いませんか?今できます。

honeybadger execを追加しました CLI(コマンドラインインターフェイス)へのコマンドを使用して、cronの失敗と任意のの報告を処理します。 通常はコマンドラインから実行するコマンド。つまり、bashスクリプト、実行可能ファイル、make タスクなど。使用するには、honeybadger execを追加するだけです。 コマンドの前:

$ honeybadger exec my-command --my-flag

コマンドが正常に実行されると、コード0で終了し、出力はありません(標準出力もデフォルトで無効になっていますが、特殊フラグを使用して有効にできます)。ただし、コマンドが失敗した場合は、実行されたコマンドと完全な出力を含むHoneybadger通知を受け取ります。

honeybadger exec 成功したコマンドのデフォルトではすべての出力を無音にします。これは、cronの電子メール機能で特に役立ちます。両方のhoneybadger execを使用する および コマンドが失敗したときにHoneybadger通知を受け取るcronメール。何らかの理由で(たとえば、接続の問題が原因で)Honeybadger通知も失敗した場合、originalコマンドからの出力がダンプされ、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フィルタの仕組みです)。
変更と削除

また、いくつかの変更を加え、意味をなさなくなったいくつかの機能を削除しました:

  • Ruby1.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タグ内のエラーのバックトレースも改善され、エラーのデバッグが容易になりました。

  1. AASMGemを使用してRubyでステートマシンを作成する方法

    今日は、ステートマシン、それらがどのように機能するか、AASMgemを使用したRubyプロジェクトでそれらを使用する方法について学習します。 今 : 信号機を想像してみてください… 赤、緑、黄色のいずれでもかまいません。 色が変わると、次へ 色は現在に基づいています 1つ。 これは、目の不自由な人がいつ横断できるかを知るための音を出す種類だとしましょう。 今 : あなたはこのためのソフトウェアを書いています。 毎回再生する音と次の色をどのように知るのですか? 次のようなifステートメントを記述できます: if @light.state == green @ligh

  2. Ruby2.6の9つの新機能

    Rubyの新しいバージョンには、新しい機能とパフォーマンスの改善が含まれています。 変更についていきますか? 見てみましょう! 無限の範囲 Ruby 2.5以前のバージョンは、すでに1つの形式の無限範囲をサポートしています( Float ::INFINITY を使用) )、しかしRuby2.6はこれを次のレベルに引き上げます。 新しい無限の範囲 次のようになります: (1..) これは、(1..10)のような終了値がないため、通常の範囲とは異なります。 。 使用例 : [a, b, c].zip(1..) # [[a, 1], [b, 2], [c, 3]] [1,2,3,