タグ

rubyとdebugに関するymm1xのブックマーク (7)

  • Kernel.#trace_var (Ruby 3.3 リファレンスマニュアル)

    trace_var(varname, hook) -> nil[permalink][rdoc][edit] trace_var(varname) {|new_val| .... } -> nil trace_var(varname, hook) -> [String|Proc] グローバル変数 varname への代入のフックを登録します。 ここでの「グローバル変数」は、特殊変数 (変数と定数/組み込み変数 を参照)も含めた `$' で始まる変数のことです。 この呼び出し以降、varname で指定したグローバル変数に値が代入されるたびに hook かブロックが評価されます。hook が Proc オブジェクトの場合代入された値がブロック引数に渡されます。文字列の場合はRubyコードとして評価されます。 trace_var がフックするのは明示的な代入だけです。フックは複数登録できます。

  • Kernel.#caller (Ruby 3.3 リファレンスマニュアル)

    caller(start = 1) -> [String] | nil[permalink][rdoc][edit] caller(start, length) -> [String] | nil caller(range) -> [String] | nil start 段上の呼び出し元の情報を $@ の形式のバックトレース(文字列の配列)として返します。 トップレベルでは空の配列を返します。caller の戻り値を $@ に代入することで例外の発生位置を設定できます。 引数で指定した値が範囲外の場合は nil を返します。 [PARAM] start: long の範囲を超えない正の整数でスタックレベルを指定します。 [PARAM] length: 取得するスタックの個数を指定します。 [PARAM] range: 取得したいスタックの範囲を示す Range オブジェクトを指定します。

  • RubyでGETリクエストやPOSTリクエストした時のメモ - Qiita

    var http = require('http'); var server = http.createServer(function (req,res) { // confirm request console.log(`headers: ${JSON.stringify(req.headers)}`); console.log(`httpVersion: ${req.httpVersion}`); console.log(`method: ${req.method}`); console.log(`url: ${req.url}`); // response res.writeHeader(200, {'Content-Type': 'application/json'}); res.end(JSON.stringify({ 'foo': 'bar'})); }); server.li

    RubyでGETリクエストやPOSTリクエストした時のメモ - Qiita
    ymm1x
    ymm1x 2021/06/19
    Node.js で確認用サーバーを立てて実際に送信されるヘッダなどを確認
  • Object#tap (Ruby 3.3 リファレンスマニュアル)

    tap {|x| ... } -> self[permalink][rdoc][edit] self を引数としてブロックを評価し、self を返します。 メソッドチェインの途中で直ちに操作結果を表示するためにメソッドチェインに "入り込む" ことが、このメソッドの主目的です。 (1..10) .tap {|x| puts "original: #{x}" } .to_a .tap {|x| puts "array: #{x}" } .select {|x| x.even? } .tap {|x| puts "evens: #{x}" } .map {|x| x*x } .tap {|x| puts "squares: #{x}" } [SEE_ALSO] Object#yield_self

  • Rubyでメソッドの定義場所を見つける方法 - Qiita

    RubyはModuleで組み込まれたメソッドや、method_missingを利用した「ゴーストメソッド」など、自分の見ているメソッドがそのクラス以外のどこで定義されているのか、分かりにくいケースがよくあります。 特にJavaやC#から移ってきた僕のようなプログラマは、「メソッド = どこかのクラスで定義されているもの」という印象が強いので、「持ち主がよく分からないメソッド」の存在はデバッグ等で苦労させられます。 こういったケースでは、Kernel#methodとMethod#source_locationを組み合わせることで、メソッドの定義場所を見つけることができます。 たとえば、rails consoleでblank?メソッドの定義場所を見つけたい場合は、こんな感じです。 $ rails c > 'x'.method(:blank?).source_location => ["/Use

    Rubyでメソッドの定義場所を見つける方法 - Qiita
  • Ruby_ソースコードリーディングの武器

  • Rubyでclassやconstの定義位置を調べる方法 - Qiita

    > Some = 1 # class (irb):1: warning: already initialized constant Some ./some.rb:123: warning: previous definition of Some was here > Some::VALUE = 1 # const (irb):2: warning: already initialized constant Some ./some.rb:125: warning: previous definition of Some was here 背景 Rubyでアプリケーションコードを読んでいると、「え、このclass or const(大文字英字で始まるいわゆる定数)の定義位置はどこだ?」という疑問が湧いてくることがあると思います。 アプリケーションコードの場合、沢山のgemを読み込んでいるため、

    Rubyでclassやconstの定義位置を調べる方法 - Qiita
  • 1