
Rubyのメタプログラミング
define_method, method_missing, class_eval, instance_eval, hooks, DSLs
20 面接問題·
Senior
1Rubyにおけるメタプログラミングとは何ですか?
1
Rubyにおけるメタプログラミングとは何ですか?
回答
メタプログラミングとは、プログラムが実行時にコードを書いたり変更したりできる能力のことです。Rubyでは、これによりメソッド、クラス、モジュールを動的に定義でき、コードをより柔軟かつ簡潔にします。この手法はRailsのようなフレームワークで広く使われ、エレガントなDSLを作成しコードの重複を減らすために活用されています。
2Ruby における define_method メソッドの目的は何ですか?
2
Ruby における define_method メソッドの目的は何ですか?
回答
define_method を使うと、実行時に動的にメソッドを作成できます。メソッド名(シンボルまたは文字列)と、メソッド本体を定義するブロックを受け取ります。def とは異なり、define_method は closure を通じて外側のスコープのローカル変数をキャプチャするため、パラメータ化された振る舞いを持つメソッドを生成するのに便利です。
3method_missing メソッドは Ruby によっていつ呼び出されますか?
3
method_missing メソッドは Ruby によっていつ呼び出されますか?
回答
method_missing は、オブジェクトがその継承チェーンに存在しないメソッド呼び出しを受け取ったときに自動的に呼び出されます。呼び出されたメソッドの名前とその引数を受け取り、これらの呼び出しを動的に処理できます。これは ActiveRecord で使われる ghost methods のような、多くのメタプログラミングパターンの基盤となっています。
4
class_eval と instance_eval の主な違いは何ですか?
5
module がクラスに include されたとき、どの hook が呼び出されますか?
+17 面接問題
その他のRuby on Rails面接トピック
Rubyの基礎
Junior
25問Rubyのオブジェクト指向プログラミング
Junior
20問Rails の基礎
Junior
18問Routing & Controllers
Junior
22問ActiveRecord の基礎
Junior
25問Views と ERB テンプレート
Junior
20問ActiveRecord の関連付け
Mid-Level
24問高度なActiveRecordクエリ
Mid-Level
28問Rails フォーム
Mid-Level
20問認証と認可
Mid-Level
22問モダンな Asset Pipeline とフロントエンド
Mid-Level
18問Rails APIモード
Mid-Level
20問RSpecによるテスト
Mid-Level
24問ActiveJob & Background Jobs
Mid-Level
20問ActionCable & WebSockets
Mid-Level
18問ActionMailer
Mid-Level
18問ActiveStorage
Mid-Level
20問キャッシュ戦略
Mid-Level
20問高度なマイグレーション
Mid-Level
20問Rails Engines とモジュラーアプリ
Senior
18問パフォーマンス最適化
Senior
26問Rails のデザインパターン
Senior
22問Rails のセキュリティ
Senior
22問Rails での GraphQL
Senior
20問デプロイと本番環境
Senior
20問Monitoring & Logging
Senior
20問Rails アップグレード戦略
Senior
18問