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...