Skip to content

Conversation

marcandre
Copy link
Member

Small but free speed gain by using require_relative instead of require

@aycabta
Copy link
Member

aycabta commented Jun 11, 2019

@marcandre I'm considering this but I need a performance report. I'll reject any optimizations without a performance report.

@aycabta
Copy link
Member

aycabta commented Jun 11, 2019

And please add the report to the commit comment.

Example: 818ee97

@marcandre
Copy link
Member Author

marcandre commented Jun 11, 2019

@aycabta I'm considering your request but I need a single example or argument whereby require_relative would not be faster and safer than require. I'll reject your request without that.

@nobu
Copy link
Member

nobu commented Jun 11, 2019

I agree that require_relative will be faster (never slower at least) than require.
And curious how it get faster depending on the length of $:.

@ioquatix
Copy link
Member

ioquatix commented Apr 7, 2020

We don't need performance report for this. It's simply better to prefer require_relative. So, if you update the PR, I will merge it.

@marcandre
Copy link
Member Author

@ioquatix PR rebased

@hsbt
Copy link
Member

hsbt commented Jun 28, 2020

It's totally maintainers who are @aycabta 's convenience.

@marcandre
Copy link
Member Author

Ping @aycabta

@marcandre marcandre merged commit bfafa52 into ruby:master Sep 14, 2020
@marcandre marcandre deleted the require_relative branch September 14, 2020 16:54
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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants