Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use RFC3986_Parser by default #107

Merged
merged 7 commits into from
Jul 19, 2024
Merged

Use RFC3986_Parser by default #107

merged 7 commits into from
Jul 19, 2024

Conversation

hsbt
Copy link
Member

@hsbt hsbt commented Jul 17, 2024

Fixed #104
Fixed #105

https://bugs.ruby-lang.org/issues/19266

This pull-request switched URI::DEFAULT_PARSER to URI::RFC3986_Parser. And I added switch-back feature for URI::RFC2396_Parser.

URI.parser = URI::RFC2396_PARSER

If user want to use RFC2396_PARSER, they can use it with the above configuration.

@hsbt hsbt marked this pull request as ready for review July 18, 2024 01:33
If given block to URI.extract, it returns nil.
matzbot pushed a commit to ruby/ruby that referenced this pull request Jul 18, 2024
@hsbt hsbt merged commit b8ea06f into master Jul 19, 2024
48 checks passed
@hsbt hsbt deleted the use-rfc3986 branch July 19, 2024 00:50
hsbt added a commit to hsbt/mustermann that referenced this pull request Jul 19, 2024
In background, URI will change DEFAULT_PARSER to RFC2396_Parser.

ruby/uri#107

After that, we lost some of regex pattern like UNSAFE.
yahonda added a commit to yahonda/rails that referenced this pull request Sep 2, 2024
Ruby 3.4 changes `URI::DEFAULT_PARSER` to `URI::RFC3986_Parser`
and deprecates `URI::RFC3986_PARSER.make_regexp`,`URI::RFC3986_PARSER.escape`, `URI::RFC3986_PARSER.unescape` and `URI::RFC3986_PARSER.extract`.

uri v0.12.2 for Ruby 3.2/3.1 and v0.13.1 for Ruby 3.3 adds `URI::RFC2396_PARSER`.
As of right now there is no way to use uri v0.12.2 for Ruby 3.2/3.1 and v0.13.1 for Ruby 3.3,
This commit uses v0.13.1 or higher version for all supported Ruby versions by Rails main branch.

It also reverts rails#52682 because the original issue has been resolved.

Refer to following URL for the backgrond of this change:
- URI::Generic should use URI::RFC3986_PARSER instead of URI::DEFAULT_PARSER
https://bugs.ruby-lang.org/issues/19266

- Use RFC3986_Parser by default
ruby/uri#107

- Warn compatibility methods in RFC3986_PARSER
ruby/uri#114

- Also warn URI::RFC3986_PARSER.extract
ruby/uri#121

- Define RFC2396_PARSER for Ruby 3.3
ruby/uri#119

- Define RFC2396_PARSER for Ruby 3.2 and 3.1
ruby/uri#120
byroot pushed a commit to byroot/rails that referenced this pull request Oct 3, 2024
Ruby 3.4 changes `URI::DEFAULT_PARSER` to `URI::RFC3986_Parser`
and deprecates `URI::RFC3986_PARSER.make_regexp`,`URI::RFC3986_PARSER.escape`, `URI::RFC3986_PARSER.unescape` and `URI::RFC3986_PARSER.extract`.

uri v0.12.2 for Ruby 3.2/3.1 and v0.13.1 for Ruby 3.3 adds `URI::RFC2396_PARSER`.
As of right now there is no way to use uri v0.12.2 for Ruby 3.2/3.1 and v0.13.1 for Ruby 3.3,
This commit uses v0.13.1 or higher version for all supported Ruby versions by Rails main branch.

It also reverts rails#52682 because the original issue has been resolved.

Refer to following URL for the backgrond of this change:
- URI::Generic should use URI::RFC3986_PARSER instead of URI::DEFAULT_PARSER
https://bugs.ruby-lang.org/issues/19266

- Use RFC3986_Parser by default
ruby/uri#107

- Warn compatibility methods in RFC3986_PARSER
ruby/uri#114

- Also warn URI::RFC3986_PARSER.extract
ruby/uri#121

- Define RFC2396_PARSER for Ruby 3.3
ruby/uri#119

- Define RFC2396_PARSER for Ruby 3.2 and 3.1
ruby/uri#120
DanielaVelasquez pushed a commit to DanielaVelasquez/rails that referenced this pull request Oct 3, 2024
Ruby 3.4 changes `URI::DEFAULT_PARSER` to `URI::RFC3986_Parser`
and deprecates `URI::RFC3986_PARSER.make_regexp`,`URI::RFC3986_PARSER.escape`, `URI::RFC3986_PARSER.unescape` and `URI::RFC3986_PARSER.extract`.

uri v0.12.2 for Ruby 3.2/3.1 and v0.13.1 for Ruby 3.3 adds `URI::RFC2396_PARSER`.
As of right now there is no way to use uri v0.12.2 for Ruby 3.2/3.1 and v0.13.1 for Ruby 3.3,
This commit uses v0.13.1 or higher version for all supported Ruby versions by Rails main branch.

It also reverts rails#52682 because the original issue has been resolved.

Refer to following URL for the backgrond of this change:
- URI::Generic should use URI::RFC3986_PARSER instead of URI::DEFAULT_PARSER
https://bugs.ruby-lang.org/issues/19266

- Use RFC3986_Parser by default
ruby/uri#107

- Warn compatibility methods in RFC3986_PARSER
ruby/uri#114

- Also warn URI::RFC3986_PARSER.extract
ruby/uri#121

- Define RFC2396_PARSER for Ruby 3.3
ruby/uri#119

- Define RFC2396_PARSER for Ruby 3.2 and 3.1
ruby/uri#120
yahonda added a commit to yahonda/sprockets that referenced this pull request Oct 22, 2024
* Steps to reproduce

```ruby
$ ruby -v
ruby 3.4.0dev (2024-10-21T16:48:53Z master 5131fb5dbe) +PRISM [x86_64-linux]
$ bundle exec rake 2>&1 |grep 'warning: URI::RFC3986_PARSER'
```

* Warnings addressed by this commit:
```ruby
/path/to/sprockets/lib/sprockets/uri_utils.rb:48: warning: URI::RFC3986_PARSER.unescape is obsoleted. Use URI::RFC2396_PARSER.unescape explicitly.
/path/to/sprockets/lib/sprockets/uri_utils.rb:66: warning: URI::RFC3986_PARSER.escape is obsoleted. Use URI::RFC2396_PARSER.escape explicitly.
/path/to/sprockets/lib/sprockets/uri_utils.rb:165: warning: URI::RFC3986_PARSER.escape is obsoleted. Use URI::RFC2396_PARSER.escape explicitly.
/path/to/sprockets/lib/sprockets/uri_utils.rb:185: warning: URI::RFC3986_PARSER.unescape is obsoleted. Use URI::RFC2396_PARSER.unescape explicitly.
```

Refer to the following URL for the background of this change:

- URI::Generic should use URI::RFC3986_PARSER instead of URI::DEFAULT_PARSER https://bugs.ruby-lang.org/issues/19266
- Use RFC3986_Parser by default ruby/uri#107
- Warn compatibility methods in RFC3986_PARSER ruby/uri#114
headius pushed a commit to headius/spec that referenced this pull request Oct 31, 2024
headius pushed a commit to headius/spec that referenced this pull request Oct 31, 2024
headius pushed a commit to headius/spec that referenced this pull request Nov 6, 2024
haines added a commit to haines/pg-aws_rds_iam that referenced this pull request Nov 12, 2024
haines added a commit to haines/pg-aws_rds_iam that referenced this pull request Nov 12, 2024
jsvd added a commit to logstash-plugins/logstash-input-http_poller that referenced this pull request Nov 18, 2024
From ruby/uri#107:

```
This pull-request switched URI::DEFAULT_PARSER to URI::RFC3986_Parser. And I added switch-back feature for URI::RFC2396_Parser.

URI.parser = URI::RFC2396_PARSER
```
donoghuc pushed a commit to logstash-plugins/logstash-input-http_poller that referenced this pull request Nov 20, 2024
From ruby/uri#107:

```
This pull-request switched URI::DEFAULT_PARSER to URI::RFC3986_Parser. And I added switch-back feature for URI::RFC2396_Parser.

URI.parser = URI::RFC2396_PARSER
```
If the `URI::RFC2396_PARSER` constant is not defined (using an older URI lib) then fall back to using the default.
jsvd added a commit to logstash-plugins/logstash-input-http_poller that referenced this pull request Nov 21, 2024
Also change uri parser regexp due to uri gem change

From ruby/uri#107:

```
This pull-request switched URI::DEFAULT_PARSER to URI::RFC3986_Parser. And I added switch-back feature for URI::RFC2396_Parser.

URI.parser = URI::RFC2396_PARSER
```

Introduce check so that if the `URI::RFC2396_PARSER` constant is not defined (using an older URI lib) then fall back to using the default.
voxik added a commit to voxik/globalid that referenced this pull request Dec 13, 2024
The default parser in URI 1.0.0 / Ruby 3.4 has been changed to RFC3986
[[1]]. This causes test failures such as:

~~~
... snip ...

Failure:
GlobalIDTest#test_invalid_app_name [test/cases/global_id_test.rb:13]:
ArgumentError expected but nothing was raised.

rails test test/cases/global_id_test.rb:8

F

... snip ...
~~~

where underscores / ampersands are now allowed in host. Keep using
`URI::RFC2396_PARSER` for compatibility.

Fixes rails#190

[1]: ruby/uri#107
voxik added a commit to voxik/globalid that referenced this pull request Dec 13, 2024
The default parser in URI 1.0.0 / Ruby 3.4 has been changed to RFC3986
[[1]]. This causes test failures such as:

~~~
... snip ...

Failure:
GlobalIDTest#test_invalid_app_name [test/cases/global_id_test.rb:13]:
ArgumentError expected but nothing was raised.

rails test test/cases/global_id_test.rb:8

F

... snip ...
~~~

where underscores / ampersands are now allowed in host. Keep using URI
RFC2396 parser for compatibility.

Fixes rails#190

[1]: ruby/uri#107
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

using RFC_3986 with URI::Generic.build
1 participant