Ruby

 Computer >> コンピューター >  >> プログラミング >> Ruby
  1. 動的例外マッチャーを使用したレベルアップ`rescue`

    Rubyでrescue句を使用する場合、どの種類の例外をレスキューするかを指定できます。あなたがする必要があるのは、次のような例外クラスのリストを提供することだけです: begin raise RuntimeError rescue RuntimeError, NoMethodError puts rescued! end しかし、コードを記述したときに例外クラスがどうなるかわからない場合はどうでしょうか。最も明白な答えは、すべての例外をレスキューし、ある種のテストを実行してから、合格しなかった例外を再発生させることです。このようなもの: begin raise FUBAR!

  2. ユニコーンがnginxとどのように通信するか-RubyのUNIXソケットの紹介

    Rubyアプリケーションサーバーは通常、nginxなどのWebサーバーと一緒に使用されます。ユーザーがRailsアプリからページをリクエストすると、nginxはそのリクエストをアプリケーションサーバーに委任します。しかし、それはどのように正確に機能しますか? nginxはユニコーンとどのように話しますか? 最も効率的なオプションの1つは、UNIXソケットを使用することです。それらがどのように機能するか見てみましょう!この投稿では、ソケットの基本から始めて、nginxによってプロキシされる独自のシンプルなアプリケーションサーバーを作成することで終わります。 ソケットを使用すると、プログラムは

  3. Byebug、Rails、Powを使用したリモートデバッグ

    byebugをこれまでに見たことがない場合は、チェックすることをお勧めします。これは、Ruby2.x用の優れたデバッガーです。その作者の言葉で: Byebugは、Ruby2用の使いやすく機能豊富なデバッガーです。実行制御に新しいTracePointAPIを使用し、コールスタックナビゲーションに新しいDebug Inspector APIを使用するため、内部のコアソースに依存しません。 C拡張機能として開発されているため、高速です。また、完全なテストスイートがあるため、信頼性があります。 基本的なセットアップは非常に簡単です。宝石をインストールするだけです。 byebugを使用する場合 コー

  4. Rubyのcaseステートメント-高度なテクニック

    caseステートメントほど単純で退屈なものはありません。これはCからの引き継ぎです。これを使用して、多数のifを置き換えます。名探偵コナンそれともそうですか? 実際、Rubyのcaseステートメントは、想像よりもはるかに豊富で複雑です。一例を見てみましょう: case Hi there when String puts case statements match class end # outputs: case statements match class この例は、caseステートメントがアイテムの値と一致するだけではないことを示しています。 だけでなく、そのクラス 。これが

  5. Rubyで例外が発生したときにローカル変数とインスタンス変数をログに記録する

    簡単に再現できないバグがあったことはありますか?それは、人々があなたのアプリをしばらく使用したときにのみ起こるようです。そして、エラーメッセージとバックトレースは驚くほど役に立ちません。 例外が発生する直前のアプリの状態のスナップショットを撮ることができれば、このような場合に非常に便利です。たとえば、すべてのローカル変数とその値のリストを作成できる場合。ええと、できます-そしてそれはそれほど難しいことではありません! この投稿では、例外時にローカルをキャプチャする方法を紹介します。しかし、最初に、私はあなたに警告する必要があります。 これらの手法はいずれも本番環境では使用しないでください。

  6. RubyのUNIXデーモンの理論的紹介

    Unixデーモンは、バックグラウンドで実行されるプログラムです。 Nginx、Postgres、OpenSSHはいくつかの例です。彼らはいくつかの特別なトリックを使用してプロセスを「切り離し」、どの端末からも独立して実行できるようにします。 私はいつもデーモンに魅了されてきました-おそらくそれは名前です-そしてそれらがどのように機能するかを説明する投稿をするのは楽しいだろうと思いました。具体的には、Rubyでそれらを作成する方法。 ...しかし最初に。 自宅でこれを試さないでください! おそらくデーモンを作りたくないでしょう。仕事を成し遂げるもっと簡単な方法があります。 バックグラウン

  7. Rubysの奇妙なErrno例外を理解する

    Rubyの例外階層を見たことがあれば、何か奇妙なことに気づいたかもしれません。 RuntimeErrorやNoMethodErrorなどの通常の例外すべてに加えて、Errno::*への奇妙な参照があります。 。 Exception StandardError ... SystemCallError Errno::* ... ディスクがいっぱいになったときにディスクに書き込むことができなかった場合、または障害のあるネットワークを介してAPI呼び出しを行おうとしたことがある場合は、このタイプのエラーが実際に発生しているのを目にしたことがあるでしょう。存在

  8. Rubyで例外にコンテキストデータを追加する方法

    標準のバックトレース/エラーメッセージの組み合わせでは不十分な場合があります。エラーの原因を特定するために、追加のデータが必要になる場合があります。幸い、Rubyで行うのはとても簡単です。 エラーメッセージのカスタマイズ エラーにコンテキスト情報を追加する最も簡単な方法は、それを例外のメッセージに追加することです。以下の例では、例外をキャッチし、新しいメッセージで再発生させています: begin raise foo rescue => e raise e.class, bar end # RuntimeError: bar このアプローチの良い使用例は、テンプレートをレン

  9. RubyからFiddle経由で任意のCライブラリを使用します-Ruby標準ライブラリは秘密にしておくのが最善です。

    Fiddleは、1.9.xでRubyの標準ライブラリに追加されたあまり知られていないモジュールです。これにより、RubyのCライブラリと直接対話できます。実行中にrubyインタープリターを検査および変更することもできます。 これは、ある言語で記述されたコードが別の言語で記述されたメソッドを呼び出すことができる、人気のあるCライブラリであるlibffiをラップすることによって機能します。聞いたことがない方のために説明すると、「ffi」は「foreignfunctioninterface」の略です。そして、あなたはCだけに限定されていません。Fiddleを学ぶと、Rustやそれをサポートする他の

  10. 絵文字の力を使用して、すべてのSidekiqキューをクリアする方法

    ここHoneybadgerでは、Sidekiqをよく使用していますが、それは素晴らしいことです。しかし、私がよく遭遇する問題が1つあります。 ...ご覧のとおり、開発中は通常Sidekiqを実行しません。しかし、手動テストの過程で、私は多くのジョブをキューに入れさせます。だから次回は Sidekiqを実行すると、これらすべてのジョブの処理が試行されます。良くない。 1つのSidekiqキューからジョブを削除するコードスニペットを見つけるのは簡単です。しかし、たくさん キューの。それらすべてから仕事を片付けたい。少し掘り下げた後、私はうまくいくように見える答えを思いついた。見よ! # I o

  11. Railsの派手な例外ページのしくみ

    レールを使用することの良い点の1つは、開発で問題が発生したときに、非常に優れたエラー詳細ページが表示されることです。アプリに関連する部分が強調表示された、素晴らしいバックトレースが得られます。投稿されたパラメータを確認したり、環境変数やセッション変数を調べたりできます。 今日は、これらの派手なエラーページがどのように機能するかを見ていきます。 開いているアクションパックをクラックする 今日主に関係するファイルは、actionpack / lib / action_dispatch / middleware/debug_exceptions.rbです。これらの開発モードのエラーページを

  12. Ruby例外としてオブジェクトを発生させる方法

    Rubyのraise構文には、発生させるエラーの種類を指定するためのいくつかのオプションがあります。以下のコードでは、RuntimeErrorを発生させる3つの方法を示しました。 raise hello raise RuntimeError, hello raise RuntimeError.new(hello) # ...all of the above result in RuntimeError: hello それはいいことですが、例外以外のものを発生させたい場合はどうなりますか?番号を上げたい場合はどうなりますか?まあ、Rubyは私を許可しません。次のようなエラーメッセージが表示

  13. Rubyでのベンチマークの例外-うん、遅い。

    私はいつも、他のフロー制御メカニズムと比較して、ルビーでは例外が遅いだろうと強く思っていました。結局のところ、例外は単純な「ブレーク」や「リターン」よりもはるかに複雑です。でも、以前は自分の勘が間違っていたので、試してみようと思いました。 以下のコードでは、benchmark-ips gemを使用して、例外、ブレーク、およびリターンを介してループを終了する相対的なパフォーマンスを比較しています。私はmri1.9でこのようなベンチマークを行っている人々のウェブ上の例を見てきました。しかし、私はmri2.2で試してみたかったのです。 require benchmark/ips def exit

  14. 怠惰な列挙子を使用してRubyで大きなファイルを操作する

    列挙子は、Rubyをそのような強力で動的な言語にするものの中心にあります。また、怠惰な列挙子は、非常に大きなコレクションを効率的に処理できるようにすることで、これをさらに一歩進めます。 ファイル(結局のところ)は、行または文字の単なる大きなコレクションです。したがって、怠惰な列挙子を使用すると、非常に興味深く強力なことを実行できます。 とにかく列挙子とは何ですか? eachのようなメソッドを使用するたびに 、列挙子を作成します。これが、[1,2,3].map { ... }.reduce { ... }のようなメソッドをチェーンできる理由です。 。以下の例で私が何を意味するかを見ることがで

  15. Rubyの連想配列...何?

    配列に大量のデータがあるが、ハッシュの場合と同じようにキー/値のルックアップを実行する必要があったことがありますか?幸い、Rubyは、配列をKey-Value構造として扱うためのメカニズムを提供します。ぜひチェックしてみてください! Array#assocの紹介 およびArray#rassoc あなたが魔法の株選び機を与えられたと想像してみてください。数分ごとに、株を売買するための推奨事項を吐き出します。あなたはそれをあなたのコンピュータに接続し、次のようなデータのストリームを受信することに成功しました: picks = [ [AAPL, buy], [GOOG, sell],

  16. RubyのコードとデータをDATAと__END__と混合する

    Rubyが、スクリプトが独自のソースファイルをデータのソースとして使用する方法を提供していることをご存知ですか?これは、1回限りのスクリプトや概念実証を作成するときに時間を節約できる巧妙なトリックです。ぜひチェックしてみてください! DATAおよびEND 以下の例では、__END__という面白いキーワードを使用しています。 。 __END__の下のすべて Rubyインタープリターによって無視されます。しかし、さらに興味深いことに、rubyはDATAと呼ばれるIOオブジェクトを提供します 、__END__の下のすべてを読むことができます 他のファイルから読み取ることができるのと同じように。

  17. レスキューブロック外でのRuby例外の処理

    コードがその例外のライフサイクルを制御していない場合でも、最新の例外を取得できると便利なことがよくあります。アプリケーションに基本的なクラッシュ検出を追加したいとします。キャッチされなかった例外の結果として発生したクラッシュに関する追加情報をログに記録したい。 最初のステップは、アプリケーションが終了するたびに実行されるハンドラーを追加することです。 Rubyカーネルのat_exitメソッドを使用してこれを行うのは非常に簡単です。 at_exit puts the app exited end しかし、例外の結果として終了コールバックが呼び出されたかどうかをどのように知ることができま

  18. スプラウトクラスを使用したRubyのリファクタリング

    一部のレガシーアプリケーションを使用する際の最も厄介な課題の1つは、コードがテスト可能になるように記述されていないことです。したがって、意味のあるテストを書くことは困難または不可能です 。 これは鶏が先か卵が先かという問題です。レガシーアプリケーションのテストを作成するには、コードを変更する必要がありますが、最初にテストを作成しないと、自信を持ってコードを変更することはできません。 このパラドックスにどのように対処しますか? これは、MichaelFeathersの優れたレガシーコードで効果的に作業するで取り上げられている多くの主題の1つです。 。今日は、スプラウトクラスという本の特定

  19. AngularJSとRails4の使用を開始する

    AngularJSの使用を開始するのは難しくありません。ドキュメントはそこにある最高のもののいくつかであり、チュートリアルは十分に単純です。 しかし、テクノロジーを組み合わせ始めると、物事はトリッキーになります。 ストレートJavaScriptの代わりにCoffeeScriptを使用している場合は、前処理の問題と、明らかな構文の違いを考慮に入れる必要があることをご存知でしょう。これらはそれ自体は小さな問題ですが、Ruby on Rails、Jasmine、Karmaを組み合わせて使用​​するとどうなりますか?驚くほどトリッキーになります。 これはまさに、このチュートリアルで使用するスタ

  20. Ruby Gemsはどのように機能しますか?

    Railsでの作業を非常に便利にするものの1つは、一般的なプログラミングのニーズ(承認、サイト管理、eコマースなど)に対して、問題の解決策をコード化してパッケージ化したよりも賢い人に名前を付けることです。宝石の形でアップします。 Gemfileにgemを追加して、それらがどのように機能するかを真に理解していなくても、その有用性を最大限に活用することはできますが、すべてがどのように接続されているのか興味がありますか? ここでは、Ryan BatesのCanCan承認ジェムを詳しく見て、次の質問に答えます(より広く質問された場合、どのジェムにも適用できます): CanCanのコードはどこ

Total 560 -コンピューター  FirstPage PreviousPage NextPage LastPage CurrentPage:26/28  20-コンピューター/Page Goto:1 20 21 22 23 24 25 26 27 28