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

Prefer require_relative for internal requires #522

Conversation

deivid-rodriguez
Copy link
Contributor

I received an issue in the rubygems repository with the following error and backtrace:

ArgumentError: unknown keywords: :symbolize_names, :freeze
  /usr/local/lib/ruby/2.7/psych/visitors/to_ruby.rb:23:in `initialize'
  /usr/local/AC-TESTING/marlpier/disgorge/releases/20211005-092406/analyst-console-escalations-1.2.15.1.130/vendor/bundle/ruby/2.7/gems/psych-3.2.0/lib/psych.rb:355:in `new'
  /usr/local/AC-TESTING/marlpier/disgorge/releases/20211005-092406/analyst-console-escalations-1.2.15.1.130/vendor/bundle/ruby/2.7/gems/psych-3.2.0/lib/psych.rb:355:in `safe_load'
(...)

The actual culprit remains unclear, but we can avoid this kind of jump from one version of a gem to a different copy (and version) of the same gem by using require_relative for internal requires.

@hsbt hsbt merged commit e8d262f into ruby:master Oct 23, 2021
@deivid-rodriguez deivid-rodriguez deleted the prefer_require_relative_for_internal_requires branch October 25, 2021 09:55
tagliala added a commit to tagliala/arbre that referenced this pull request Sep 19, 2024
`require_relative` is preferred over `require` for files within the same
project  because it uses paths relative to the current file, making code
more portable and less dependent on the load path.

This change updates internal requires to use `require_relative` for
consistency, performance, and improved portability.

Ref:
- ruby/psych#522
- ruby/logger#20
- ruby/rdoc#658
- panorama-ed/memo_wise#e349
- rubocop/rubocop#8748
tagliala added a commit to tagliala/arbre that referenced this pull request Sep 19, 2024
`require_relative` is preferred over `require` for files within the same
project  because it uses paths relative to the current file, making code
more portable and less dependent on the load path.

This change updates internal requires to use `require_relative` for
consistency, performance, and improved portability.

Ref:
- ruby/psych#522
- ruby/logger#20
- ruby/rdoc#658
- panorama-ed/memo_wise#349
- rubocop/rubocop#8748
tagliala added a commit to tagliala/arbre that referenced this pull request Sep 19, 2024
`require_relative` is preferred over `require` for files within the same
project because it uses paths relative to the current file, making code
more portable and less dependent on the load path.

This change updates internal requires to use `require_relative` for
consistency, performance, and improved portability.

Ref:
- ruby/psych#522
- ruby/logger#20
- ruby/rdoc#658
- panorama-ed/memo_wise#349
- rubocop/rubocop#8748
tagliala added a commit to activeadmin/arbre that referenced this pull request Sep 19, 2024
`require_relative` is preferred over `require` for files within the same
project because it uses paths relative to the current file, making code
more portable and less dependent on the load path.

This change updates internal requires to use `require_relative` for
consistency, performance, and improved portability.

Ref:
- ruby/psych#522
- ruby/logger#20
- ruby/rdoc#658
- panorama-ed/memo_wise#349
- rubocop/rubocop#8748
tagliala added a commit to tagliala/memo_wise that referenced this pull request Sep 19, 2024
`require_relative` is preferred over `require` for files within the same
project because it uses paths relative to the current file, making code
more portable and less dependent on the load path.

This change updates internal requires to use `require_relative` for
consistency, performance, and improved portability.

Ref:
- ruby/psych#522
- ruby/logger#20
- ruby/rdoc#658
- panorama-ed#349
- rubocop/rubocop#8748
tagliala added a commit to tagliala/memo_wise that referenced this pull request Sep 19, 2024
`require_relative` is preferred over `require` for files within the same
project because it uses paths relative to the current file, making code
more portable and less dependent on the load path.

This change updates internal requires to use `require_relative` for
consistency, performance, and improved portability.

Ref:
- ruby/psych#522
- ruby/logger#20
- ruby/rdoc#658
- panorama-ed#349
- rubocop/rubocop#8748
tagliala added a commit to tagliala/premailer that referenced this pull request Sep 22, 2024
`require_relative` is preferred over `require` for files within the same
project because it uses paths relative to the current file, making code
more portable and less dependent on the load path.

This change updates internal requires to use `require_relative` for
consistency, performance, and improved portability.

Ref:
- ruby/psych#522
- ruby/logger#20
- ruby/rdoc#658
- rubocop/rubocop#8748
tagliala added a commit to tagliala/haml that referenced this pull request Sep 22, 2024
`require_relative` is preferred over `require` for files within the same
project because it uses paths relative to the current file, making code
more portable and less dependent on the load path.

This change updates internal requires to use `require_relative` for
consistency, performance, and improved portability.

Ref:
- ruby/psych#522
- ruby/logger#20
- ruby/rdoc#658
- rubocop/rubocop#8748
tagliala added a commit to tagliala/haml that referenced this pull request Sep 22, 2024
`require_relative` is preferred over `require` for files within the same
project because it uses paths relative to the current file, making code
more portable and less dependent on the load path.

This change updates internal requires to use `require_relative` for
consistency, performance, and improved portability.

require_relative was introduced in Ruby 1.9.2, and since the minimum
supported Ruby version is 2.1.0, this change is fully compatible.

Ref:
- ruby/psych#522
- ruby/logger#20
- ruby/rdoc#658
- rubocop/rubocop#8748
tagliala added a commit to tagliala/haml that referenced this pull request Sep 22, 2024
`require_relative` is preferred over `require` for files within the same
project because it uses paths relative to the current file, making code
more portable and less dependent on the load path.

This change updates internal requires to use `require_relative` for
consistency, performance, and improved portability.

`require_relative` was introduced in Ruby 1.9.2, and since the minimum
supported Ruby version is 2.1.0, this change is fully compatible.

Ref:
- ruby/psych#522
- ruby/logger#20
- ruby/rdoc#658
- rubocop/rubocop#8748
tagliala added a commit to tagliala/memo_wise that referenced this pull request Sep 25, 2024
`require_relative` is preferred over `require` for files within the same
project because it uses paths relative to the current file, making code
more portable and less dependent on the load path.

This change updates internal requires to use `require_relative` for
consistency, performance, and improved portability.

Ref:
- ruby/psych#522
- ruby/logger#20
- ruby/rdoc#658
- panorama-ed#349
- rubocop/rubocop#8748
tagliala added a commit to tagliala/inline_svg that referenced this pull request Sep 27, 2024
`require_relative` is preferred over `require` for files within the same
project because it uses paths relative to the current file, making code
more portable and less dependent on the load path.

This change updates internal requires to use `require_relative` for
consistency, performance, and improved portability.

Ref:
- ruby/psych#522
- ruby/logger#20
- ruby/rdoc#658
- rubocop/rubocop#8748
tagliala added a commit to tagliala/inline_svg that referenced this pull request Sep 27, 2024
`require_relative` is preferred over `require` for files within the same
project because it uses paths relative to the current file, making code
more portable and less dependent on the load path.

This change updates internal requires to use `require_relative` for
consistency, performance, and improved portability.

Ref:
- ruby/psych#522
- ruby/logger#20
- ruby/rdoc#658
- rubocop/rubocop#8748
tagliala added a commit to tagliala/inline_svg that referenced this pull request Oct 8, 2024
`require_relative` is preferred over `require` for files within the same
project because it uses paths relative to the current file, making code
more portable and less dependent on the load path.

This change updates internal requires to use `require_relative` for
consistency, performance, and improved portability.

Ref:
- ruby/psych#522
- ruby/logger#20
- ruby/rdoc#658
- rubocop/rubocop#8748
tagliala added a commit to tagliala/inline_svg that referenced this pull request Oct 9, 2024
`require_relative` is preferred over `require` for files within the same
project because it uses paths relative to the current file, making code
more portable and less dependent on the load path.

This change updates internal requires to use `require_relative` for
consistency, performance, and improved portability.

Ref:
- ruby/psych#522
- ruby/logger#20
- ruby/rdoc#658
- rubocop/rubocop#8748
tagliala added a commit to tagliala/inline_svg that referenced this pull request Oct 9, 2024
`require_relative` is preferred over `require` for files within the same
project because it uses paths relative to the current file, making code
more portable and less dependent on the load path.

This change updates internal requires to use `require_relative` for
consistency, performance, and improved portability.

However, the test directory makes an exception and there `require` is
preferred

Fix `Packaging/RequireRelativeHardcodingLib` safe offense

Ref:
- ruby/psych#522
- ruby/logger#20
- ruby/rdoc#658
- rubocop/rubocop#8748
- https://docs.rubocop.org/rubocop-packaging/cops_packaging.html#packagingrequirerelativehardcodinglib
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.

2 participants