Merge pull request #5451 from tgxworld/treat_non_ascii_urls_as_valid

Treat non-ascii URLs in `UrlValidator`.
This commit is contained in:
Guo Xiang Tan 2017-12-27 14:14:20 +08:00 committed by GitHub
commit 805d1c25d3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 1 deletions

View File

@ -5,7 +5,12 @@ class UrlValidator < ActiveModel::EachValidator
begin
uri = URI.parse(value)
uri.is_a?(URI::HTTP) && !uri.host.nil? && uri.host.include?(".")
rescue
rescue URI::InvalidURIError => e
if (e.message =~ /URI must be ascii only/)
value = URI.encode(value)
retry
end
nil
end

View File

@ -23,6 +23,8 @@ RSpec.describe UrlValidator do
[
"http://discourse.productions",
"https://google.com",
'http://xn--nw2a.xn--j6w193g/',
"http://見.香港/",
].each do |valid_url|
it "#{valid_url} should be valid" do
record.website = valid_url