Skip to content

yvettecook/MetaProgramming-Play

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 

Repository files navigation

Week 10: Makers's Academy

Playing around with metaprogramming in Ruby

Challenge:

  • Use method_missing to redefine how an object reacts when asked has_unknown_attribute.
  • Use define_method to create a boolean version of Ruby's inbuilt attr_accessor method.

Code Snippets:

attr_accessor method using define_method

def self.attr_accessor?(attr)
  read_method = "#{attr}?"
  write_method = "#{attr}="
  self.send(:define_method, read_method) { instance_variable_get("@#{attr}") }
  self.send(:define_method, write_method) { |value| instance_variable_set("@#{attr}", value) }
end

Learning

Whilst these are only very simple examples, metaprogramming isn't quite as terrifying as I first thought.

About

Rewriting the Ruby inject method to learn about meta-programming

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages