def method_missing(method_name, *args)
      # Find the operator class
      class_name = method_name.to_s.camelcase
      operator_class = "Fleximage::Operator::#{class_name}".constantize
      
      # Define a method for this operator so future calls to this operation are faster
      self.class.module_eval <<-EOF
        def #{method_name}(*args)
          @image = execute_operator(#{operator_class}, *args)
        end
      EOF
      
      # Call the method that was just defined to perform its functionality.
      send(method_name, *args)
    
    rescue NameError => e
      if e.to_s =~ /uninitialized constant Fleximage::Operator::#{class_name}/
        raise OperatorNotFound, "No operator Fleximage::Operator::#{class_name} found for the method \"#{method_name}\""
      else
        raise e
      end
    end
def method_missing(method_name, *args)
      # Find the operator class
      class_name = method_name.to_s.camelcase
      operator_class = "Fleximage::Operator::#{class_name}".constantize
      
      # Define a method for this operator so future calls to this operation are faster
      self.class.module_eval <<-EOF
        def #{method_name}(*args)
          @image = execute_operator(#{operator_class}, *args)
        end
      EOF
      
      # Call the method that was just defined to perform its functionality.
      send(method_name, *args)
    
    rescue NameError => e
      if e.to_s =~ /uninitialized constant Fleximage::Operator::#{class_name}/
        raise OperatorNotFound, "No operator Fleximage::Operator::#{class_name} found for the method \"#{method_name}\""
      else
        raise e
      end
    end
A call to an unknown method will look for an Operator by that method's name.
 If it finds one, it will execute that operator.