require_bench 1.0.4.pre.alpha.7 → 1.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 919c2f3cdaf47fedf1ca5771b0cc7b9cad4e42f33d86a53c1a6e90b858103414
4
- data.tar.gz: 976f0fcb04c3099bd3e3bb4edce225f488b12f12833b5f838b0ba694f46a8924
3
+ metadata.gz: 9c4c4ddfda02fe07fbf191581802b31b995565057e37876e7ac1f48c17b5de42
4
+ data.tar.gz: 1ee25785584bdd4584302d82874bf88d38181b9e337614c54919e5b567b9ad49
5
5
  SHA512:
6
- metadata.gz: d3e46233df51c7263489a8851f4da8f96a64bb83e863819a119baf4674fe3f9f95f6b832e5edb3a8f3c8441a29b1c07bf8c4cdb841c94d0760b947c09ca8c17b
7
- data.tar.gz: 84fae936ba01e83d7e6e6d4be55cfd77e0461812a0eb82924702c3082f86c3f4d173762d88891447867ecfb2666254d1e16d9e8c51df48e8a08c5fe88d06e816
6
+ metadata.gz: fc3df6dd25d4aab9ed30d2ddedf87cca2c5d42eea42a3d6ff79cb08a89a1dd7187200e72e0bfc27d5b6dc893b9b710d1fac337d1c9098712dd6588395ec4cc29
7
+ data.tar.gz: 43ab2c54046cca954c376756db3245d8e2cc2deddd1d74404b3cff8522f81143c8b08628bd1ca16871b31d07ad57b41c1bdd4a2962908dfde70ad6037e91ff16
checksums.yaml.gz.sig ADDED
@@ -0,0 +1 @@
1
+ �_:�jW�<����S��,V�K�z����R� 
data/CHANGELOG.md ADDED
@@ -0,0 +1,63 @@
1
+ # Changelog
2
+ All notable changes to this project will be documented in this file.
3
+
4
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
5
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
+
7
+ ## [Unreleased]
8
+ ### Added
9
+ ### Changed
10
+ ### Fixed
11
+ ### Removed
12
+
13
+ ## [1.0.4] 2023-10-10
14
+ ### Added
15
+ - Minimum Ruby version @ 2.2.0
16
+ - Support tracking `load` in addition to `require`!
17
+ - More tests
18
+ - Better documentation
19
+ - New ENV control variables
20
+ - wrap/log load in addition to require
21
+ - ENV['REQUIRE_BENCH_TRACKED_METHODS']
22
+ - rescue errors
23
+ - ENV['REQUIRE_BENCH_RESCUED_CLASSES']
24
+ - log start
25
+ - ENV['REQUIRE_BENCH_LOG_START']
26
+ - load/require timeout
27
+ - ENV['REQUIRE_BENCH_TIMEOUT']
28
+ - A pattern for paths that should be included/tracked
29
+ - ENV['REQUIRE_BENCH_INCLUDE_PATTERN']
30
+ - Should grouping be by basename or by path?
31
+ - ENV['REQUIRE_BENCH_GROUP_PRECEDENCE']
32
+ - Prefer to not group some pattern (i.e. some libraries)
33
+ - ENV['REQUIRE_BENCH_NO_GROUP_PATTERN']
34
+ ### Changed
35
+ - RequireBench::Version is now RequireBench::VERSION::Version (uses version_gem)
36
+ ### Fixed
37
+ - No RequireBench behavior unless ENV['REQUIRE_BENCH'] == 'true'
38
+ - Use `casecmp?` instead of `==` to check ENV variable flags ^
39
+
40
+ ## [1.0.3] 2020-04-08
41
+ ### Added
42
+ - More tests
43
+
44
+ ## [1.0.2] 2020-04-08
45
+ ### Added
46
+ - Improved documentation
47
+ - Improved handling of ENV variables
48
+
49
+ ## [1.0.1] 2018-09-21
50
+ ### Added
51
+ - Improved documentation
52
+ - MIT license
53
+
54
+ ## [1.0.0] 2018-09-21
55
+ ### Added
56
+ - Initial release
57
+
58
+ [Unreleased]: https://gitlab.com/pboling/require_bench/-/compare/v1.0.4...HEAD
59
+ [1.0.4]: https://gitlab.com/pboling/require_bench/-/compare/v1.0.3...v1.0.4
60
+ [1.0.3]: https://gitlab.com/pboling/require_bench/-/compare/v1.0.2...v1.0.3
61
+ [1.0.2]: https://gitlab.com/pboling/require_bench/-/compare/v1.0.1...v1.0.2
62
+ [1.0.1]: https://gitlab.com/pboling/require_bench/-/compare/v1.0.0...v1.0.1
63
+ [1.0.0]: https://gitlab.com/pboling/require_bench/-/compare/67e03119ddb8be7b04ae7fd12da62d0ea5b6fb74...v1.0.0
data/CODE_OF_CONDUCT.md CHANGED
@@ -2,73 +2,83 @@
2
2
 
3
3
  ## Our Pledge
4
4
 
5
- In the interest of fostering an open and welcoming environment, we as
6
- contributors and maintainers pledge to making participation in our project and
7
- our community a harassment-free experience for everyone, regardless of age, body
8
- size, disability, ethnicity, gender identity and expression, level of experience,
9
- nationality, personal appearance, race, religion, or sexual identity and
10
- orientation.
5
+ We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.
6
+
7
+ We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.
11
8
 
12
9
  ## Our Standards
13
10
 
14
- Examples of behavior that contributes to creating a positive environment
15
- include:
11
+ Examples of behavior that contributes to a positive environment for our community include:
16
12
 
17
- * Using welcoming and inclusive language
18
- * Being respectful of differing viewpoints and experiences
19
- * Gracefully accepting constructive criticism
20
- * Focusing on what is best for the community
21
- * Showing empathy towards other community members
13
+ * Demonstrating empathy and kindness toward other people
14
+ * Being respectful of differing opinions, viewpoints, and experiences
15
+ * Giving and gracefully accepting constructive feedback
16
+ * Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience
17
+ * Focusing on what is best not just for us as individuals, but for the overall community
22
18
 
23
- Examples of unacceptable behavior by participants include:
19
+ Examples of unacceptable behavior include:
24
20
 
25
- * The use of sexualized language or imagery and unwelcome sexual attention or
26
- advances
27
- * Trolling, insulting/derogatory comments, and personal or political attacks
21
+ * The use of sexualized language or imagery, and sexual attention or
22
+ advances of any kind
23
+ * Trolling, insulting or derogatory comments, and personal or political attacks
28
24
  * Public or private harassment
29
- * Publishing others' private information, such as a physical or electronic
30
- address, without explicit permission
25
+ * Publishing others' private information, such as a physical or email
26
+ address, without their explicit permission
31
27
  * Other conduct which could reasonably be considered inappropriate in a
32
28
  professional setting
33
29
 
34
- ## Our Responsibilities
30
+ ## Enforcement Responsibilities
35
31
 
36
- Project maintainers are responsible for clarifying the standards of acceptable
37
- behavior and are expected to take appropriate and fair corrective action in
38
- response to any instances of unacceptable behavior.
32
+ Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful.
39
33
 
40
- Project maintainers have the right and responsibility to remove, edit, or
41
- reject comments, commits, code, wiki edits, issues, and other contributions
42
- that are not aligned to this Code of Conduct, or to ban temporarily or
43
- permanently any contributor for other behaviors that they deem inappropriate,
44
- threatening, offensive, or harmful.
34
+ Community leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for moderation decisions when appropriate.
45
35
 
46
36
  ## Scope
47
37
 
48
- This Code of Conduct applies both within project spaces and in public spaces
49
- when an individual is representing the project or its community. Examples of
50
- representing a project or community include using an official project e-mail
51
- address, posting via an official social media account, or acting as an appointed
52
- representative at an online or offline event. Representation of a project may be
53
- further defined and clarified by project maintainers.
38
+ This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event.
54
39
 
55
40
  ## Enforcement
56
41
 
57
- Instances of abusive, harassing, or otherwise unacceptable behavior may be
58
- reported by contacting the project team at peter.boling@gmail.com. All
59
- complaints will be reviewed and investigated and will result in a response that
60
- is deemed necessary and appropriate to the circumstances. The project team is
61
- obligated to maintain confidentiality with regard to the reporter of an incident.
62
- Further details of specific enforcement policies may be posted separately.
42
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at peter.boling@gmail.com. All complaints will be reviewed and investigated promptly and fairly.
43
+
44
+ All community leaders are obligated to respect the privacy and security of the reporter of any incident.
45
+
46
+ ## Enforcement Guidelines
47
+
48
+ Community leaders will follow these Community Impact Guidelines in determining the consequences for any action they deem in violation of this Code of Conduct:
49
+
50
+ ### 1. Correction
51
+
52
+ **Community Impact**: Use of inappropriate language or other behavior deemed unprofessional or unwelcome in the community.
53
+
54
+ **Consequence**: A private, written warning from community leaders, providing clarity around the nature of the violation and an explanation of why the behavior was inappropriate. A public apology may be requested.
55
+
56
+ ### 2. Warning
57
+
58
+ **Community Impact**: A violation through a single incident or series of actions.
63
59
 
64
- Project maintainers who do not follow or enforce the Code of Conduct in good
65
- faith may face temporary or permanent repercussions as determined by other
66
- members of the project's leadership.
60
+ **Consequence**: A warning with consequences for continued behavior. No interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, for a specified period of time. This includes avoiding interactions in community spaces as well as external channels like social media. Violating these terms may lead to a temporary or permanent ban.
61
+
62
+ ### 3. Temporary Ban
63
+
64
+ **Community Impact**: A serious violation of community standards, including sustained inappropriate behavior.
65
+
66
+ **Consequence**: A temporary ban from any sort of interaction or public communication with the community for a specified period of time. No public or private interaction with the people involved, including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this period. Violating these terms may lead to a permanent ban.
67
+
68
+ ### 4. Permanent Ban
69
+
70
+ **Community Impact**: Demonstrating a pattern of violation of community standards, including sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement of classes of individuals.
71
+
72
+ **Consequence**: A permanent ban from any sort of public interaction within the community.
67
73
 
68
74
  ## Attribution
69
75
 
70
- This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
71
- available at [http://contributor-covenant.org/version/1/4][version]
76
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 2.0,
77
+ available at https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
78
+
79
+ Community Impact Guidelines were inspired by [Mozilla's code of conduct enforcement ladder](https://github.com/mozilla/diversity).
80
+
81
+ [homepage]: https://www.contributor-covenant.org
72
82
 
73
- [homepage]: http://contributor-covenant.org
74
- [version]: http://contributor-covenant.org/version/1/4/
83
+ For answers to common questions about this code of conduct, see the FAQ at
84
+ https://www.contributor-covenant.org/faq. Translations are available at https://www.contributor-covenant.org/translations.
data/CONTRIBUTING.md ADDED
@@ -0,0 +1,38 @@
1
+ ## Contributing
2
+
3
+ Bug reports and pull requests are welcome on GitLab at [https://gitlab.com/pboling/require_bench][🚎src-main]
4
+ . This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to
5
+ the [code of conduct][conduct].
6
+
7
+ To submit a patch, please fork the project and create a patch with tests. Once you're happy with it send a pull request
8
+ and post a message to the [gitter chat][🏘chat].
9
+
10
+ ## Release
11
+
12
+ To release a new version:
13
+
14
+ 1. Run `bin/setup && bin/rake` as a tests, coverage, & linting sanity check
15
+ 2. Update the version number in `version.rb`
16
+ 3. Run `bin/setup && bin/rake` again as a secondary check, and to update `Gemfile.lock`
17
+ 4. Run `git commit -am "🔖 Prepare release v<VERSION>"` to commit the changes
18
+ a. NOTE: Remember to [check the build][build]!
19
+ 5. Run `rake build`
20
+ 6. Run [`bin/checksums`](https://github.com/rubygems/guides/pull/325) to create SHA-256 and SHA-512 checksums
21
+ a. Checksums will be committed automatically by the script
22
+ 7. Run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org][rubygems]
23
+
24
+ NOTE: You will need to have a public key in `certs/`, and list your cert in the
25
+ `gemspec`, in order to sign the new release.
26
+ See: [RubyGems Security Guide][rubygems-security-guide]
27
+
28
+ ## Contributors
29
+
30
+ See: [https://gitlab.com/pboling/require_bench/-/graphs/main][🖐contributors]
31
+
32
+ [conduct]: https://gitlab.com/pboling/require_bench/-/blob/main/CODE_OF_CONDUCT.md
33
+ [build]: https://github.com/pboling/require_bench/actions
34
+ [🖐contributors]: https://gitlab.com/pboling/require_bench/-/graphs/main
35
+ [🚎src-main]: https://gitlab.com/pboling/require_bench/-/tree/main
36
+ [🏘chat]: https://matrix.to/#/#pboling_require_bench:gitter.im
37
+ [rubygems-security-guide]: https://guides.rubygems.org/security/#building-gems
38
+ [rubygems]: https://rubygems.org
data/README.md CHANGED
@@ -2,35 +2,80 @@
2
2
 
3
3
  Have a Ruby project that has stopped loading, and you aren't sure where the issue is?
4
4
 
5
- Knowing the last file that was successfully "required" by Ruby can be helpful in diagnosing the issue. This gem will help you find that last required file. It can also help you see where expensive (slow) processing is occurring, by adding `Benchmark.realtime` to every require, and printing the result for every file.
5
+ Knowing the last file that was successfully _required_, or _loaded_ by Ruby can be helpful in diagnosing the issue. This gem will help you find that last required file. It can also help you see where expensive (slow) processing is occurring, by adding `Benchmark.realtime` to every `require` / `load`, and printing the result for every file.
6
+
7
+ As of version 1.0.4 it can also add timeout, rescue, and additional logging to both `require` and `load`.
6
8
 
7
9
  This is an extraction of a debugging tool that I have copy/pasted into many projects over the years, and it is now time to set it free.
8
10
 
11
+ *Note*: This gem will make code load slower than normal, but may end up saving you time by showing you where a problem is.
12
+
9
13
  *Warning*: This gem is for debugging problems. It uses a global **$** variable, which is sad practice. It uses it as a safety semaphore, so I consider it justified. If you can think of a better way to implement the safety semaphore, let me know!
10
14
 
11
- *Caveat*: This gem has no effects unless a particular environment variable is set. It does nothing at all unless it is 'invoked' by detection of the environment variable (`ENV['REQUIRE_BENCH'] == 'true'`). The *Warning* above is mitigated by the gem not having any of its code activated under normal circumstances.
12
-
13
- | Project | RequireBench |
14
- |------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
15
- | gem name | [require_bench](https://rubygems.org/gems/require_bench) |
16
- | license | [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT) |
17
- | download rank | [![Downloads Today](https://img.shields.io/gem/rd/require_bench.svg)](https://github.com/pboling/require_bench) |
18
- | version | [![Version](https://img.shields.io/gem/v/require_bench.svg)](https://rubygems.org/gems/require_bench) |
19
- | dependencies | [![Depfu](https://badges.depfu.com/badges/247bffc753b0cd49d3c08ce03b5c251c/count.svg)](https://depfu.com/github/pboling/require_bench?project_id=5824) |
20
- | continuous integration | [![Build Status](https://travis-ci.org/pboling/require_bench.svg?branch=master)](https://travis-ci.org/pboling/require_bench) |
21
- | test coverage | [![Test Coverage](https://api.codeclimate.com/v1/badges/18523205c207a2b53045/test_coverage)](https://codeclimate.com/github/pboling/require_bench/test_coverage) |
22
- | maintainability | [![Maintainability](https://api.codeclimate.com/v1/badges/18523205c207a2b53045/maintainability)](https://codeclimate.com/github/pboling/require_bench/maintainability) |
23
- | code triage | [![Open Source Helpers](https://www.codetriage.com/pboling/require_bench/badges/users.svg)](https://www.codetriage.com/pboling/require_bench) |
24
- | homepage | [on Github.com][homepage], [on Railsbling.com][blogpage] |
25
- | documentation | [on RDoc.info][documentation] |
26
- | Spread ~♡ⓛⓞⓥⓔ♡~ | [🌏](https://about.me/peter.boling), [👼](https://angel.co/peter-boling), [:shipit:](https://coderwall.com/Peter%20Boling), [![Tweet Peter](https://img.shields.io/twitter/follow/galtzo.svg?style=social&label=Follow)](https://twitter.com/galtzo) |
15
+ *Caveat*: This gem has no effects unless a particular environment variable is set. It does nothing at all unless it is 'invoked' by detection of the environment variable (`ENV['REQUIRE_BENCH'] == 'true'`). The *Warning* above is mitigated by the gem not having any of its code, other than the namespace and version, activated under normal circumstances.
16
+
17
+ | Project | RequireBench |
18
+ |------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
19
+ | gem name | [require_bench](https://rubygems.org/gems/require_bench) |
20
+ | license | [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT) |
21
+ | download rank | [![Downloads Today](https://img.shields.io/gem/rd/require_bench.svg)](https://github.com/pboling/require_bench) |
22
+ | version | [![Version](https://img.shields.io/gem/v/require_bench.svg)](https://rubygems.org/gems/require_bench) |
23
+ | dependencies | [![Depfu](https://badges.depfu.com/badges/247bffc753b0cd49d3c08ce03b5c251c/count.svg)](https://depfu.com/github/pboling/require_bench?project_id=5824) |
24
+ | continuous integration | [![Current][🚎ini-cwfi]][🚎ini-cwf] [![Heads][🖐ini-hwfi]][🖐ini-hwf] [![Style][🧮ini-swfi]][🧮ini-swf] |
25
+ | test coverage | [![Coverage][📗ini-covwfi]][📗ini-covwf] [![Test Coverage](https://api.codeclimate.com/v1/badges/18523205c207a2b53045/test_coverage)](https://codeclimate.com/github/pboling/require_bench/test_coverage) |
26
+ | maintainability | [![Maintainability](https://api.codeclimate.com/v1/badges/18523205c207a2b53045/maintainability)](https://codeclimate.com/github/pboling/require_bench/maintainability) |
27
+ | code triage | [![Open Source Helpers](https://www.codetriage.com/pboling/require_bench/badges/users.svg)](https://www.codetriage.com/pboling/require_bench) |
28
+ | homepage | [on Github.com][homepage], [on Railsbling.com][blogpage] |
29
+ | documentation | [on RDoc.info][documentation] |
30
+ | Support | [Chat on Element / Matrix / Gitter][🏘chat] |
31
+ | Spread ~♡ⓛⓞⓥⓔ♡~ | [🌏](https://about.me/peter.boling), [👼](https://angel.co/peter-boling), [![Liberapay Patrons][⛳liberapay-img]][⛳liberapay] [![Follow Me on LinkedIn][🖇linkedin-img]][🖇linkedin] [![Find Me on WellFound:][✌️wellfound-img]][✌️wellfound] [![My Blog][🚎blog-img]][🚎blog] [![Follow Me on Twitter][🐦twitter-img]][🐦twitter] |
32
+
33
+ [![Support my refugee and open source work @ ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/O5O86SNP4)
34
+
35
+ [⛳liberapay-img]: https://img.shields.io/liberapay/patrons/pboling.svg?logo=liberapay
36
+ [⛳liberapay]: https://liberapay.com/pboling/donate
37
+ [🖇linkedin]: http://www.linkedin.com/in/peterboling
38
+ [🖇linkedin-img]: https://img.shields.io/badge/PeterBoling-blue?style=plastic&logo=linkedin
39
+ [✌️wellfound]: https://angel.co/u/peter-boling
40
+ [✌️wellfound-img]: https://img.shields.io/badge/peter--boling-orange?style=plastic&logo=angellist
41
+ [🐦twitter]: http://twitter.com/intent/user?screen_name=galtzo
42
+ [🐦twitter-img]: https://img.shields.io/twitter/follow/galtzo.svg?style=social&label=Follow%20@galtzo
43
+ [🚎blog]: http://www.railsbling.com/tags/oauth2/
44
+ [🚎blog-img]: https://img.shields.io/badge/blog-railsbling-brightgreen.svg?style=flat
45
+ [my🧪lab]: https://gitlab.com/pboling
46
+ [my🧊berg]: https://codeberg.org/pboling
47
+ [my🛖hut]: https://sr.ht/~galtzo/
48
+
49
+ <!-- columnar badge #s for Project Health table:
50
+ ⛳️
51
+ 🖇
52
+ 🏘
53
+ 🚎
54
+ 🖐
55
+ 🧮
56
+ 📗
57
+ 🚀
58
+ 💄
59
+ 👽
60
+ -->
61
+
62
+ [🚎ini-cwf]: https://github.com/pboling/require_bench/actions/workflows/current.yml
63
+ [🚎ini-cwfi]: https://github.com/pboling/require_bench/actions/workflows/current.yml/badge.svg
64
+ [🖐ini-hwf]: https://github.com/pboling/require_bench/actions/workflows/heads.yml
65
+ [🖐ini-hwfi]: https://github.com/pboling/require_bench/actions/workflows/heads.yml/badge.svg
66
+ [🧮ini-swf]: https://github.com/pboling/require_bench/actions/workflows/style.yml
67
+ [🧮ini-swfi]: https://github.com/pboling/require_bench/actions/workflows/style.yml/badge.svg
68
+ [📗ini-covwf]: https://github.com/pboling/require_bench/actions/workflows/coverage.yml
69
+ [📗ini-covwfi]: https://github.com/pboling/require_bench/actions/workflows/coverage.yml/badge.svg
70
+
71
+ [🏘chat]: https://matrix.to/#/#pboling_require_bench:gitter.im
27
72
 
28
73
  ## Installation
29
74
 
30
75
  Add this line to your application's Gemfile:
31
76
 
32
77
  ```ruby
33
- gem 'require_bench'
78
+ gem "require_bench"
34
79
  ```
35
80
 
36
81
  And then execute:
@@ -46,7 +91,7 @@ Or install it yourself as:
46
91
  Require the library where it will be loaded prior to any other requires you want to benchmark.
47
92
 
48
93
  ```ruby
49
- require 'require_bench'
94
+ require "require_bench"
50
95
  ```
51
96
 
52
97
  By default this gem does **nothing**, hacks **nothing**, and has **zero** effects.
@@ -56,7 +101,7 @@ By default this gem does **nothing**, hacks **nothing**, and has **zero** effect
56
101
  Add an environment variable, however you normally do such things, so that in Ruby:
57
102
 
58
103
  ```ruby
59
- ENV['REQUIRE_BENCH'] == 'true'
104
+ ENV["REQUIRE_BENCH"] == "true"
60
105
  ```
61
106
 
62
107
  Any value other than `'true'` means RequireBench is still turned off.
@@ -68,8 +113,8 @@ Any value other than `'true'` means RequireBench is still turned off.
68
113
  Require in Rakefile:
69
114
 
70
115
  ```ruby
71
- require 'bundler/setup'
72
- require 'require_bench/tasks' # Near the top, just below require 'bundler/setup'!
116
+ require "bundler/setup"
117
+ require "require_bench/tasks" # Near the top, just below require 'bundler/setup'!
73
118
  ```
74
119
 
75
120
  #### For Rails
@@ -77,33 +122,33 @@ Require in Rakefile:
77
122
  Require in Rakefile:
78
123
 
79
124
  ```ruby
80
- require_relative 'config/application'
81
- require 'require_bench/tasks' # Near the top, just below require_relative 'config/application'!
125
+ require_relative "config/application"
126
+ require "require_bench/tasks" # Near the top, just below require_relative 'config/application'!
82
127
  ```
83
128
 
84
- #### Output
129
+ #### Example
85
130
 
86
131
  When running from command line, you will see output as the Rails app boots.
87
132
  ```bash
88
133
  $ REQUIRE_BENCH=true bundle exec rake require_bench:hello
89
- [RequireBench] 12.179703 /path/to/my_app/config/application
90
- [RequireBench] 0.001726 resque/tasks
91
- [RequireBench] 0.000917 resque/scheduler/tasks
92
- [RequireBench] 0.000011 rake
93
- [RequireBench] 0.000014 active_record
94
- [RequireBench] 0.008673 sprockets/rails/task
95
- [RequireBench] 0.000012 dynamoid
96
- [RequireBench] 0.000004 dynamoid/tasks/database
97
- [RequireBench] 0.000012 raven/integrations/tasks
98
- [RequireBench] 0.003107 rspec/core/rake_task
99
- [RequireBench] 0.000017 csv
100
- [RequireBench] 0.000012 resque/tasks
101
- [RequireBench] 0.000007 resque/scheduler/tasks
102
- [RequireBench] 0.064950 rails/tasks
103
- [RequireBench] 0.003305 rake/testtask
104
- [RequireBench] 0.001886 rubocop/rake_task
105
- [RequireBench] 0.000012 hubspot-ruby
106
- [RequireBench] 2.291259 /path/to/my_app/config/environment.rb
134
+ [RequireBench-r] 12.179703 /path/to/my_app/config/application
135
+ [RequireBench-r] 0.001726 resque/tasks
136
+ [RequireBench-r] 0.000917 resque/scheduler/tasks
137
+ [RequireBench-r] 0.000011 rake
138
+ [RequireBench-r] 0.000014 active_record
139
+ [RequireBench-r] 0.008673 sprockets/rails/task
140
+ [RequireBench-r] 0.000012 dynamoid
141
+ [RequireBench-r] 0.000004 dynamoid/tasks/database
142
+ [RequireBench-r] 0.000012 raven/integrations/tasks
143
+ [RequireBench-r] 0.003107 rspec/core/rake_task
144
+ [RequireBench-r] 0.000017 csv
145
+ [RequireBench-r] 0.000012 resque/tasks
146
+ [RequireBench-r] 0.000007 resque/scheduler/tasks
147
+ [RequireBench-r] 0.064950 rails/tasks
148
+ [RequireBench-r] 0.003305 rake/testtask
149
+ [RequireBench-r] 0.001886 rubocop/rake_task
150
+ [RequireBench-r] 0.000012 hubspot-ruby
151
+ [RequireBench-r] 2.291259 /path/to/my_app/config/environment.rb
107
152
 
108
153
  [RequireBench] Slowest Loads by Library, in order
109
154
  1. 11.914224 /path/to/my_app/config/application
@@ -136,9 +181,9 @@ export REQUIRE_BENCH_SKIP_PATTERN=activesupport,rspec
136
181
  * a string, to be split by pipe (`|`), then joined by pipe (`|`) with `Regexp.union`
137
182
 
138
183
  ```ruby
139
- ENV['REQUIRE_BENCH_SKIP_PATTERN'] = 'activesupport,rspec'
184
+ ENV["REQUIRE_BENCH_SKIP_PATTERN"] = "activesupport,rspec"
140
185
  # or
141
- ENV['REQUIRE_BENCH_SKIP_PATTERN'] = 'activesupport|rspec'
186
+ ENV["REQUIRE_BENCH_SKIP_PATTERN"] = "activesupport|rspec"
142
187
  ```
143
188
 
144
189
  Any file being required that matches the pattern will use the standard, rather than the benchmarked, require.
@@ -147,12 +192,36 @@ Any file being required that matches the pattern will use the standard, rather t
147
192
 
148
193
  Fully qualified paths, or any portion thereof, are fine, because the strings are always Regexp escaped.
149
194
 
195
+ ### Other ENV control variables
196
+
197
+ - wrap/log load in addition to require
198
+ - `ENV['REQUIRE_BENCH_TRACKED_METHODS']`
199
+ - rescue errors
200
+ - `ENV['REQUIRE_BENCH_RESCUED_CLASSES']`
201
+ - log start
202
+ - `ENV['REQUIRE_BENCH_LOG_START']`
203
+ - load/require timeout
204
+ - `ENV['REQUIRE_BENCH_TIMEOUT']`
205
+ - A pattern for paths that should be included/tracked
206
+ - `ENV['REQUIRE_BENCH_INCLUDE_PATTERN']`
207
+ - Should grouping be by basename or by path?
208
+ - `ENV['REQUIRE_BENCH_GROUP_PRECEDENCE']`
209
+ - Prefer to not group some pattern (i.e. some libraries)
210
+ - `ENV['REQUIRE_BENCH_NO_GROUP_PATTERN']`
211
+
212
+ If you'd like to help document any of these further, PRs are appreciated!
213
+
150
214
  ## Development
151
215
 
152
216
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
153
217
 
154
218
  To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
155
219
 
220
+ To get code coverage:
221
+ ```shell
222
+ CI_CODECOV=true COVER_ALL=false bundle exec rspec
223
+ ```
224
+
156
225
  ## Contributing
157
226
 
158
227
  Bug reports and pull requests are welcome on GitHub at https://github.com/pboling/require_bench.
@@ -176,14 +245,14 @@ dependency on this gem using the [Pessimistic Version Constraint][pvc] with two
176
245
  For example:
177
246
 
178
247
  ```ruby
179
- spec.add_dependency 'require_bench', '~> 0.0'
248
+ spec.add_dependency("require_bench", "~> 0.0")
180
249
  ```
181
250
 
182
251
  ## License
183
252
 
184
253
  * Copyright (c) 2018-2020, 2023 [Peter H. Boling][peterboling] of [Rails Bling][railsbling]
185
254
 
186
- [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT)
255
+ [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT)
187
256
 
188
257
  [license]: LICENSE
189
258
  [semver]: http://semver.org/
data/SECURITY.md ADDED
@@ -0,0 +1,13 @@
1
+ # Security Policy
2
+
3
+ ## Supported Versions
4
+
5
+ | Version | Supported |
6
+ |-----------|-----------|
7
+ | 1.latest | ✅ |
8
+
9
+ ## Reporting a Vulnerability
10
+
11
+ Peter Boling is the primary maintainer of this gem. Please find a way
12
+ to [contact him directly](https://railsbling.com/contact) to report the issue. Include as much relevant information as
13
+ possible.
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # std libs
4
- require 'forwardable'
4
+ require "forwardable"
5
5
 
6
6
  # third party libs
7
7
  # You will need to have gem "colorize" installed!
@@ -19,19 +19,21 @@ class Printer
19
19
 
20
20
  # Log statement when a file starts loading
21
21
  def out_start(file, type)
22
- printf "🚥 #{ColorizedString["[RequireBench-#{type}]"].colorize(first)} 📖 %s 🚥\n", file
22
+ printf("🚥 #{ColorizedString["[RequireBench-#{type}]"].colorize(first)} 📖 %s 🚥\n", file)
23
23
  end
24
24
 
25
25
  # Log statement when a file completed loading
26
26
  def out_consume(seconds, file, type)
27
- printf "🚥 #{ColorizedString["[RequireBench-#{type}]"].colorize(first)} ☑️ %10f %s 🚥\n", seconds, file
27
+ printf("🚥 #{ColorizedString["[RequireBench-#{type}]"].colorize(first)} ☑️ %10f %s 🚥\n", seconds, file)
28
28
  rotate!
29
29
  end
30
30
 
31
31
  # Log statement when a file raises an error while loading
32
32
  def out_err(error, file, type)
33
- printf "🚥 #{ColorizedString["[RequireBench-#{type}]"].colorize(first)} ❌ '#{error.class}: #{error.message}' loading %s 🚥\n#{error.backtrace.join("\n")}",
34
- file
33
+ printf(
34
+ "🚥 #{ColorizedString["[RequireBench-#{type}]"].colorize(first)} ❌ '#{error.class}: #{error.message}' loading %s 🚥\n#{error.backtrace.join("\n")}",
35
+ file,
36
+ )
35
37
  rotate!
36
38
  end
37
39
  end
@@ -3,17 +3,19 @@
3
3
  class Printer
4
4
  # Log statement when a file starts loading
5
5
  def out_start(file, type)
6
- printf "🚥 [RequireBench-#{type}] 📖 %s 🚥\n", file
6
+ printf("🚥 [RequireBench-#{type}] 📖 %s 🚥\n", file)
7
7
  end
8
8
 
9
9
  # Log statement when a file completed loading
10
10
  def out_consume(seconds, file, type)
11
- printf "🚥 [RequireBench-#{type}] ☑️ %10f %s 🚥\n", seconds, file
11
+ printf("🚥 [RequireBench-#{type}] ☑️ %10f %s 🚥\n", seconds, file)
12
12
  end
13
13
 
14
14
  # Log statement when a file raises an error while loading
15
15
  def out_err(error, file, type)
16
- printf "🚥 [RequireBench-#{type}] ❌ '#{error.class}: #{error.message}' loading %s 🚥\n#{error.backtrace.join("\n")}",
17
- file
16
+ printf(
17
+ "🚥 [RequireBench-#{type}] ❌ '#{error.class}: #{error.message}' loading %s 🚥\n#{error.backtrace.join("\n")}",
18
+ file,
19
+ )
18
20
  end
19
21
  end
@@ -5,12 +5,12 @@
5
5
  # require 'require_bench/tasks'
6
6
  # will give you the require_bench tasks.
7
7
  # Do it as early as possible during bootstrapping!
8
- require 'require_bench'
8
+ require "require_bench"
9
9
 
10
10
  namespace :require_bench do
11
- desc 'Print timings while booting app, determine slowest loading files'
11
+ desc "Print timings while booting app, determine slowest loading files"
12
12
  task hello: :environment do
13
- tot = 0.0
13
+ tot = 0.0
14
14
  vals = RequireBench::TIMINGS.to_a
15
15
  vals.sort_by! { |a| a[1] }.reverse!
16
16
  if !vals.empty?
@@ -19,8 +19,8 @@ namespace :require_bench do
19
19
  tot += a[1]
20
20
  printf("%2d. %10f %s\n", index + 1, a[1], a[0])
21
21
  end
22
- puts '=========='
23
- printf("%10f %s\n", tot, 'TOTAL')
22
+ puts "=========="
23
+ printf("%10f %s\n", tot, "TOTAL")
24
24
  else
25
25
  puts %(
26
26
  require_bench did not track any requires, because it was required too late, of the configuration excluded everything.
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RequireBench
4
- VERSION = '1.0.4-alpha.7'
4
+ module Version
5
+ VERSION = "1.0.4"
6
+ end
5
7
  end
data/lib/require_bench.rb CHANGED
@@ -8,8 +8,11 @@ if REQUIRE_BENCH_ENABLED
8
8
  require 'timeout'
9
9
  end
10
10
 
11
+ # external libs
12
+ require "version_gem"
13
+
11
14
  # This Gem
12
- require 'require_bench/version'
15
+ require_relative 'require_bench/version'
13
16
 
14
17
  # Namespace for this gem
15
18
  module RequireBench
@@ -180,3 +183,7 @@ if REQUIRE_BENCH_ENABLED
180
183
  end
181
184
  end
182
185
  end
186
+
187
+ RequireBench::Version.class_eval do
188
+ extend VersionGem::Basic
189
+ end
data.tar.gz.sig ADDED
Binary file
metadata CHANGED
@@ -1,29 +1,125 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: require_bench
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4.pre.alpha.7
4
+ version: 1.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Boling
8
8
  autorequire:
9
9
  bindir: exe
10
- cert_chain: []
11
- date: 2023-10-09 00:00:00.000000000 Z
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIEgDCCAuigAwIBAgIBATANBgkqhkiG9w0BAQsFADBDMRUwEwYDVQQDDAxwZXRl
14
+ ci5ib2xpbmcxFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmSJomT8ixkARkW
15
+ A2NvbTAeFw0yMzA5MjAxNzMwMjhaFw0yNDA5MTkxNzMwMjhaMEMxFTATBgNVBAMM
16
+ DHBldGVyLmJvbGluZzEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPy
17
+ LGQBGRYDY29tMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA+a9UvHo3
18
+ 84k96WgU5Kk5HB+cLZs/modjorsTfqY67MJF5nNvAoqcKTUBW4uG+Zpfnm3jaDO5
19
+ GxhJEIZWfndYzycHT2KMVQ1uTP82ba8ZaKrPlPIafkbui3mdds47qsmqHiblKERg
20
+ U532lkwfqHDlJwE7OBZQ59EwWWLynlT/yAUHpOBbqIuHKUxdpmBI+sIjrZcD1e05
21
+ WmjkO6fwIdC5oM757aoPxIgXD587VOViH11Vkm2doskj4T8yONtwVHlcrrhJ9Bzd
22
+ /zdp6vEn7GZQrABvpOlqwWxQ72ZnFhJe/RJZf6CXOPOh69Ai0QKYl2a1sYuCJKS3
23
+ nsBnxXJINEEznjR7rZjNUmYD+CZqfjzgPqedRxTlASe7iA4w7xZOqMDzcuhNwcUQ
24
+ tMEH6BTktxKP3jXZPXRfHCf6s+HRVb6vezAonTBVyydf5Xp5VwWkd6cwm+2BzHl5
25
+ 7kc/3lLxKMcsyEUprAsk8LdHohwZdC267l+RS++AP6Cz6x+nB3oGob19AgMBAAGj
26
+ fzB9MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBQCSSas60GqqMjt
27
+ xR7LoY1gucEvtzAhBgNVHREEGjAYgRZwZXRlci5ib2xpbmdAZ21haWwuY29tMCEG
28
+ A1UdEgQaMBiBFnBldGVyLmJvbGluZ0BnbWFpbC5jb20wDQYJKoZIhvcNAQELBQAD
29
+ ggGBAMl9ifcw5p+PdvB7dCPoNKoVdp/2LbC9ztETHuYL2gUMJB6UoS3o9c/piSuR
30
+ V3ZMQaijmNu6ms1bWAtJ66LjmYrVflJtf9yp31Kierr9LpisMSUx2qbMOHGa8d2Z
31
+ vCUWPF8E9Cg0mP3GAyZ6qql8jDh/anUKeksPXqJvNxNPDu2DVYsa/IWdl96whzS4
32
+ Bl7SwB1E7agps40UcshCSKaVDOU0M+XN6SrnJMElnBic+KSAkBkVFbzS0BE4ODZM
33
+ BgE6nYzQ05qhuvbE+oGdACTlemNtDDWCh0uw+7x0q2PocGIDU5zsPn/WNTkCXPmB
34
+ CHGvqDNWq4M7ncTKAaS2XExgyb7uPdq9fKiOW8nmH+zCiGzJXzBWwZlKf7L4Ht9E
35
+ a3f0e5C+zvee9Z5Ng9ciyfav9/fcXgYt5MjoBv27THr5XfBhgOCIHSYW2tqJmWKi
36
+ KuxrfYrN+9HvMdm+nZ6TypmKftHY3Gj+/uu+g8Icm/zrvTWAEE0mcJOkfrIoNPJb
37
+ pF8dMA==
38
+ -----END CERTIFICATE-----
39
+ date: 2023-10-10 00:00:00.000000000 Z
12
40
  dependencies:
13
41
  - !ruby/object:Gem::Dependency
14
- name: byebug
42
+ name: version_gem
15
43
  requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: 1.1.3
48
+ - - "<"
49
+ - !ruby/object:Gem::Version
50
+ version: '4'
51
+ type: :runtime
52
+ prerelease: false
53
+ version_requirements: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ version: 1.1.3
58
+ - - "<"
59
+ - !ruby/object:Gem::Version
60
+ version: '4'
61
+ - !ruby/object:Gem::Dependency
62
+ name: rbs
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '3.1'
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '3.1'
75
+ - !ruby/object:Gem::Dependency
76
+ name: redcarpet
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '3.6'
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '3.6'
89
+ - !ruby/object:Gem::Dependency
90
+ name: yard
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '0.9'
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ version: 0.9.34
99
+ type: :development
100
+ prerelease: false
101
+ version_requirements: !ruby/object:Gem::Requirement
16
102
  requirements:
17
103
  - - "~>"
18
104
  - !ruby/object:Gem::Version
19
- version: '11'
105
+ version: '0.9'
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ version: 0.9.34
109
+ - !ruby/object:Gem::Dependency
110
+ name: yard-junk
111
+ requirement: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - "~>"
114
+ - !ruby/object:Gem::Version
115
+ version: '0.0'
20
116
  type: :development
21
117
  prerelease: false
22
118
  version_requirements: !ruby/object:Gem::Requirement
23
119
  requirements:
24
120
  - - "~>"
25
121
  - !ruby/object:Gem::Version
26
- version: '11'
122
+ version: '0.0'
27
123
  - !ruby/object:Gem::Dependency
28
124
  name: colorize
29
125
  requirement: !ruby/object:Gem::Requirement
@@ -120,20 +216,20 @@ dependencies:
120
216
  requirements:
121
217
  - - "~>"
122
218
  - !ruby/object:Gem::Version
123
- version: '2.1'
219
+ version: '8.1'
124
220
  - - ">="
125
221
  - !ruby/object:Gem::Version
126
- version: 2.1.1
222
+ version: 8.1.1
127
223
  type: :development
128
224
  prerelease: false
129
225
  version_requirements: !ruby/object:Gem::Requirement
130
226
  requirements:
131
227
  - - "~>"
132
228
  - !ruby/object:Gem::Version
133
- version: '2.1'
229
+ version: '8.1'
134
230
  - - ">="
135
231
  - !ruby/object:Gem::Version
136
- version: 2.1.1
232
+ version: 8.1.1
137
233
  - !ruby/object:Gem::Dependency
138
234
  name: rubocop-packaging
139
235
  requirement: !ruby/object:Gem::Requirement
@@ -175,25 +271,36 @@ dependencies:
175
271
  - !ruby/object:Gem::Version
176
272
  version: 1.0.3
177
273
  description: Ruby app loading slowly, or never? Discover bootstrapping issues in Ruby
178
- by benchmarking "Kernel.require"
274
+ by logging/benchmarking/timing-out/rescuing 'Kernel.require' & 'load'
179
275
  email:
180
276
  - peter.boling@gmail.com
181
277
  executables: []
182
278
  extensions: []
183
279
  extra_rdoc_files: []
184
280
  files:
281
+ - CHANGELOG.md
185
282
  - CODE_OF_CONDUCT.md
186
- - LICENSE
283
+ - CONTRIBUTING.md
284
+ - LICENSE.txt
187
285
  - README.md
286
+ - SECURITY.md
188
287
  - lib/require_bench.rb
189
288
  - lib/require_bench/color_printer.rb
190
289
  - lib/require_bench/printer.rb
191
290
  - lib/require_bench/tasks.rb
192
291
  - lib/require_bench/version.rb
193
- homepage: https://github.com/pboling/require_bench
292
+ homepage: https://gitlab.com/pboling/require_bench
194
293
  licenses:
195
294
  - MIT
196
- metadata: {}
295
+ metadata:
296
+ homepage_uri: https://gitlab.com/pboling/require_bench
297
+ source_code_uri: https://gitlab.com/pboling/require_bench/-/tree/v1.0.4
298
+ changelog_uri: https://gitlab.com/pboling/require_bench/-/blob/v1.0.4/CHANGELOG.md
299
+ bug_tracker_uri: https://gitlab.com/pboling/require_bench/-/issues
300
+ documentation_uri: https://www.rubydoc.info/gems/require_bench/1.0.4
301
+ wiki_uri: https://gitlab.com/pboling/require_bench/-/wikis/home
302
+ funding_uri: https://liberapay.com/pboling
303
+ rubygems_mfa_required: 'true'
197
304
  post_install_message:
198
305
  rdoc_options: []
199
306
  require_paths:
@@ -202,15 +309,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
202
309
  requirements:
203
310
  - - ">="
204
311
  - !ruby/object:Gem::Version
205
- version: '0'
312
+ version: 2.2.0
206
313
  required_rubygems_version: !ruby/object:Gem::Requirement
207
314
  requirements:
208
- - - ">"
315
+ - - ">="
209
316
  - !ruby/object:Gem::Version
210
- version: 1.3.1
317
+ version: '0'
211
318
  requirements: []
212
319
  rubygems_version: 3.4.20
213
320
  signing_key:
214
321
  specification_version: 4
215
- summary: Discover bootstrapping issues in Ruby by benchmarking "Kernel.require"
322
+ summary: Discover bootstrapping issues in Ruby by benchmarking 'Kernel.require' &
323
+ 'load'
216
324
  test_files: []
metadata.gz.sig ADDED
Binary file
File without changes