gem_bench 2.0.4 → 2.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +3 -1
- data/CHANGELOG.md +16 -3
- data/lib/gem_bench/jersey.rb +4 -4
- data/lib/gem_bench/team.rb +20 -11
- data/lib/gem_bench/version.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +5 -19
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 26701ac598126aaa38d326332e6f826c62bc7e69b6ac1e34fde7f1568269143c
|
4
|
+
data.tar.gz: e75766ba0541b15924fce9a1703632a115f09b4226bc90970c98ff49e2bd423a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d505382f0219e9ddb9a80418529ecdd35afa34f4f04be0d548bd07876f7b8f3b95ff0c71941e4880d69d5cb6e4f9550db25a0cf43723a7fd720620b580e38c90
|
7
|
+
data.tar.gz: 808ca57545b51ec424234c50714e82e528aa9897e432edf8b40074488143fd0730879180e26d3cfdaa06992393e61bc20e8a10578bbed38ec9dab34f281af7f0
|
checksums.yaml.gz.sig
CHANGED
@@ -1 +1,3 @@
|
|
1
|
-
|
1
|
+
2?5��?�n�g�`�Q�B��T��W�rl:��5��q�o�(���P*z��1Y���@u%���B��(��?��q��W��3�/�uh�E�#��T�_��\�h����Kw5�%i�[�@��ڡ��,q*���j��េ��i��4�?��Gq�<Z��d$���>��hi��{:
|
2
|
+
A]��a�v�YȴCp�2[���t�E��ϱ�kE�����E�+C�ݒ��<w�(=L���s�u�݄�)�#扸�$�Z��FDp3�Aʢ�3V�T�
|
3
|
+
�gu��/�s6�aa�����_g
|
data/CHANGELOG.md
CHANGED
@@ -11,15 +11,28 @@ and this project adheres to [Semantic Versioning v2](https://semver.org/spec/v2.
|
|
11
11
|
### Fixed
|
12
12
|
### Removed
|
13
13
|
|
14
|
+
## [2.0.5] SEP.21.2024
|
15
|
+
- COVERAGE: 99.80% -- 495/496 lines in 9 files
|
16
|
+
- BRANCH COVERAGE: 94.35% -- 167/177 branches in 9 files
|
17
|
+
- 58.87% documented
|
18
|
+
### Added
|
19
|
+
- More specs
|
20
|
+
- More documentation
|
21
|
+
- 0.2% remaining to 100% test coverage (line)
|
22
|
+
### Fixed
|
23
|
+
- Documentation errors
|
24
|
+
- Minor improvements to logic and performance (a bit more idiomatic Ruby)
|
25
|
+
|
14
26
|
## [2.0.4] SEP.20.2024
|
15
27
|
- COVERAGE: 98.19% -- 488/497 lines in 9 files
|
16
28
|
- BRANCH COVERAGE: 88.95% -- 161/181 branches in 9 files
|
17
29
|
- 58.06% documented
|
18
30
|
### Added
|
19
|
-
- More
|
20
|
-
-
|
21
|
-
- Thread
|
31
|
+
- More documentation
|
32
|
+
- 1.81% remaining to 100% test coverage (line)
|
33
|
+
- Thread safety (removed `GemBench.roster`, which was effectively never used internally)
|
22
34
|
- Performance improvements
|
35
|
+
- Support for specifying arbitrary `:gemfile_path` in most class initializers
|
23
36
|
### Fixed
|
24
37
|
- Can now handle more variations of Ruby syntax in the Gemfile analyzer
|
25
38
|
- `require_relative` > `require` for internal files (except for `spec` => `lib`)
|
data/lib/gem_bench/jersey.rb
CHANGED
@@ -136,10 +136,10 @@ module GemBench
|
|
136
136
|
end
|
137
137
|
files.each do |filepath|
|
138
138
|
# But files required here may not load their own internal files properly if they are still using `require`.
|
139
|
-
# Since Ruby
|
140
|
-
# and require for external files and dependencies.
|
141
|
-
# Ref: https://github.com/
|
142
|
-
# We *can* use `require` *here*, because filepath here is an absolute paths
|
139
|
+
# Since Ruby 1.9.2, best practice for ruby libraries is to use require_relative for internal files,
|
140
|
+
# and require for external files and dependencies, generally, and oversimplified.
|
141
|
+
# Ref: https://github.com/rubocop/rubocop/issues/8748#issuecomment-2363327346
|
142
|
+
# However, We *can* use `require` *here*, because filepath here is an absolute paths
|
143
143
|
require filepath
|
144
144
|
end
|
145
145
|
|
data/lib/gem_bench/team.rb
CHANGED
@@ -6,6 +6,13 @@ module GemBench
|
|
6
6
|
# - if you are in a rails console, and want to evaluate the Gemfile of the Rails app, that's great!
|
7
7
|
# - if you are in a context with no Gemfile loaded, or a different Gemfile loaded than the one you want to evaluate,
|
8
8
|
# this class may not give sensible results. This is because it checks loaded gems via RubyGems and Bundler.
|
9
|
+
#
|
10
|
+
# Terminology:
|
11
|
+
#
|
12
|
+
# starter: a gem that needs to be loaded when bundler normally loads gems
|
13
|
+
#
|
14
|
+
# bencher: a gem that can, or should, have require: false to delay loading until after bootstrap
|
15
|
+
#
|
9
16
|
class Team
|
10
17
|
EXCLUDE = %w[
|
11
18
|
bundler
|
@@ -53,8 +60,8 @@ module GemBench
|
|
53
60
|
)
|
54
61
|
@exclude_file_pattern_regex_proc = options[:exclude_file_pattern_regex_proc].respond_to?(:call) ? options[:exclude_file_pattern_regex_proc] : GemBench::EXCLUDE_FILE_PATTERN_REGEX_PROC
|
55
62
|
# Among the loaded gems there may be some that did not need to be.
|
56
|
-
|
57
|
-
exclusions = " + #{excluded.length} loaded gems which GemBench is configured to ignore.\n" if
|
63
|
+
exclude!
|
64
|
+
exclusions = " + #{excluded.length} loaded gems which GemBench is configured to ignore.\n" if excluded.any?
|
58
65
|
@starters = []
|
59
66
|
@benchers = []
|
60
67
|
@current_gemfile_suggestions = []
|
@@ -70,11 +77,11 @@ module GemBench
|
|
70
77
|
false
|
71
78
|
end
|
72
79
|
puts "[GemBench] Will search for gems in #{gem_paths.inspect}\n#{if benching?
|
73
|
-
|
80
|
+
check_gemfile? ? "[GemBench] Will check Gemfile at #{gemfile_path}.\n" : "[GemBench] No Gemfile found.\n"
|
74
81
|
else
|
75
82
|
""
|
76
83
|
end}#{bad_ideas ? "[GemBench] Will show bad ideas. Be Careful.\n" : ""}[GemBench] Detected #{all.length} loaded gems#{exclusions}"
|
77
|
-
compare_gemfile if benching? &&
|
84
|
+
compare_gemfile if benching? && check_gemfile?
|
78
85
|
self.print if verbose
|
79
86
|
end
|
80
87
|
|
@@ -82,6 +89,7 @@ module GemBench
|
|
82
89
|
starters.map { |starter| starter.to_s(format) }
|
83
90
|
end
|
84
91
|
|
92
|
+
# @return void
|
85
93
|
def print
|
86
94
|
string = ""
|
87
95
|
if all.empty?
|
@@ -92,7 +100,7 @@ module GemBench
|
|
92
100
|
else
|
93
101
|
"[GemBench] Found no gems containing #{look_for_regex} in Ruby code.\n"
|
94
102
|
end
|
95
|
-
|
103
|
+
else
|
96
104
|
string << "\n#{GemBench::USAGE}" unless check_gemfile?
|
97
105
|
string << if benching?
|
98
106
|
"[GemBench] We found a Rails::Railtie or Rails::Engine in the following files. However, it is possible that there are false positives, so you may want to verify that this is the case.\n\n"
|
@@ -116,18 +124,15 @@ module GemBench
|
|
116
124
|
starters.each_with_index do |starter, index|
|
117
125
|
string << "#{starter.info(index + 1)}\n"
|
118
126
|
end
|
119
|
-
if extra_verbose? && !benching? && benchers.
|
127
|
+
if extra_verbose? && !benching? && benchers.any?
|
120
128
|
string << "[GemBench] #{benchers.length} out of #{all.length} evaluated gems did not contain #{look_for_regex}. They are:\n"
|
121
129
|
benchers.each_with_index do |bencher, index|
|
122
130
|
string << "#{bencher.info(index + 1)}\n"
|
123
131
|
end
|
124
132
|
end
|
125
|
-
else
|
126
|
-
string << "[GemBench] Congrats! All gems appear clean.\n"
|
127
|
-
string << "\n#{GemBench::USAGE}" unless check_gemfile?
|
128
133
|
end
|
129
134
|
if check_gemfile? && benching?
|
130
|
-
if current_gemfile_suggestions.
|
135
|
+
if current_gemfile_suggestions.any?
|
131
136
|
string << "[GemBench] Evaluated #{all.length} gems and Gemfile at #{gemfile_path}.\n[GemBench] Here are #{current_gemfile_suggestions.length} suggestions for improvement:\n"
|
132
137
|
current_gemfile_suggestions.each_with_index do |player, index|
|
133
138
|
string << "#{player.suggest(index + 1)}\n"
|
@@ -159,7 +164,7 @@ module GemBench
|
|
159
164
|
|
160
165
|
def prepare_bad_ideas
|
161
166
|
string = ""
|
162
|
-
if benchers.
|
167
|
+
if benchers.any?
|
163
168
|
gemfile_instruction = check_gemfile? ? "" : "To safely evaluate a Gemfile:\n\t1. Make sure you are in the root of a project with a Gemfile\n\t2. Make sure the gem is actually a dependency in the Gemfile\n"
|
164
169
|
string << "[GemBench] Evaluated #{all.length} loaded gems and found #{benchers.length} which may be able to skip boot loading (require: false).\n*** => WARNING <= ***: Be careful adding non-primary dependencies to your Gemfile as it is generally a bad idea.\n#{gemfile_instruction}"
|
165
170
|
benchers.each_with_index do |player, index|
|
@@ -223,6 +228,10 @@ module GemBench
|
|
223
228
|
|
224
229
|
private
|
225
230
|
|
231
|
+
def exclude!
|
232
|
+
self.excluded, self.all = loaded_gems.partition { |x| EXCLUDE.include?(x[0]) }
|
233
|
+
end
|
234
|
+
|
226
235
|
def extra_verbose?
|
227
236
|
verbose == "extra"
|
228
237
|
end
|
data/lib/gem_bench/version.rb
CHANGED
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gem_bench
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Boling
|
@@ -36,7 +36,7 @@ cert_chain:
|
|
36
36
|
I5o+DRfXQHqKucx1ldFHvI2rE/kSCWqGTHN2eyu1sqCPeOoIMxrltJhaejKPkxqj
|
37
37
|
zaF9Og==
|
38
38
|
-----END CERTIFICATE-----
|
39
|
-
date: 2024-09-
|
39
|
+
date: 2024-09-22 00:00:00.000000000 Z
|
40
40
|
dependencies:
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: bundler
|
@@ -126,20 +126,6 @@ dependencies:
|
|
126
126
|
- - ">="
|
127
127
|
- !ruby/object:Gem::Version
|
128
128
|
version: 1.0.2
|
129
|
-
- !ruby/object:Gem::Dependency
|
130
|
-
name: awesome_print
|
131
|
-
requirement: !ruby/object:Gem::Requirement
|
132
|
-
requirements:
|
133
|
-
- - "~>"
|
134
|
-
- !ruby/object:Gem::Version
|
135
|
-
version: '1.9'
|
136
|
-
type: :development
|
137
|
-
prerelease: false
|
138
|
-
version_requirements: !ruby/object:Gem::Requirement
|
139
|
-
requirements:
|
140
|
-
- - "~>"
|
141
|
-
- !ruby/object:Gem::Version
|
142
|
-
version: '1.9'
|
143
129
|
- !ruby/object:Gem::Dependency
|
144
130
|
name: method_source
|
145
131
|
requirement: !ruby/object:Gem::Requirement
|
@@ -296,10 +282,10 @@ licenses:
|
|
296
282
|
- MIT
|
297
283
|
metadata:
|
298
284
|
homepage_uri: https://railsbling.com/tags/gem_bench/
|
299
|
-
source_code_uri: http://github.com/pboling/gem_bench/tree/v2.0.
|
300
|
-
changelog_uri: http://github.com/pboling/gem_bench/blob/v2.0.
|
285
|
+
source_code_uri: http://github.com/pboling/gem_bench/tree/v2.0.5
|
286
|
+
changelog_uri: http://github.com/pboling/gem_bench/blob/v2.0.5/CHANGELOG.md
|
301
287
|
bug_tracker_uri: http://github.com/pboling/gem_bench/issues
|
302
|
-
documentation_uri: https://www.rubydoc.info/gems/gem_bench/2.0.
|
288
|
+
documentation_uri: https://www.rubydoc.info/gems/gem_bench/2.0.5
|
303
289
|
wiki_uri: http://github.com/pboling/gem_bench/wiki
|
304
290
|
funding_uri: https://liberapay.com/pboling
|
305
291
|
rubygems_mfa_required: 'true'
|
metadata.gz.sig
CHANGED
Binary file
|