gem_bench 0.0.8 → 1.0.0
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
- data/.byebug_history +44 -0
- data/.gitignore +15 -0
- data/.rspec +2 -0
- data/.travis.yml +5 -0
- data/CHANGELOG +7 -0
- data/Gemfile +6 -0
- data/README.md +83 -205
- data/Rakefile +5 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/gem_bench.gemspec +35 -0
- data/lib/gem_bench/player.rb +57 -20
- data/lib/gem_bench/scout.rb +55 -0
- data/lib/gem_bench/team.rb +74 -50
- data/lib/gem_bench/version.rb +1 -1
- data/lib/gem_bench.rb +13 -9
- metadata +72 -21
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7363995b8c6c16faf3412019c2b07fb9f93386a3
|
4
|
+
data.tar.gz: d8761eae4394fb57c6e93cc31766f7f8025af1cb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c9e236ef841b15ae900db8843fe54ea9595a5a7a967fa7d5b68853eab8dc157f01df83029afb2a69d03a67abcb31770d494e5cba720966bc867cd19e1fe06e67
|
7
|
+
data.tar.gz: 478fec5276dce61c670eafac339b7d421b62e140164b667e2bc4bcea974e0ad2d29d27b01583c46854413c60ea03c84937fa7e7b1a4a604ca53e09b09eca026c
|
data/.byebug_history
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
exit
|
2
|
+
instance.check_gemfile?
|
3
|
+
instance.check_gemfile
|
4
|
+
instance
|
5
|
+
exit
|
6
|
+
next
|
7
|
+
gemfile_lines
|
8
|
+
gemfile_trash
|
9
|
+
next
|
10
|
+
a =~ GemBench::TRASH_REGEX
|
11
|
+
a = "gem \"bundler\" # For specs!\n"
|
12
|
+
all_lines
|
13
|
+
exit
|
14
|
+
scout.gemfile_lines
|
15
|
+
gemfile_lines
|
16
|
+
scout
|
17
|
+
next
|
18
|
+
exit
|
19
|
+
self.gemfile_lines
|
20
|
+
scout
|
21
|
+
gemfile_lines
|
22
|
+
next
|
23
|
+
exit
|
24
|
+
self.scout.gemfile_lines
|
25
|
+
self.gemfile_lines
|
26
|
+
@scout.gemfile_lines
|
27
|
+
@scout
|
28
|
+
@gemfile_lines
|
29
|
+
gemfile_lines
|
30
|
+
Gem.loaded_specs.values
|
31
|
+
next
|
32
|
+
Gem.loaded_specs.values
|
33
|
+
next
|
34
|
+
exit
|
35
|
+
next
|
36
|
+
@loaded_gems
|
37
|
+
loaded_gems
|
38
|
+
next
|
39
|
+
@gemfile_trash, @gemfile_lines = all_lines.partition {|x| x =~ GemBench::TRASH_REGEX}
|
40
|
+
all_lines
|
41
|
+
next
|
42
|
+
file.readlines
|
43
|
+
next
|
44
|
+
gemfile_path
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.travis.yml
ADDED
data/CHANGELOG
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
Version 1.0.0 - FEB.26.2017
|
2
|
+
* New feature: scan all code (except for test/spec/feature code) in all loaded gems for a given regex:
|
3
|
+
- puts GemBench.find(look_for_regex: /HERE BE DRAGONS/).starters.map {|gem| "#{gem.name} has DRAGONS at #{gem.stats}" }.join("\n")
|
4
|
+
* Added basic specs
|
5
|
+
* More Documentation
|
6
|
+
* added back git dependency to gemspec (pulled in latest Gem scaffolding from Bundler :/)
|
7
|
+
|
1
8
|
Version 0.0.8 - JAN.16.2014
|
2
9
|
* Corrected issues with 0.0.7 release.
|
3
10
|
* More Documentation
|
data/Gemfile
ADDED
data/README.md
CHANGED
@@ -1,13 +1,51 @@
|
|
1
|
-
# GemBench
|
1
|
+
# GemBench [](http://inch-ci.org/github/pboling/gem_bench)
|
2
|
+
|
3
|
+
`gem_bench` is the super easy way to trim down app load times by keeping your worst players on the bench.
|
2
4
|
|
3
5
|
Gem: "Put me in coach!"
|
4
6
|
You: ❨╯°□°❩╯︵┻━┻
|
5
7
|
|
6
|
-
|
8
|
+
The new feature for 1.0.0 release allows you to search the Ruby code of all your gems for a specified regex, to find out which gems have wat DRAGONS.
|
9
|
+
|
10
|
+
Gem: "I have no wat DRAGONS!"
|
11
|
+
You: ❨╯°□°❩╯︵┻━┻
|
12
|
+
|
13
|
+
```
|
14
|
+
>> puts GemBench.find(look_for_regex: /wat/).starters.map {|gem| "#{gem.name} has wat DRAGONS at #{gem.stats}" }.join("\n")
|
15
|
+
[GemBench] Will search for gems in ["/Users/pboling/.rvm/gems/ruby-2.4.0@foss/gems", "/Users/pboling/.rvm/gems/ruby-2.4.0@global/gems", "/Users/pboling/.rvm/gems/ruby-2.4.0@foss/bundler/gems"]
|
16
|
+
[GemBench] Detected 11 loaded gems + 2 loaded gems which GemBench is configured to ignore.
|
17
|
+
byebug has wat DRAGONS at [["/Users/pboling/.rvm/gems/ruby-2.4.0@foss/gems/byebug-9.0.6/lib/byebug/commands/frame.rb", 954]]
|
18
|
+
=> nil
|
19
|
+
```
|
20
|
+
|
21
|
+
| Project | GemBench |
|
22
|
+
|------------------------ | ----------------- |
|
23
|
+
| gem name | gem_bench |
|
24
|
+
| license | MIT |
|
25
|
+
| expert support | [](https://www.codementor.io/peterboling?utm_source=github&utm_medium=button&utm_term=peterboling&utm_campaign=github) |
|
26
|
+
| download rank | [](https://rubygems.org/gems/gem_bench) |
|
27
|
+
| version | [](http://badge.fury.io/rb/gem_bench) |
|
28
|
+
| dependencies | [](https://gemnasium.com/pboling/gem_bench) |
|
29
|
+
| code quality | [](https://codeclimate.com/github/pboling/gem_bench) |
|
30
|
+
| inline documenation | [](http://inch-ci.org/github/pboling/gem_bench) |
|
31
|
+
| continuous integration | [](https://travis-ci.org/pboling/gem_bench) |
|
32
|
+
| test coverage | [](https://coveralls.io/r/pboling/gem_bench) |
|
33
|
+
| homepage | [on Github.com][homepage] |
|
34
|
+
| documentation | [on Rdoc.info][documentation] |
|
35
|
+
| live chat | [](https://gitter.im/pboling/gem_bench?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) |
|
36
|
+
| Spread ~♡ⓛⓞⓥⓔ♡~ | [on Coderwall][coderwall] |
|
37
|
+
|
38
|
+
[semver]: http://semver.org/
|
39
|
+
[pvc]: http://docs.rubygems.org/read/chapter/16#page74
|
40
|
+
[railsbling]: http://www.railsbling.com
|
41
|
+
[peterboling]: http://www.peterboling.com
|
42
|
+
[coderwall]: http://coderwall.com/pboling
|
43
|
+
[documentation]: http://rdoc.info/github/pboling/gem_bench/frames
|
44
|
+
[homepage]: https://github.com/pboling/gem_bench
|
7
45
|
|
8
46
|
It is a fact of RubyGems that many of them do not need to be loaded by your app at boot time.
|
9
47
|
It is a fact of Bundler that you don't know which ones need to be 'required' while staring at the Gemfile.
|
10
|
-
It is a fact of Heroku that you only have 60 precious seconds to get your app loaded before ❨╯°□°❩╯︵┻━┻
|
48
|
+
It is a fact of Heroku that you only have 60, 75, or 120 ([by special request](https://devcenter.heroku.com/articles/error-codes#h20-app-boot-timeout)) precious seconds to get your app loaded before ❨╯°□°❩╯︵┻━┻
|
11
49
|
|
12
50
|
This gem helps by telling you which gems don't need to be loaded during boot time.
|
13
51
|
|
@@ -43,7 +81,34 @@ And then execute:
|
|
43
81
|
|
44
82
|
## Usage
|
45
83
|
|
46
|
-
Works with Ruby >=
|
84
|
+
Works with Ruby >= 2.0 due to use of named parameters.
|
85
|
+
|
86
|
+
### Example!
|
87
|
+
|
88
|
+
Getting tired of seeing this `irb` warning, perhaps?
|
89
|
+
|
90
|
+
```
|
91
|
+
$ bundle exec rails console
|
92
|
+
Loading staging environment (Rails M.m.p)
|
93
|
+
irb: warn: can't alias context from irb_context.
|
94
|
+
```
|
95
|
+
|
96
|
+
Find out what gems may be causing it by defining `context`!
|
97
|
+
```
|
98
|
+
>> require 'gem_bench'
|
99
|
+
=> true
|
100
|
+
>> bad_context_maybe = GemBench.find(look_for_regex: /def context/).starters
|
101
|
+
[GemBench] Will search for gems in ["/Users/pboling/.rvm/gems/ruby-2.4.0@foss/gems", "/Users/pboling/.rvm/gems/ruby-2.4.0@global/gems", "/Users/pboling/.rvm/gems/ruby-2.4.0@foss/bundler/gems"]
|
102
|
+
[GemBench] Detected 11 loaded gems + 2 loaded gems which GemBench is configured to ignore.
|
103
|
+
=> [byebug, diff-lcs]
|
104
|
+
```
|
105
|
+
Then find the file and line number for the first occurrence of the regex in each:
|
106
|
+
```
|
107
|
+
>> bad_context_maybe.stats
|
108
|
+
=> [[["/Users/pboling/.rvm/gems/ruby-2.4.0@foss/gems/byebug-9.0.6/lib/byebug/command.rb", 777]], [["/Users/pboling/.rvm/gems/ruby-2.4.0@foss/gems/diff-lcs-1.3/lib/diff/lcs/hunk.rb", 5655]]]
|
109
|
+
```
|
110
|
+
|
111
|
+
### More Different Example!
|
47
112
|
|
48
113
|
Fire up an `irb` session or a `rails console` and then:
|
49
114
|
|
@@ -97,53 +162,9 @@ See that? Only 3 of the 14 gems rails loads need to be required when your app b
|
|
97
162
|
However, in order to prevent loading them we would have to make them primary dependencies, listed in the Gemfile, which isn't really the best idea. Moving on...
|
98
163
|
If you run the check against a real app's Gemfile it will find numerous primary dependencies that don't need to be required at app boot. See Advanced Usage :)
|
99
164
|
|
100
|
-
In a random directory, in an irb session, where there is no Gemfile in sight it will give a lot more information
|
165
|
+
In a random directory, in an irb session, where there is no Gemfile in sight it will give a lot more information.
|
101
166
|
|
102
|
-
|
103
|
-
>> require 'gem_bench'
|
104
|
-
=> true
|
105
|
-
>> require 'rails'
|
106
|
-
=> true
|
107
|
-
>> team = GemBench.check({verbose: true})
|
108
|
-
[GemBench] Will search for gems in ["/Users/pboling/.rvm/gems/ruby-1.9.3-head@foss/gems", "/Users/pboling/.rvm/gems/ruby-1.9.3-head@global/gems"]
|
109
|
-
[GemBench] No Gemfile found.
|
110
|
-
[GemBench] Will show bad ideas. Be Careful.
|
111
|
-
[GemBench] Detected 14 loaded gems
|
112
|
-
(excluding the 2 loaded gems which GemBench is configured to ignore)
|
113
|
-
|
114
|
-
[GemBench] Usage: Require another gem in this session to evaluate it.
|
115
|
-
Example:
|
116
|
-
require 'rails'
|
117
|
-
GemBench.check({verbose: true})
|
118
|
-
[GemBench] You might want to verify that activesupport v3.2.13 really has a Rails::Railtie or Rails::Engine. Check these files:
|
119
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-head@foss/gems/activesupport-3.2.11/lib/active_support/i18n_railtie.rb", 146]
|
120
|
-
[GemBench] You might want to verify that actionpack v3.2.13 really has a Rails::Railtie or Rails::Engine. Check these files:
|
121
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-head@foss/gems/actionpack-3.2.11/lib/action_controller/railtie.rb", 248]
|
122
|
-
[GemBench] You might want to verify that railties v3.2.13 really has a Rails::Railtie or Rails::Engine. Check these files:
|
123
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-head@foss/gems/railties-3.2.11/lib/rails/application/configuration.rb", 245]
|
124
|
-
[GemBench] If you want to check for false positives, the files to check for Railties and Engines are listed above.
|
125
|
-
[GemBench] 3 out of 14 evaluated gems actually need to be loaded at boot time. They are:
|
126
|
-
[SUGGESTION] 1) gem 'activesupport', '~> 3.2.13'
|
127
|
-
[SUGGESTION] 2) gem 'actionpack', '~> 3.2.13'
|
128
|
-
[SUGGESTION] 3) gem 'railties', '~> 3.2.13'
|
129
|
-
[GemBench] Evaluated 14 loaded gems and found 11 which may be able to skip boot loading (require: false).
|
130
|
-
*** => WARNING <= ***: Be careful adding non-primary dependencies to your Gemfile as it is generally a bad idea.
|
131
|
-
To safely evaluate a Gemfile:
|
132
|
-
1. Make sure you are in the root of a project with a Gemfile
|
133
|
-
2. Make sure the gem is actually a dependency in the Gemfile
|
134
|
-
[BE CAREFUL] 1) gem 'i18n', '~> 0.6.1', require: false
|
135
|
-
[BE CAREFUL] 2) gem 'builder', '~> 3.0.4', require: false
|
136
|
-
[BE CAREFUL] 3) gem 'activemodel', '~> 3.2.13', require: false
|
137
|
-
[BE CAREFUL] 4) gem 'rack-cache', '~> 1.2', require: false
|
138
|
-
[BE CAREFUL] 5) gem 'rack', '~> 1.4.5', require: false
|
139
|
-
[BE CAREFUL] 6) gem 'rack-test', '~> 0.6.2', require: false
|
140
|
-
[BE CAREFUL] 7) gem 'journey', '~> 1.0.4', require: false
|
141
|
-
[BE CAREFUL] 8) gem 'hike', '~> 1.2.1', require: false
|
142
|
-
[BE CAREFUL] 9) gem 'tilt', '~> 1.3.3', require: false
|
143
|
-
[BE CAREFUL] 10) gem 'sprockets', '~> 2.2.2', require: false
|
144
|
-
[BE CAREFUL] 11) gem 'erubis', '~> 2.7.0', require: false
|
145
|
-
|
146
|
-
## Advanced Usage
|
167
|
+
### Advanced Usage
|
147
168
|
|
148
169
|
In order to *also* see list gems may *not* be required at boot time you need to:
|
149
170
|
|
@@ -156,158 +177,7 @@ So here's a [*fat* Gemfile][bundle-group-pattern] weighing in at 265 gem depende
|
|
156
177
|
Welcome to RAILS. You are using ruby 1.9.3p392 (2013-02-22 revision 39386) [x86_64-darwin12.2.1]. Have fun ;)
|
157
178
|
Loading development environment (Rails 3.2.13)
|
158
179
|
[1] pry(main)> a = GemBench.check({verbose: true})
|
159
|
-
|
160
|
-
[GemBench] Will check Gemfile at /Users/pboling/Documents/RubyMineProjects/simple/Gemfile.
|
161
|
-
[GemBench] Detected 265 loaded gems
|
162
|
-
(excluding the 2 GemBench is configured to skip)
|
163
|
-
[GemBench] You might want to verify that activesupport v3.2.13 really has a Rails::Railtie or Rails::Engine. Check these files:
|
164
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/activesupport-3.2.12/lib/active_support/i18n_railtie.rb", 146]
|
165
|
-
[GemBench] You might want to verify that sprockets v2.2.2 really has a Rails::Railtie or Rails::Engine. Check these files:
|
166
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/sprockets-rails-1.0.0/lib/sprockets/rails/railtie.rb", 495]
|
167
|
-
[GemBench] You might want to verify that actionpack v3.2.13 really has a Rails::Railtie or Rails::Engine. Check these files:
|
168
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/actionpack-3.2.12/lib/action_controller/railtie.rb", 248]
|
169
|
-
[GemBench] You might want to verify that actionmailer v3.2.13 really has a Rails::Railtie or Rails::Engine. Check these files:
|
170
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/actionmailer-3.2.12/lib/action_mailer/railtie.rb", 133]
|
171
|
-
[GemBench] You might want to verify that activerecord v3.2.13 really has a Rails::Railtie or Rails::Engine. Check these files:
|
172
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/activerecord-3.2.12/lib/active_record/railtie.rb", 409]
|
173
|
-
[GemBench] You might want to verify that activerecord-postgres-array v0.0.9 really has a Rails::Railtie or Rails::Engine. Check these files:
|
174
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/bundler/gems/activerecord-postgres-array-07c5291804a2/lib/activerecord-postgres-array.rb", 55]
|
175
|
-
[GemBench] You might want to verify that activerecord-postgres-hstore v0.7.6 really has a Rails::Railtie or Rails::Engine. Check these files:
|
176
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/activerecord-postgres-hstore-0.7.5/lib/activerecord-postgres-hstore/railties.rb", 226]
|
177
|
-
[GemBench] You might want to verify that activeresource v3.2.13 really has a Rails::Railtie or Rails::Engine. Check these files:
|
178
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/activeresource-3.2.12/lib/active_resource/railtie.rb", 83]
|
179
|
-
[GemBench] You might want to verify that railties v3.2.13 really has a Rails::Railtie or Rails::Engine. Check these files:
|
180
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/railties-3.2.12/lib/rails/application/configuration.rb", 245]
|
181
|
-
[GemBench] You might want to verify that acts-as-messageable v0.4.8 really has a Rails::Railtie or Rails::Engine. Check these files:
|
182
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/acts-as-messageable-0.4.8/lib/acts-as-messageable/railtie.rb", 110]
|
183
|
-
[GemBench] You might want to verify that airbrake v3.1.10 really has a Rails::Railtie or Rails::Engine. Check these files:
|
184
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/airbrake-3.1.10/lib/airbrake/railtie.rb", 109]
|
185
|
-
[GemBench] You might want to verify that asset_sync v0.5.4 really has a Rails::Railtie or Rails::Engine. Check these files:
|
186
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/asset_sync-0.5.4/lib/asset_sync/engine.rb", 34]
|
187
|
-
[GemBench] You might want to verify that slim v1.3.6 really has a Rails::Railtie or Rails::Engine. Check these files:
|
188
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/slim-rails-1.1.0/lib/slim-rails.rb", 81]
|
189
|
-
[GemBench] You might want to verify that sidekiq v2.10.0 really has a Rails::Railtie or Rails::Engine. Check these files:
|
190
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/sidekiq-2.7.4/lib/sidekiq/rails.rb", 290]
|
191
|
-
[GemBench] You might want to verify that aws-sdk v1.8.5 really has a Rails::Railtie or Rails::Engine. Check these files:
|
192
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/aws-sdk-1.8.3.1/lib/aws/rails.rb", 705]
|
193
|
-
[GemBench] You might want to verify that better_errors v0.8.0 really has a Rails::Railtie or Rails::Engine. Check these files:
|
194
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/better_errors-0.6.0/lib/better_errors/rails.rb", 51]
|
195
|
-
[GemBench] You might want to verify that sass v3.2.7 really has a Rails::Railtie or Rails::Engine. Check these files:
|
196
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/sass-rails-3.2.6/lib/sass/rails/railtie.rb", 68]
|
197
|
-
[GemBench] You might want to verify that bootstrap-sass v2.3.1.0 really has a Rails::Railtie or Rails::Engine. Check these files:
|
198
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/bootstrap-sass-2.3.0.1/lib/bootstrap-sass/engine.rb", 53]
|
199
|
-
[GemBench] You might want to verify that haml v4.0.1 really has a Rails::Railtie or Rails::Engine. Check these files:
|
200
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/haml-4.0.0/lib/haml/railtie.rb", 232]
|
201
|
-
[GemBench] You might want to verify that bullet v4.5.0 really has a Rails::Railtie or Rails::Engine. Check these files:
|
202
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/bullet-4.3.0/lib/bullet.rb", 683]
|
203
|
-
[GemBench] You might want to verify that parallel v0.6.4 really has a Rails::Railtie or Rails::Engine. Check these files:
|
204
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/parallel_tests-0.10.0/lib/parallel_tests/railtie.rb", 67]
|
205
|
-
[GemBench] You might want to verify that cells v3.8.8 really has a Rails::Railtie or Rails::Engine. Check these files:
|
206
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/cells-3.8.8/lib/cell/rails4_0_strategy.rb", 773]
|
207
|
-
[GemBench] You might want to verify that coffee-rails v3.2.2 really has a Rails::Railtie or Rails::Engine. Check these files:
|
208
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/coffee-rails-3.2.2/lib/coffee/rails/engine.rb", 74]
|
209
|
-
[GemBench] You might want to verify that compass v0.12.2 really has a Rails::Railtie or Rails::Engine. Check these files:
|
210
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/compass-rails-1.0.3/lib/compass-rails/railties/3_0.rb", 49]
|
211
|
-
[GemBench] You might want to verify that compass-rails v1.0.3 really has a Rails::Railtie or Rails::Engine. Check these files:
|
212
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/compass-rails-1.0.3/lib/compass-rails/railties/3_0.rb", 49]
|
213
|
-
[GemBench] You might want to verify that csv_pirate v5.0.7 really has a Rails::Railtie or Rails::Engine. Check these files:
|
214
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/csv_pirate-5.0.7/lib/csv_pirate/railtie.rb", 35]
|
215
|
-
[GemBench] You might want to verify that devise v2.2.3 really has a Rails::Railtie or Rails::Engine. Check these files:
|
216
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/devise-2.2.3/lib/devise/rails.rb", 101]
|
217
|
-
[GemBench] You might want to verify that devise_invitable v1.1.3 really has a Rails::Railtie or Rails::Engine. Check these files:
|
218
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/bundler/gems/devise_invitable-5af50a925e0a/lib/devise_invitable/rails.rb", 42]
|
219
|
-
[GemBench] You might want to verify that rails v3.2.13 really has a Rails::Railtie or Rails::Engine. Check these files:
|
220
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/bundler/gems/rails_admin-05a029da6fab/lib/rails_admin/engine.rb", 373]
|
221
|
-
[GemBench] You might want to verify that dismissible_helpers v0.1.5 really has a Rails::Railtie or Rails::Engine. Check these files:
|
222
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/dismissible_helpers-0.1.5/lib/dismissible_helpers/engine.rb", 44]
|
223
|
-
[GemBench] You might want to verify that dotenv v0.6.0 really has a Rails::Railtie or Rails::Engine. Check these files:
|
224
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/dotenv-0.5.0/lib/dotenv/railtie.rb", 32]
|
225
|
-
[GemBench] You might want to verify that dry_views v0.0.2 really has a Rails::Railtie or Rails::Engine. Check these files:
|
226
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/dry_views-0.0.2/lib/dry_views/railtie.rb", 138]
|
227
|
-
[GemBench] You might want to verify that sass-rails v3.2.6 really has a Rails::Railtie or Rails::Engine. Check these files:
|
228
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/sass-rails-3.2.6/lib/sass/rails/railtie.rb", 68]
|
229
|
-
[GemBench] You might want to verify that font-awesome-sass-rails v3.0.2.2 really has a Rails::Railtie or Rails::Engine. Check these files:
|
230
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/font-awesome-sass-rails-3.0.2.2/lib/font-awesome-sass-rails/engine.rb", 89]
|
231
|
-
[GemBench] You might want to verify that foundation-icons-sass-rails v2.0.0 really has a Rails::Railtie or Rails::Engine. Check these files:
|
232
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/foundation-icons-sass-rails-2.0.0/lib/foundation-icons-sass-rails/engine.rb", 95]
|
233
|
-
[GemBench] You might want to verify that g v1.7.2 really has a Rails::Railtie or Rails::Engine. Check these files:
|
234
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/gem_bench-0.0.2/lib/gem_bench/team.rb", 2462]
|
235
|
-
[GemBench] You might want to verify that geocoder v1.1.6 really has a Rails::Railtie or Rails::Engine. Check these files:
|
236
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/geocoder-1.1.6/lib/geocoder/railtie.rb", 90]
|
237
|
-
[GemBench] You might want to verify that geokit v1.6.5 really has a Rails::Railtie or Rails::Engine. Check these files:
|
238
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/bundler/gems/geokit-rails3-9988045e1c4b/lib/geokit-rails3/railtie.rb", 76]
|
239
|
-
[GemBench] You might want to verify that geokit-rails3 v0.1.5 really has a Rails::Railtie or Rails::Engine. Check these files:
|
240
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/bundler/gems/geokit-rails3-9988045e1c4b/lib/geokit-rails3/railtie.rb", 76]
|
241
|
-
[GemBench] You might want to verify that pry v0.9.12 really has a Rails::Railtie or Rails::Engine. Check these files:
|
242
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/pry-rails-0.2.2/lib/pry-rails/railtie.rb", 53]
|
243
|
-
[GemBench] You might want to verify that rspec v2.13.0 really has a Rails::Railtie or Rails::Engine. Check these files:
|
244
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/rspec-rails-2.12.2/lib/rspec-rails.rb", 50]
|
245
|
-
[GemBench] You might want to verify that spork v1.0.0rc3 really has a Rails::Railtie or Rails::Engine. Check these files:
|
246
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/spork-rails-3.2.1/lib/spork/app_framework/rails.rb", 1267]
|
247
|
-
[GemBench] You might want to verify that haml-rails v0.4 really has a Rails::Railtie or Rails::Engine. Check these files:
|
248
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/haml-rails-0.4/lib/haml-rails.rb", 81]
|
249
|
-
[GemBench] You might want to verify that handlebars_assets v0.12.0 really has a Rails::Railtie or Rails::Engine. Check these files:
|
250
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/handlebars_assets-0.12.0/lib/handlebars_assets/engine.rb", 43]
|
251
|
-
[GemBench] You might want to verify that hirefire-resource v0.0.2 really has a Rails::Railtie or Rails::Engine. Check these files:
|
252
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/hirefire-resource-0.0.2/lib/hirefire/railtie.rb", 55]
|
253
|
-
[GemBench] You might want to verify that jquery-rails v2.2.1 really has a Rails::Railtie or Rails::Engine. Check these files:
|
254
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/jquery-rails-2.1.4/lib/jquery/rails/engine.rb", 50]
|
255
|
-
[GemBench] You might want to verify that html5-rails v0.0.7 really has a Rails::Railtie or Rails::Engine. Check these files:
|
256
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/html5-rails-0.0.6/lib/html5/rails/engine.rb", 49]
|
257
|
-
[GemBench] You might want to verify that jquery-ui-rails v3.0.1 really has a Rails::Railtie or Rails::Engine. Check these files:
|
258
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/jquery-ui-rails-3.0.1/lib/jquery/ui/rails/engine.rb", 66]
|
259
|
-
[GemBench] You might want to verify that kaminari v0.14.1 really has a Rails::Railtie or Rails::Engine. Check these files:
|
260
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/kaminari-0.14.1/lib/kaminari/engine.rb", 44]
|
261
|
-
[GemBench] You might want to verify that neography v1.0.9 really has a Rails::Railtie or Rails::Engine. Check these files:
|
262
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/neography-1.0.6/lib/neography/railtie.rb", 52]
|
263
|
-
[GemBench] You might want to verify that neoid v0.1.2 really has a Rails::Railtie or Rails::Engine. Check these files:
|
264
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/neoid-0.1.2/lib/neoid/railtie.rb", 59]
|
265
|
-
[GemBench] You might want to verify that nested_form v0.3.2 really has a Rails::Railtie or Rails::Engine. Check these files:
|
266
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/nested_form-0.3.1/lib/nested_form/engine.rb", 54]
|
267
|
-
[GemBench] You might want to verify that newrelic_rpm v3.6.0.78 really has a Rails::Railtie or Rails::Engine. Check these files:
|
268
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/newrelic_rpm-3.5.5.540.dev/lib/newrelic_rpm.rb", 863]
|
269
|
-
[GemBench] You might want to verify that parallel_tests v0.10.4 really has a Rails::Railtie or Rails::Engine. Check these files:
|
270
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/parallel_tests-0.10.0/lib/parallel_tests/railtie.rb", 67]
|
271
|
-
[GemBench] You might want to verify that pg v0.15.0 really has a Rails::Railtie or Rails::Engine. Check these files:
|
272
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/pg_power-1.3.0/lib/pg_power/engine.rb", 43]
|
273
|
-
[GemBench] You might want to verify that rspec-rails v2.13.0 really has a Rails::Railtie or Rails::Engine. Check these files:
|
274
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/rspec-rails-2.12.2/lib/rspec-rails.rb", 50]
|
275
|
-
[GemBench] You might want to verify that pg_power v1.3.1 really has a Rails::Railtie or Rails::Engine. Check these files:
|
276
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/pg_power-1.3.0/lib/pg_power/engine.rb", 43]
|
277
|
-
[GemBench] You might want to verify that pry-rails v0.2.2 really has a Rails::Railtie or Rails::Engine. Check these files:
|
278
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/pry-rails-0.2.2/lib/pry-rails/railtie.rb", 53]
|
279
|
-
[GemBench] You might want to verify that quiet_assets v1.0.2 really has a Rails::Railtie or Rails::Engine. Check these files:
|
280
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/quiet_assets-1.0.2/lib/quiet_assets.rb", 38]
|
281
|
-
[GemBench] You might want to verify that remotipart v1.0.5 really has a Rails::Railtie or Rails::Engine. Check these files:
|
282
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/remotipart-1.0.5/lib/remotipart/rails/engine.rb", 77]
|
283
|
-
[GemBench] You might want to verify that rails_admin v0.4.6 really has a Rails::Railtie or Rails::Engine. Check these files:
|
284
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/bundler/gems/rails_admin-05a029da6fab/lib/rails_admin/engine.rb", 373]
|
285
|
-
[GemBench] You might want to verify that requirejs-rails v0.9.1.1 really has a Rails::Railtie or Rails::Engine. Check these files:
|
286
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/requirejs-rails-0.9.0/lib/requirejs/rails/engine.rb", 107]
|
287
|
-
[GemBench] You might want to verify that rolify v3.2.0 really has a Rails::Railtie or Rails::Engine. Check these files:
|
288
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/rolify-3.2.0/lib/rolify/railtie.rb", 66]
|
289
|
-
[GemBench] You might want to verify that rspec-cells v0.1.6 really has a Rails::Railtie or Rails::Engine. Check these files:
|
290
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/bundler/gems/rspec-cells-47232afed355/lib/rspec-cells.rb", 50]
|
291
|
-
[GemBench] You might want to verify that sanitize_email v1.0.6 really has a Rails::Railtie or Rails::Engine. Check these files:
|
292
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/sanitize_email-1.0.6/lib/sanitize_email/engine.rb", 144]
|
293
|
-
[GemBench] You might want to verify that simplecov v0.7.1 really has a Rails::Railtie or Rails::Engine. Check these files:
|
294
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/simplecov-0.7.1/lib/simplecov/railtie.rb", 37]
|
295
|
-
[GemBench] You might want to verify that spork-rails v3.2.1 really has a Rails::Railtie or Rails::Engine. Check these files:
|
296
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/spork-rails-3.2.1/lib/spork/app_framework/rails.rb", 1267]
|
297
|
-
[GemBench] You might want to verify that sprockets-rails v0.0.1 really has a Rails::Railtie or Rails::Engine. Check these files:
|
298
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/sprockets-rails-1.0.0/lib/sprockets/rails/railtie.rb", 495]
|
299
|
-
[GemBench] You might want to verify that stackable_flash v0.0.7 really has a Rails::Railtie or Rails::Engine. Check these files:
|
300
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/stackable_flash-0.0.7/lib/stackable_flash/railtie.rb", 40]
|
301
|
-
[GemBench] You might want to verify that state_machine v1.2.0 really has a Rails::Railtie or Rails::Engine. Check these files:
|
302
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/state_machine-1.1.2/lib/state_machine/initializers/rails.rb", 262]
|
303
|
-
[GemBench] You might want to verify that teabag v0.4.6 really has a Rails::Railtie or Rails::Engine. Check these files:
|
304
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/bundler/gems/teabag-0d3fde2505b9/lib/teabag/engine.rb", 33]
|
305
|
-
[GemBench] You might want to verify that turbo-sprockets-rails3 v0.3.6 really has a Rails::Railtie or Rails::Engine. Check these files:
|
306
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/turbo-sprockets-rails3-0.3.6/lib/turbo-sprockets/railtie.rb", 179]
|
307
|
-
[GemBench] You might want to verify that turbolinks v1.1.1 really has a Rails::Railtie or Rails::Engine. Check these files:
|
308
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/turbolinks-0.6.1/lib/turbolinks.rb", 650]
|
309
|
-
[GemBench] You might want to verify that zurb-foundation v4.1.1 really has a Rails::Railtie or Rails::Engine. Check these files:
|
310
|
-
["/Users/pboling/.rvm/gems/ruby-1.9.3-p392@simple/gems/zurb-foundation-3.2.5/lib/foundation/engine.rb", 35]
|
180
|
+
... # snip # ...
|
311
181
|
[GemBench] If you want to check for false positives, the files to check for Railties and Engines are listed above.
|
312
182
|
[GemBench] 74 out of 265 evaluated gems actually need to be loaded at boot time. They are:
|
313
183
|
[SUGGESTION] 1) gem 'activesupport', '~> 3.2.13', require: false
|
@@ -444,7 +314,7 @@ When doing these, you will probably encounter errors saying that a library is no
|
|
444
314
|
add `require "foo"` where the error happens. Keep in mind that if this is in an initializer or environment file,
|
445
315
|
you aren't saving any time when the rails server is booting. However,
|
446
316
|
it does save time when running a rake task that does not invoke the environment (some do, some don't). So, if
|
447
|
-
you don't think saving this time is worth the minor
|
317
|
+
you don't think saving this time is worth the minor additional code complexity, you can exclude the `require: false`s
|
448
318
|
in these cases.
|
449
319
|
|
450
320
|
After adding your `require: false`s, run gem_bench again. The gem's logic isn't perfect so it sometimes
|
@@ -457,10 +327,18 @@ How much faster will my app boot loading 45 fewer gems? A bit.
|
|
457
327
|
## Future
|
458
328
|
|
459
329
|
This gem determines which gems need to be loaded at Rails' boot time by looking for Railties and Engines.
|
460
|
-
A future
|
330
|
+
A future version will also look for initializers, because gems which have code that runs (e.g. configuration) in an initializer also need to be loaded at boot time.
|
331
|
+
|
332
|
+
## Development
|
333
|
+
|
334
|
+
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.
|
335
|
+
|
336
|
+
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).
|
461
337
|
|
462
338
|
## Contributing
|
463
339
|
|
340
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/pboling/gem_bench.
|
341
|
+
|
464
342
|
If you see: `is feeling very lost right now` then I'd like to know.
|
465
343
|
Create an issue and tell me about it, or fix it yo'sef.
|
466
344
|
|
@@ -490,7 +368,7 @@ For example:
|
|
490
368
|
## Legal
|
491
369
|
|
492
370
|
* MIT License
|
493
|
-
* Copyright (c) 2013 [Peter H. Boling](http://www.railsbling.com)
|
371
|
+
* Copyright (c) 2013 [Peter H. Boling](http://www.railsbling.com)
|
494
372
|
|
495
373
|
[semver]: http://semver.org/
|
496
374
|
[pvc]: http://docs.rubygems.org/read/chapter/16#page74
|
data/Rakefile
CHANGED
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "gem_bench"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require "irb"
|
14
|
+
IRB.start(__FILE__)
|
data/bin/setup
ADDED
data/gem_bench.gemspec
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'gem_bench/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "gem_bench"
|
8
|
+
spec.version = GemBench::VERSION
|
9
|
+
spec.authors = ["Peter Boling"]
|
10
|
+
spec.email = ["peter.boling@gmail.com"]
|
11
|
+
|
12
|
+
spec.summary = %q{Gem: "Put me in coach"
|
13
|
+
You: ❨╯°□°❩╯︵┻━┻}
|
14
|
+
spec.description = %q{trim down app load times by keeping your worst players on the bench}
|
15
|
+
spec.homepage = "http://github.com/acquaintable/gem_bench"
|
16
|
+
|
17
|
+
spec.licenses = ['MIT']
|
18
|
+
spec.platform = Gem::Platform::RUBY
|
19
|
+
spec.required_ruby_version = ">= 2.0.0" # because has named parameters with default values
|
20
|
+
|
21
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
22
|
+
f.match(%r{^(test|spec|features)/})
|
23
|
+
end
|
24
|
+
spec.bindir = "exe"
|
25
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
26
|
+
spec.require_paths = ["lib"]
|
27
|
+
spec.test_files = Dir.glob("{test|spec|features}/**/*")
|
28
|
+
|
29
|
+
# Yes, it *is* actually a run-time dependency. This gem is sort of a bundler add-on.
|
30
|
+
spec.add_runtime_dependency "bundler", "~> 1.14"
|
31
|
+
spec.add_development_dependency "rake", "~> 10.5"
|
32
|
+
spec.add_development_dependency "rspec", "~> 3.5"
|
33
|
+
spec.add_development_dependency "byebug", "~> 9.0"
|
34
|
+
spec.add_development_dependency "gem-release", "~> 0.5"
|
35
|
+
end
|
data/lib/gem_bench/player.rb
CHANGED
@@ -1,26 +1,37 @@
|
|
1
1
|
module GemBench
|
2
2
|
class Player
|
3
|
-
|
3
|
+
# MAJOR.MINOR split on point length == 2
|
4
|
+
# MAJOR.MINOR.PATCH split on point length == 3
|
5
|
+
# Semver 2.0 Standard is to accept minor and patch updates
|
6
|
+
SEMVER_SPLIT_ON_POINT_LENGTH = 2
|
4
7
|
attr_accessor :name, :version, :state, :stats
|
8
|
+
attr_reader :file_path_glob, :gemfile_regex, :checked, :exclude_file_pattern
|
5
9
|
|
6
10
|
def initialize(options = {})
|
7
11
|
@name = options[:name]
|
8
12
|
@version = options[:version]
|
13
|
+
@exclude_file_pattern = options[:exclude_file_pattern]
|
9
14
|
@state = nil
|
10
15
|
@stats = []
|
16
|
+
@file_path_glob = GemBench::PATH_GLOB.call(@name)
|
17
|
+
# Used to find the line of the Gemfile which creates the primary dependency on this gem
|
18
|
+
@gemfile_regex = GemBench::DEPENDENCY_REGEX_PROC.call(@name)
|
19
|
+
@checked = false
|
11
20
|
end
|
12
21
|
|
13
|
-
def
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
22
|
+
def set_starter(file_path, line_match: nil)
|
23
|
+
return false if file_path =~ exclude_file_pattern
|
24
|
+
# Some gems may have zero files to check, as they may be using gem as a
|
25
|
+
# delivery system for shell scripts! As such we need to check which
|
26
|
+
# gems got checked, and which had nothing to check
|
27
|
+
@checked = true
|
28
|
+
line_match ||= GemBench::RAILTIE_REGEX
|
18
29
|
scan = begin
|
19
|
-
if GemBench::DO_NOT_SCAN.include?
|
30
|
+
if GemBench::DO_NOT_SCAN.include?(name)
|
20
31
|
false
|
21
32
|
else
|
22
33
|
begin
|
23
|
-
File.read(file_path).encode('utf-8', :invalid => :replace, :undef => :replace, :replace => '_') =~
|
34
|
+
File.read(file_path).encode('utf-8', :invalid => :replace, :undef => :replace, :replace => '_') =~ line_match
|
24
35
|
rescue ArgumentError => e
|
25
36
|
if e.message =~ /invalid byte sequence/
|
26
37
|
puts "[GemBench] checking #{file_path} failed due to unparseable file content"
|
@@ -39,34 +50,60 @@ module GemBench
|
|
39
50
|
self.state == GemBench::PLAYER_STATES[:starter]
|
40
51
|
end
|
41
52
|
|
42
|
-
|
43
|
-
|
44
|
-
|
53
|
+
def to_s(format = :name)
|
54
|
+
case format
|
55
|
+
when :name then
|
56
|
+
name
|
57
|
+
when :v then
|
58
|
+
"#{name} v#{version}"
|
59
|
+
when :semver
|
60
|
+
"gem '#{name}', '~> #{semver}'"
|
61
|
+
when :locked
|
62
|
+
"gem '#{name}', '#{version}'"
|
63
|
+
when :legacy # when depending on legacy gems, you specifically want to not upgrade, except patches.
|
64
|
+
"gem '#{name}', '~> #{version}'"
|
65
|
+
when :upgrade # when upgrading, and testing gem compatibility you want to try anything newer
|
66
|
+
"gem '#{name}', '>= #{version}'"
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
def inspect
|
71
|
+
to_s(:name)
|
45
72
|
end
|
46
73
|
|
47
|
-
def
|
48
|
-
|
74
|
+
def semver
|
75
|
+
ver = version
|
76
|
+
until ver.split(".").length <= SEMVER_SPLIT_ON_POINT_LENGTH do
|
77
|
+
ver = ver[0..(ver.rindex(".")-1)]
|
78
|
+
end
|
79
|
+
ver
|
49
80
|
end
|
50
81
|
|
51
82
|
def how
|
52
83
|
case self.state
|
53
|
-
|
54
|
-
|
55
|
-
|
84
|
+
when GemBench::PLAYER_STATES[:starter] then
|
85
|
+
to_s(:semver)
|
86
|
+
when GemBench::PLAYER_STATES[:bench] then
|
87
|
+
"#{to_s(:semver)}, require: false"
|
88
|
+
else
|
89
|
+
if checked
|
90
|
+
"#{self} is feeling very lost right now."
|
91
|
+
else
|
92
|
+
"#{self} had no files to evaluate."
|
93
|
+
end
|
56
94
|
end
|
57
95
|
end
|
58
96
|
|
59
97
|
def suggest(num)
|
60
|
-
"\t[SUGGESTION] #{num}) #{
|
98
|
+
"\t[SUGGESTION] #{num}) #{how}"
|
61
99
|
end
|
62
100
|
|
63
101
|
def info(num)
|
64
|
-
"\t[INFO] #{num}) #{
|
102
|
+
"\t[INFO] #{num}) #{how}"
|
65
103
|
end
|
66
104
|
|
67
105
|
def careful(num)
|
68
|
-
"\t[BE CAREFUL] #{num}) #{
|
106
|
+
"\t[BE CAREFUL] #{num}) #{how}"
|
69
107
|
end
|
70
|
-
|
71
108
|
end
|
72
109
|
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
# Scout's job is to figure out where gems are hiding
|
2
|
+
#
|
3
|
+
module GemBench
|
4
|
+
class Scout
|
5
|
+
attr_reader :gem_paths, :gemfile_path, :gemfile_lines, :gemfile_trash, :loaded_gems
|
6
|
+
def initialize(check_gemfile: nil)
|
7
|
+
@check_gemfile = check_gemfile.nil? ? true : check_gemfile
|
8
|
+
@gemfile_path = "#{Dir.pwd}/Gemfile"
|
9
|
+
gem_lookup_paths_from_bundler
|
10
|
+
gem_lines_from_gemfile
|
11
|
+
# Gem.loaded_specs are the gems that have been loaded / required.
|
12
|
+
@loaded_gems = Gem.loaded_specs.values.map {|x| [x.name, x.version.to_s] }
|
13
|
+
end
|
14
|
+
|
15
|
+
def check_gemfile?
|
16
|
+
@check_gemfile
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def gem_lookup_paths_from_bundler
|
22
|
+
begin
|
23
|
+
@gem_paths = [Bundler.rubygems.gem_dir, Bundler.rubygems.gem_path].
|
24
|
+
flatten.
|
25
|
+
compact.
|
26
|
+
uniq.
|
27
|
+
map {|x| x.to_s }.
|
28
|
+
reject { |p| p.empty? }.
|
29
|
+
map {|x| "#{x}/gems" }
|
30
|
+
@gem_paths << "#{Bundler.install_path}"
|
31
|
+
@gem_paths << "#{Bundler.bundle_path}/gems"
|
32
|
+
@gem_paths.uniq!
|
33
|
+
rescue Bundler::GemfileNotFound => e
|
34
|
+
# Don't fail here, but also don't check the Gemfile.
|
35
|
+
@check_gemfile = false
|
36
|
+
ensure
|
37
|
+
@gem_paths = [] unless @gem_paths.is_a?(Array)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def gem_lines_from_gemfile
|
42
|
+
if check_gemfile?
|
43
|
+
file = File.open(gemfile_path)
|
44
|
+
# Get all lines as an array
|
45
|
+
all_lines = file.readlines
|
46
|
+
# Remove all the commented || blank lines
|
47
|
+
@gemfile_trash, @gemfile_lines = all_lines.partition {|x| x =~ GemBench::TRASH_REGEX}
|
48
|
+
@gemfile_trash.reject! {|x| x == "\n" } # remove blank lines
|
49
|
+
else
|
50
|
+
@gemfile_trash = []
|
51
|
+
@gemfile_lines = []
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
data/lib/gem_bench/team.rb
CHANGED
@@ -1,74 +1,93 @@
|
|
1
|
+
require "forwardable"
|
2
|
+
|
1
3
|
module GemBench
|
2
4
|
class Team
|
3
|
-
|
4
5
|
EXCLUDE = [ 'bundler','gem_bench','i18n-airbrake','devise-async','km','vestal_versions','omniauth-facebook',
|
5
6
|
'flag_shih_tzu','pry-remote','koala','simple_form','thumbs_up','memoist','cancan','friendly_id',
|
6
7
|
'faker']
|
7
8
|
# A comment preceding the require: false anywhere on the line should not be considered an active require: false
|
8
|
-
|
9
|
-
|
10
|
-
|
9
|
+
extend Forwardable
|
10
|
+
def_delegators :@scout, :gem_paths, :gemfile_path, :check_gemfile?, :loaded_gems
|
11
|
+
attr_reader :scout, :look_for_regex
|
12
|
+
attr_accessor :all, :excluded, :starters, :benchers, :verbose, :gemfile_lines, :trash_lines, :current_gemfile_suggestions, :bad_ideas
|
11
13
|
|
12
14
|
def initialize(options = {})
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
@check_gemfile ||= false
|
24
|
-
@gemfile_path ||= nil
|
25
|
-
end
|
26
|
-
self.paths.uniq!
|
27
|
-
# Gem.loaded_specs are the gems that have been loaded / required.
|
28
|
-
# Among these there may be some that did not need to be.
|
29
|
-
totes = Gem.loaded_specs.values.map {|x| [x.name, x.version.to_s] }
|
30
|
-
@excluded, @all = totes.partition {|x| EXCLUDE.include?(x[0]) }
|
31
|
-
exclusions = "\t(excluding the #{self.excluded.length} loaded gems which GemBench is configured to ignore)\n" if @excluded.length > 0
|
15
|
+
@look_for_regex = options[:look_for_regex]
|
16
|
+
# find: Find gems containing specific strings in code
|
17
|
+
# bench: Find gems that can probably be benched (require: false) in the Gemfile
|
18
|
+
@check_type = @look_for_regex ? :find : :bench
|
19
|
+
@benching = @check_type == :bench
|
20
|
+
@scout = GemBench::Scout.new(check_gemfile: options[:check_gemfile] || benching?)
|
21
|
+
@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
|
22
|
+
# Among the loaded gems there may be some that did not need to be.
|
23
|
+
@excluded, @all = @scout.loaded_gems.partition {|x| EXCLUDE.include?(x[0]) }
|
24
|
+
exclusions = " + #{self.excluded.length} loaded gems which GemBench is configured to ignore.\n" if @excluded.length > 0
|
32
25
|
@starters = []
|
33
26
|
@benchers = []
|
34
27
|
@current_gemfile_suggestions = []
|
35
28
|
@verbose = options[:verbose]
|
36
29
|
self.check_all
|
37
|
-
@bad_ideas =
|
38
|
-
|
39
|
-
|
30
|
+
@bad_ideas = if benching?
|
31
|
+
options[:bad_ideas] ? true : check_gemfile? ? false : options[:bad_ideas] == false ? false : true
|
32
|
+
else
|
33
|
+
false
|
34
|
+
end
|
35
|
+
puts "[GemBench] Will search for gems in #{gem_paths.inspect}\n#{benching? ? @scout.check_gemfile? ? "[GemBench] Will check Gemfile at #{gemfile_path}.\n" : "[GemBench] No Gemfile found.\n" : ""}#{self.bad_ideas ? "[GemBench] Will show bad ideas. Be Careful.\n" : ''}[GemBench] Detected #{self.all.length} loaded gems#{exclusions}"
|
36
|
+
self.compare_gemfile if benching? && @scout.check_gemfile?
|
40
37
|
self.print if self.verbose
|
41
38
|
end
|
42
39
|
|
40
|
+
def list_starters(format: :name)
|
41
|
+
starters.map {|starter| starter.to_s(format)}
|
42
|
+
end
|
43
|
+
|
43
44
|
def print
|
44
45
|
string = ''
|
45
46
|
if self.all.empty?
|
46
47
|
string << nothing
|
47
48
|
elsif self.starters.empty?
|
48
|
-
string <<
|
49
|
+
string << if benching?
|
50
|
+
"[GemBench] Found no gems that need to load at boot time.\n"
|
51
|
+
else
|
52
|
+
"[GemBench] Found no gems containing #{look_for_regex} in Ruby code.\n"
|
53
|
+
end
|
49
54
|
else
|
50
55
|
if self.starters.length > 0
|
51
|
-
string << "\n#{GemBench::USAGE}" unless
|
52
|
-
string <<
|
56
|
+
string << "\n#{GemBench::USAGE}" unless check_gemfile?
|
57
|
+
string << if benching?
|
58
|
+
"[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"
|
59
|
+
else
|
60
|
+
"[GemBench] We found #{look_for_regex} in the following files.\n\n"
|
61
|
+
end
|
53
62
|
self.starters.each do |starter|
|
54
63
|
string << "\t#{starter}:\n"
|
55
64
|
starter.stats.each do |stat|
|
56
65
|
string << "\t\t#{stat[0]}:#{stat[1]}\n"
|
57
66
|
end
|
58
67
|
end
|
59
|
-
string << "[GemBench] If you want to check for false positives, the files to check for Railties and Engines are listed above.\n"
|
60
|
-
string <<
|
68
|
+
string << "[GemBench] If you want to check for false positives, the files to check for Railties and Engines are listed above.\n" if benching?
|
69
|
+
string << if benching?
|
70
|
+
"[GemBench] #{self.starters.length} out of #{self.all.length} evaluated gems actually need to be loaded at boot time. They are:\n"
|
71
|
+
else
|
72
|
+
"[GemBench] #{self.starters.length} out of #{self.all.length} evaluated gems contain #{look_for_regex}. They are:\n"
|
73
|
+
end
|
61
74
|
self.starters.each_with_index do |starter, index|
|
62
75
|
string << "#{starter.info(index + 1)}\n"
|
63
76
|
end
|
77
|
+
if extra_verbose? && !benching? && self.benchers.length > 0
|
78
|
+
string << "[GemBench] #{self.benchers.length} out of #{self.all.length} evaluated gems did not contain #{look_for_regex}. They are:\n"
|
79
|
+
self.benchers.each_with_index do |bencher, index|
|
80
|
+
string << "#{bencher.info(index + 1)}\n"
|
81
|
+
end
|
82
|
+
end
|
64
83
|
else
|
65
|
-
string << "[GemBench] Congrats!
|
66
|
-
string << "\n#{GemBench::USAGE}" unless
|
84
|
+
string << "[GemBench] Congrats! All gems appear clean.\n"
|
85
|
+
string << "\n#{GemBench::USAGE}" unless check_gemfile?
|
67
86
|
end
|
68
87
|
end
|
69
|
-
if
|
88
|
+
if check_gemfile? && benching?
|
70
89
|
if self.current_gemfile_suggestions.length > 0
|
71
|
-
string << "[GemBench] Evaluated #{self.all.length} gems and Gemfile at #{
|
90
|
+
string << "[GemBench] Evaluated #{self.all.length} gems and Gemfile at #{gemfile_path}.\n[GemBench] Here are #{self.current_gemfile_suggestions.length} suggestions for improvement:\n"
|
72
91
|
self.current_gemfile_suggestions.each_with_index do |player, index|
|
73
92
|
string << "#{player.suggest(index + 1)}\n"
|
74
93
|
end
|
@@ -77,7 +96,7 @@ module GemBench
|
|
77
96
|
end
|
78
97
|
end
|
79
98
|
|
80
|
-
if self.bad_ideas
|
99
|
+
if benching? && self.bad_ideas
|
81
100
|
# Only bad ideas if you are evaluating an actual Gemfile. If just evaluating loaded gems, then info is fine.
|
82
101
|
string << self.prepare_bad_ideas
|
83
102
|
end
|
@@ -86,7 +105,7 @@ module GemBench
|
|
86
105
|
end
|
87
106
|
|
88
107
|
def strike_out
|
89
|
-
|
108
|
+
check_gemfile? ?
|
90
109
|
"[GemBench] Evaluated #{self.all.length} gems against your Gemfile but found no primary dependencies which can safely skip require on boot (require: false).\n" :
|
91
110
|
"[GemBench] Evaluated #{self.all.length} gems but found none which can safely skip require on boot (require: false).\n"
|
92
111
|
end
|
@@ -98,7 +117,7 @@ module GemBench
|
|
98
117
|
def prepare_bad_ideas
|
99
118
|
string = ''
|
100
119
|
if self.benchers.length > 0
|
101
|
-
gemfile_instruction =
|
120
|
+
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"
|
102
121
|
string << "[GemBench] Evaluated #{self.all.length} loaded gems and found #{self.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}"
|
103
122
|
self.benchers.each_with_index do |player, index|
|
104
123
|
string << "#{player.careful(index + 1)}\n"
|
@@ -110,13 +129,8 @@ module GemBench
|
|
110
129
|
end
|
111
130
|
|
112
131
|
def compare_gemfile
|
113
|
-
|
114
|
-
|
115
|
-
all_lines = f.readlines
|
116
|
-
# Remove all the commented || blank lines
|
117
|
-
self.trash_lines, self.gemfile_lines = all_lines.partition {|x| x =~ GemBench::TRASH_REGEX}
|
118
|
-
self.benchers.each_with_index do |player, index|
|
119
|
-
self.gemfile_lines.each do |line|
|
132
|
+
self.benchers.each do |player|
|
133
|
+
scout.gemfile_lines.each do |line|
|
120
134
|
found = (line =~ player.gemfile_regex)
|
121
135
|
if found
|
122
136
|
# remove the found line from the array, because no sane person has more than one gem dependency per line... right?
|
@@ -131,19 +145,20 @@ module GemBench
|
|
131
145
|
|
132
146
|
def check_all
|
133
147
|
self.all.each do |player_data|
|
134
|
-
|
148
|
+
exclude_file_pattern = @exclude_file_pattern_regex_proc.call(player_data[0])
|
149
|
+
player = GemBench::Player.new({name: player_data[0], version: player_data[1], exclude_file_pattern: exclude_file_pattern})
|
135
150
|
self.check(player)
|
136
151
|
self.add_to_roster(player)
|
137
152
|
end
|
138
153
|
end
|
139
154
|
|
140
155
|
def check(player)
|
141
|
-
|
142
|
-
glob_path = "#{path}/#{player.
|
156
|
+
gem_paths.each do |path|
|
157
|
+
glob_path = "#{path}/#{player.file_path_glob}"
|
143
158
|
file_paths = Dir.glob("#{glob_path}")
|
144
|
-
puts "[GemBench] checking #{player} at #{glob_path} (#{file_paths.length} files)" if
|
159
|
+
puts "[GemBench] checking #{player} at #{glob_path} (#{file_paths.length} files)" if extra_verbose?
|
145
160
|
file_paths.each do |file_path|
|
146
|
-
player.set_starter(file_path)
|
161
|
+
player.set_starter(file_path, line_match: look_for_regex)
|
147
162
|
return if player.starter?
|
148
163
|
end
|
149
164
|
end
|
@@ -157,5 +172,14 @@ module GemBench
|
|
157
172
|
end
|
158
173
|
end
|
159
174
|
|
175
|
+
private
|
176
|
+
|
177
|
+
def extra_verbose?
|
178
|
+
self.verbose == "extra"
|
179
|
+
end
|
180
|
+
|
181
|
+
def benching?
|
182
|
+
@benching
|
183
|
+
end
|
160
184
|
end
|
161
185
|
end
|
data/lib/gem_bench/version.rb
CHANGED
data/lib/gem_bench.rb
CHANGED
@@ -1,27 +1,31 @@
|
|
1
|
-
|
1
|
+
require "gem_bench/version"
|
2
|
+
require "bundler" # This gem utilizes bundler as a tool.
|
3
|
+
require "gem_bench/scout"
|
4
|
+
require "gem_bench/player"
|
5
|
+
require "gem_bench/team"
|
2
6
|
|
7
|
+
module GemBench
|
3
8
|
USAGE = "[GemBench] Usage: Require another gem in this session to evaluate it.\n\tExample:\n\t\trequire 'rails'\n\t\tGemBench.check({verbose: true})\n"
|
4
9
|
RAILTIE_REGEX = /Rails::Engine|Rails::Railtie/
|
5
10
|
TRASH_REGEX = /^(\s*)([#]+.*)?$/
|
6
11
|
REQUIRE_FALSE_REGEX = /^[^#]+require(([:]\s*)|(\s*=>\s*))false.*/
|
7
|
-
|
12
|
+
DEPENDENCY_REGEX_PROC = ->(name) { /^\s*[^#]*\s*gem\s+['"]{1}#{name}['"]{1}/ }
|
8
13
|
PATH_GLOB = ->(name) { "#{name}*/lib/**/*.rb" }
|
14
|
+
EXCLUDE_FILE_PATTERN_REGEX_PROC = ->(name) { /#{name}\/test|features|spec/ }
|
9
15
|
DO_NOT_SCAN = []
|
10
16
|
PLAYER_STATES = {
|
11
17
|
starter: :starter,
|
12
18
|
bench: :bench
|
13
19
|
}
|
14
20
|
|
15
|
-
require 'bundler' # This gem utilizes bundler as a tool.
|
16
|
-
require 'gem_bench/version'
|
17
|
-
require 'gem_bench/team'
|
18
|
-
require 'gem_bench/player'
|
19
|
-
|
20
21
|
class << self
|
21
22
|
attr_accessor :roster
|
22
|
-
def check(verbose
|
23
|
+
def check(verbose: false)
|
23
24
|
@roster = GemBench::Team.new({verbose: verbose})
|
24
25
|
end
|
25
|
-
end
|
26
26
|
|
27
|
+
def find(look_for_regex: GemBench::RAILTIE_REGEX, exclude_file_pattern_regex_proc: GemBench::EXCLUDE_FILE_PATTERN_REGEX_PROC, verbose: false)
|
28
|
+
@roster = GemBench::Team.new({look_for_regex: look_for_regex, exclude_file_pattern_regex_proc: exclude_file_pattern_regex_proc, verbose: verbose})
|
29
|
+
end
|
30
|
+
end
|
27
31
|
end
|
metadata
CHANGED
@@ -1,43 +1,85 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gem_bench
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Boling
|
8
8
|
autorequire:
|
9
|
-
bindir:
|
9
|
+
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-02-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '1.
|
19
|
+
version: '1.14'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '1.
|
26
|
+
version: '1.14'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.5'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.5'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3.5'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.5'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: byebug
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '9.0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '9.0'
|
27
69
|
- !ruby/object:Gem::Dependency
|
28
70
|
name: gem-release
|
29
71
|
requirement: !ruby/object:Gem::Requirement
|
30
72
|
requirements:
|
31
|
-
- -
|
73
|
+
- - "~>"
|
32
74
|
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
75
|
+
version: '0.5'
|
34
76
|
type: :development
|
35
77
|
prerelease: false
|
36
78
|
version_requirements: !ruby/object:Gem::Requirement
|
37
79
|
requirements:
|
38
|
-
- -
|
80
|
+
- - "~>"
|
39
81
|
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
82
|
+
version: '0.5'
|
41
83
|
description: trim down app load times by keeping your worst players on the bench
|
42
84
|
email:
|
43
85
|
- peter.boling@gmail.com
|
@@ -45,14 +87,23 @@ executables: []
|
|
45
87
|
extensions: []
|
46
88
|
extra_rdoc_files: []
|
47
89
|
files:
|
48
|
-
-
|
49
|
-
-
|
50
|
-
-
|
51
|
-
-
|
90
|
+
- ".byebug_history"
|
91
|
+
- ".gitignore"
|
92
|
+
- ".rspec"
|
93
|
+
- ".travis.yml"
|
94
|
+
- CHANGELOG
|
95
|
+
- Gemfile
|
52
96
|
- LICENSE.txt
|
53
97
|
- README.md
|
54
|
-
- CHANGELOG
|
55
98
|
- Rakefile
|
99
|
+
- bin/console
|
100
|
+
- bin/setup
|
101
|
+
- gem_bench.gemspec
|
102
|
+
- lib/gem_bench.rb
|
103
|
+
- lib/gem_bench/player.rb
|
104
|
+
- lib/gem_bench/scout.rb
|
105
|
+
- lib/gem_bench/team.rb
|
106
|
+
- lib/gem_bench/version.rb
|
56
107
|
homepage: http://github.com/acquaintable/gem_bench
|
57
108
|
licenses:
|
58
109
|
- MIT
|
@@ -63,18 +114,18 @@ require_paths:
|
|
63
114
|
- lib
|
64
115
|
required_ruby_version: !ruby/object:Gem::Requirement
|
65
116
|
requirements:
|
66
|
-
- -
|
117
|
+
- - ">="
|
67
118
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
119
|
+
version: 2.0.0
|
69
120
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
70
121
|
requirements:
|
71
|
-
- -
|
122
|
+
- - ">="
|
72
123
|
- !ruby/object:Gem::Version
|
73
124
|
version: '0'
|
74
125
|
requirements: []
|
75
126
|
rubyforge_project:
|
76
|
-
rubygems_version: 2.
|
127
|
+
rubygems_version: 2.6.8
|
77
128
|
signing_key:
|
78
129
|
specification_version: 4
|
79
|
-
summary:
|
130
|
+
summary: 'Gem: "Put me in coach" You: ❨╯°□°❩╯︵┻━┻'
|
80
131
|
test_files: []
|