Incorporating respond_to_missing to conform to metaprogramming best practices
In the previous section, you learned about a metaprogramming method called method_missing
.
As mentioned earlier, the problem with this method is that most developers tend to use the respond_to?
method to check whether the method is present and, only if the value is true
, the rest of the code is executed. To ensure that we're conforming to Ruby best practices, override the respond_to?
method, like so:
def respond_to_missing?(method_name, include_private = false) method_name.to_s.start_with?('author_') || super end
In this code, we passed two arguments to the method and, in the next line, we created a conditional that is similar to the one in method_missing
. However, we are using a different syntax to get more familiar with different syntaxes.
Instead of using an if...else
statement, we simply execute the same functionality on a single line. This code first converts the method_name
into a string and checks whether...