In the How to integrate metaprogramming techniques into a custom class section, 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...