class ValidationErrors
  def self.default_error_message(*values)
    # do something
  end
  
  def error_message(*values)
  end
end

def validate_with_comparison(value, cmp, expected)
  comparison = value.send(cmp, expected)
  puts expected                                     # DOES NOT FAIL

  # ValidationErrors.new.error_message(expected)    # Calling #error_message
                                                    # first and below no longer
                                                    # fails.

  ValidationErrors.default_error_message(expected)  # FAILS
end

def value_as_string(value)
  value.to_s
end

# DOES NOT FAIL: 
validate_with_comparison(0, :=~, /\A[+-]?\d+\z/)
# FAILS:
validate_with_comparison(value_as_string(0), :=~, /\A[+-]?\d+\z/)
