0
0

More than 1 year has passed since last update.

Rubyに関して業務で最近学んだことの備忘録

Posted at

実務での学びを忘れないように備忘録を残す。
あくまでも個人的な備忘録なので、手間をかけずググったサイトを貼り付けて一言添える感じで。

テンプレートレンダリングの評価順

バグの調査でビューが原因となっているケースがあり、application.htmlとrender対象のどちらが先に評価されるのかを特定するために参考にした記事。
結果、render→application.htmlの順で評価されていた。
参考:
Railsのテンプレートレンダリングを分解調査する#2 ActionView編
Railsのviewとlayoutの評価順についてコードを読んで納得した

メソッドの定義場所を探す方法

クラスにメソッドが生えているかチェックした時に活用。
ソニックガーデン伊藤様の記事。RSpec等々いつもお世話になっております。
本記事も超有用でした。
Rubyでメソッドの定義場所を見つける方法

clone、dupメソッド、浅いコピーと深いコピー

cloneとdupはオブジェクトを複製して返す。両方浅いコピー。
浅いコピーはオブジェクトの参照先までは複製しない。
深いコピーはMarshalクラスを使う。

リファレンス-clone
Rubyでのオブジェクトコピー dupとcloneについて
Rubyでオブジェクトの複製を作るならdupメソッドを
([ruby]浅いコピーと深いコピー)[https://qiita.com/oyrarumakan/items/5cfcac1b8e67184641f1]

try/try!メソッド

某gemで利用されており知らなかったので調べた。
メソッドがあれば利用し、なければnilまたはnomethoderrorを返すメソッド。
便利だけどそもそもこのシチュエーションあるのか?
Railsドキュメント-try
【Ruby on Rails】tryとtry!と&.(ぼっち演算子)の違い

gsub/gsub!メソッドの返り値の違い

正規表現などを使って文字列を置換するときに活用。
gsub!は置換しない場合、nilを返す。(勘違いに注意)
Ruby3.2リファレンス-gsub
Ruby3.2リファレンス-gsub!

HTMLエンコード

h()もしくはhtml_escape()でエンコードできる。CSRF対策とかで使うよう。
h( ... ) でHTMLエンコード

例外処理

rescueの書き方が曖昧だったので。
特定のエラーを拾うのに活用できる。
参考:
【Rails】例外を発生させる方法|rescueの使い方。begin rescueとの違いやraise, retry, ensure
【Rails】例外処理の書き方(begin, rescue, raise,retry, ensure)

ブロックの渡し方

そもそもブロックってなんだっけ?状態からのスタートだったので。
Procとかyieldは
block_given?はブロックを受け取っているかの評価ができる。

Rubyのブロック、ブロック引数、Proc、yieldをまとめてみた
Ruby3.2リファレンス module function Kernel.#block_given?

以上。パート2とかも出していきたい。(多分無理か、、。)

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0