# Metaprogramming Ruby (Ruby on Rails) > define_method, method_missing, class_eval, instance_eval, hooks, DSLs - 20 pertanyaan wawancara - Senior - [Pertanyaan Wawancara: Ruby on Rails](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara.md) ## 1. Apa itu metaprogramming dalam Ruby? **Jawaban** Metaprogramming adalah kemampuan sebuah program untuk menulis atau memodifikasi kode saat runtime. Di Ruby, hal ini memungkinkan pendefinisian method, class, dan module secara dinamis, sehingga kode menjadi lebih fleksibel dan ringkas. Teknik ini banyak digunakan dalam framework seperti Rails untuk membuat DSL yang elegan dan mengurangi duplikasi kode. ## 2. Apa tujuan dari metode define_method di Ruby? **Jawaban** define_method memungkinkan pembuatan metode secara dinamis saat runtime. Ia menerima nama metode (symbol atau string) dan sebuah block yang mendefinisikan badan metode. Berbeda dengan def, define_method menangkap variabel lokal dari scope di sekitarnya melalui sebuah closure, yang berguna untuk menghasilkan metode dengan perilaku yang terparameterisasi. ## 3. Kapan metode method_missing dipanggil oleh Ruby? **Jawaban** method_missing dipanggil secara otomatis ketika sebuah objek menerima panggilan metode yang tidak ada dalam rantai pewarisannya. Ia menerima nama metode yang dipanggil beserta argumennya, sehingga memungkinkan penanganan panggilan tersebut secara dinamis. Ini adalah dasar dari banyak pola metaprogramming seperti ghost methods yang digunakan di ActiveRecord. ## 17 pertanyaan lagi tersedia - Apa perbedaan utama antara class_eval dan instance_eval? - Hook mana yang dipanggil ketika sebuah module di-include ke dalam sebuah kelas? Daftar gratis: https://sharpskill.dev/id/login ## Topik wawancara Ruby on Rails lainnya - [Dasar-Dasar Ruby](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/ruby-basics.md): 25 pertanyaan, Junior - [Pemrograman Berorientasi Objek di Ruby](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/ruby-oop.md): 20 pertanyaan, Junior - [Dasar-Dasar Rails](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/rails-fundamentals.md): 18 pertanyaan, Junior - [Routing & Controllers](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/routing-controllers.md): 22 pertanyaan, Junior - [Dasar-Dasar ActiveRecord](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/active-record-basics.md): 25 pertanyaan, Junior - [Views & Template ERB](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/views-erb-templates.md): 20 pertanyaan, Junior - [Asosiasi ActiveRecord](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/active-record-associations.md): 24 pertanyaan, Mid-Level - [Kueri ActiveRecord Lanjutan](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/active-record-queries.md): 28 pertanyaan, Mid-Level - [Formulir Rails](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/rails-forms.md): 20 pertanyaan, Mid-Level - [Autentikasi & Otorisasi](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/authentication-authorization.md): 22 pertanyaan, Mid-Level - [Asset Pipeline modern & frontend](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/rails-asset-pipeline.md): 18 pertanyaan, Mid-Level - [Mode API Rails](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/rails-api-mode.md): 20 pertanyaan, Mid-Level - [Pengujian dengan RSpec](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/rails-testing-rspec.md): 24 pertanyaan, Mid-Level - [ActiveJob & Background Jobs](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/active-job-background-jobs.md): 20 pertanyaan, Mid-Level - [ActionCable & WebSockets](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/action-cable-websockets.md): 18 pertanyaan, Mid-Level - [ActionMailer](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/action-mailer.md): 18 pertanyaan, Mid-Level - [ActiveStorage](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/active-storage.md): 20 pertanyaan, Mid-Level - [Strategi Caching](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/caching-strategies.md): 20 pertanyaan, Mid-Level - [Migrasi tingkat lanjut](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/database-migrations-advanced.md): 20 pertanyaan, Mid-Level - [Rails Engines & Aplikasi Modular](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/rails-engines-modular-apps.md): 18 pertanyaan, Senior - [Optimasi Performa](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/performance-optimization.md): 26 pertanyaan, Senior - [Design Pattern Rails](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/rails-design-patterns.md): 22 pertanyaan, Senior - [Keamanan Rails](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/rails-security.md): 22 pertanyaan, Senior - [GraphQL dengan Rails](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/graphql-rails.md): 20 pertanyaan, Senior - [Deployment & Produksi](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/rails-deployment-production.md): 20 pertanyaan, Senior - [Monitoring & Logging](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/monitoring-logging.md): 20 pertanyaan, Senior - [Strategi Upgrade Rails](https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/rails-upgrade-strategies.md): 18 pertanyaan, Senior --- Source: SharpSkill (https://sharpskill.dev), tech interview preparation for your real stack. HTML version of this page: https://sharpskill.dev/id/technologies/ruby-on-rails/pertanyaan-wawancara/ruby-metaprogramming