一から勉強させてください

最下級エンジニアが日々の学びをアウトプットしていくだけのブログです

Ruby

factory_botでactive_model_serializers用のPORO (Plain-Old Ruby Object)のテストデータを作成する

最近、DB の存在しない Rails プロジェクト下で API を作る機会がありました。 外部から fetch してきたデータから PORO (Plain-Old Ruby Object)を作って、 active_model_serializersでひたすらシリアライズしまくるみたいな感じです。 特にテストまわりで…

RubyでネストしたHashをflatな1次元のHashに変換する

{ :foo => "bar", :hello => { :world => "Hello World", :bro => "What's up dude?", }, :a => { :b => { :c => "d" } } } みたいなネストした Hash があったとして、これを { :foo => "bar", :"hello.world" => "Hello World", :"hello.bro" => "What's up…

procとlambdaの挙動の違い

Ruby の Proc オブジェクトはKernel#proc(またはProc#new)で作るパターンとKernel#lambdaで作るパターンがありますが、それらは地味に結構挙動が違っていたりします。 そこで今回はこのKernel#procとKernel#lambda でつくった時の Proc オブジェクトの挙動…

Rubyのcase文はwhen節に渡すオブジェクトによって振る舞いが異なる

今回は Ruby の case 文についてです。 Ruby の case 文はどのように値を比較するか Ruby の case 文では case 節に比較対象となる値を、when 節に case 節の値と比較する値を記述します。 んで、when 節の値をレシーバとして、===メソッドによって比較が行…

Rubyのメソッド探索についてまとめてみた

今回はパーフェクト Ruby で「Ruby のメソッド探索」について学んだのでそのメモです。 オブジェクトに対してメソッド呼び出しが行われる際、どのようにメソッドが呼び出されているのか、書いてみたいと思います。 自身のメソッドを呼び出した時 class BaseC…

Rubyのインスタンス変数、クラス変数、クラスインスタンス変数

Ruby のクラスには インスタンス変数 クラス変数 クラスインスタンス変数 があって何かとややこしい。。 特にクラス変数とクラスインスタンス変数の違いについてはいまいち理解しきれていなかったので、今回は頭の整理もかねてメモです。 それぞれの特徴につ…

bundle openでgemのディレクトリを手軽にエディタから確認する

gem のソースって今まで基本 Github から確認していたのですが、実はエディタから手軽に確認できる方法がありました。地味に知らなかったです。 こちらの記事を参考にさせていただきました。 エディタの設定 環境変数EDITORにあらかじめどのエディタを開くの…

Rubyのビット演算子、論理演算子について

Ruby の論理演算子、ビット演算子についてメモ。 論理演算子 一番よく使うやつ。 Ruby の論理積、論理和ってtrue、falseじゃなくてオペランドのどちらかを返す。短絡評価。(片方を評価して結果がわかったら、もう片方を評価せずに結果を返す) 論理積はどち…