Using method_missing judiciously
In general, you should only use method_missing
in cases where it is required. Overuse of method_missing
in cases where it isn't necessary often leads to code that is difficult to understand and refactor. If you have a use case where literally any method can be called and should work, that is a good case for method_missing
.
Let's say you want a method where you can just type random words in, and it will return a list of symbols:
words{this is a list of words} # => [:this, :is, :a, :list, :of, :words]
This is a case where method_missing
makes sense because any method could be called. Implementing this particular example is interesting. You want words
to be a valid method you can call anywhere, but you want words
inside the block to call method_missing
. You can implement this by having instance_eval
the block in the context of a BasicObject
instance. It would be great to use define_singleton_method
or singleton_class.define_method...