Ruby

メタプログラミングRubyを読んでいます(1)

読んだ範囲 「メタプログラミングRuby」の「1章 頭文字M」~「2.2.1 オブジェクトの中身」まで読みました。 TIL 今回は、体裁を変えて箇条書き形式で記載していこうと思います。 メタプログミングのことを「コードを記述するコードを記述する(p7)」と呼んでい…

Effective Rubyを読んでいます(最終チャプター)

tl;dr 「Effective Ruby」の項目43~48を読みました。 :arrow_down: 目次です。 項目43 依存gemのバージョンの上限を指定しよう 項目44 Rubyのガベージコレクタの動作に慣れよう 項目45 Finalizerでリソースリークを防ぐセーフティネットを作ろう 項目46 Ruby…

Effective Rubyを読んでいます(8)

tl;dr 「Effective Ruby」の項目37~42を読みました。 :arrow_down: 目次です。 項目37 MiniTest仕様テストに慣れよう 項目38 モックオブジェクトで決定論をシミュレートしよう 項目39 効果的なテストを追求しよう 項目40 Rubyドキュメントの扱い方を覚えよう…

Effective Rubyを読んでいます(7)

tl;dr 「Effective Ruby」の項目31~32を読みました。 :arrow_down: 目次です。 項目31 evalのさまざまなバリアントの間の違いを把握しよう 項目32 モンキーパッチの代わりとなるものを検討しよう 知ったこと モンキーパッチよりRefinementsを使おう(項目32) …

Effective Rubyを読んでいます(6)

tl;dr 「Effective Ruby」の項目30を読みました。 :arrow_down: 目次です。 項目30 method_missingではなくdefine_methodを使うようにしよう 新しく知ったこと method_missingを使用するとrespond_to?が正しい答えを出せなくなる(項目30) method_missingを使…

Effective Rubyを読んでいます(4)

tl;dr 「Effective Ruby」の項目24から項目27まで読みました。 :arrow_down: 目次です。 項目24 リソースはブロックとensureで管理しよう 項目25 ensure節は最後まで実行して抜けるように作ろう 項目26 retryでは回数の上限を設け、頻度を変化させ、オーディ…

Object#cloneとObject#dupの違い

tl;dr Effective Rubyを読んでいてObject#cloneとObject#dupの違いを理解していなかったため確認しました。 Object#cloneとObject#dupの違い Object#cloneとObject#dupの違いは、次の通りです。 Object#cloneはfreeze情報を複製するが、Object#dupは複製しな…

Effective Rubyを読んでいます(3)

tl;dr 「Effective Ruby」の項目21から項目23まで読みました。 :arrow_down: 目次です。 項目21 コレクションクラスからの継承よりも委譲を使うようにしよう。 項目22 raiseにはただの文字列ではなくカスタム例外を渡そう 項目23 できる限りもっとも対象の狭…

Effective Rubyを読んでいます(2)

tl;dr 「Effective Ruby」の項目17から項目20まで読みました。 :arrow_down: 目次です。 項目17 nil、スカラーオブジェクトを配列に変換するには、Arrayメソッドを使おう 項目18 要素が含まれているかどうかの処理を効率よく行うために集合を使うことを検討…

Effective Rubyを読んでいます(1)

tl;dr 「Effective Ruby」の項目14から項目16まで読みました。 :arrow_down: 目次です。 項目14 protectedメソッドを使ってプライベートな状態を共有しよう 項目15 クラス変数よりもクラスインスタンス変数を使うようにしよう 項目16 コレクションを書き換え…

gemspecとGemfileの違い

gemspecとGemfileの違いが理解出来ていないので、まとめてみました。 :arrow_down: を読みました。 gemspecとGemfileの役割をはっきりさせておく まず、gemspecとGemfileの違いで分かりくい点は、両方ともGemの依存関係を定義する点です。 ただし、指定した…