How to use metaprogramming for opening and customizing the String class
In the How to integrate metaprogramming techniques into a custom classsection, we went through a basic example of metaprogramming just to get an idea of what it is and how we can use it. In this section, let's see a more practical way of using it.
In this case, we'll open the String
class in Ruby. This is a core Ruby class that is used extensively. For example, every time you declare a variable with a string value, you instantiate an object of the String
class.
Now when we define a class called String
, remember that we're simply reopening this class; we're not creating one from scratch. Let's add a method called censor
to block out certain words in an application. Currently, the String
class has no such method, so we'll not override any preexisting methods. The code will look like this:
class String def censor(bad_word) self.gsub! "#{bad_word}", "CENSORED" end end
In this code, we called self
because we wanted any...