Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add test:multiverse:gem_manifest rake task #1890

Merged
merged 3 commits into from
Mar 20, 2023
Merged

Conversation

fallwith
Copy link
Contributor

A new test:multiverse:gem_manifest rake task has been added to produce a complete list of every top level (no dependencies) gem specified by all of the Multiverse's Gemfile.x files so that we can have a complete manifest of all versions that would be fetched at any given moment. This works by leveraging bundle lock which produces a Gemfile.lock file without actually installing anything.

A new `test:multiverse:gem_manifest` rake task has been added to produce
a complete list of every top level (no dependencies) gem specified by
all of the Multiverse's `Gemfile.x` files so that we can have a complete
manifest of all versions that would be fetched at any given moment. This
works by leveraging `bundle lock` which produces a `Gemfile.lock` file
without actually installing anything.
@fallwith
Copy link
Contributor Author

$ brake test:multiverse:gem_manifest
Processing suite active_record...(0.415 secs)
Processing suite active_record_pg...(4.728 secs)
Processing suite activemerchant...(1.603 secs)
Processing suite agent_only...(1.193 secs)
Processing suite bare...(0.433 secs)
Processing suite bunny...(3.644 secs)
Processing suite capistrano...(2.634 secs)
Processing suite capistrano2...(1.575 secs)
Processing suite concurrent_ruby...(2.391 secs)
Processing suite config_file_loading...(2.463 secs)
Processing suite curb...(2.585 secs)
Processing suite deferred_instrumentation...(3.681 secs)
Processing suite delayed_job...(4.557 secs)
Processing suite elasticsearch...(3.188 secs)
Processing suite excon...(2.576 secs)
Processing suite grape...(3.066 secs)
Processing suite grpc...(1.462 secs)
Processing suite high_security...(1.244 secs)
Processing suite httpclient...(2.752 secs)
Processing suite httprb...(4.072 secs)
Processing suite infinite_tracing...(0.437 secs)
Processing suite json...(1.255 secs)
Processing suite logger...(0.431 secs)
Processing suite marshalling...(1.261 secs)
Processing suite memcache...(10.747 secs)
Processing suite mongo...(7.096 secs)
Processing suite net_http...(1.285 secs)
Processing suite padrino...(3.289 secs)
Processing suite rack...(7.716 secs)
Processing suite rails...(8.363 secs)
Processing suite rails_prepend...(7.633 secs)
Processing suite rake...(7.068 secs)
Processing suite redis...(3.738 secs)
Processing suite resque...(4.097 secs)
Processing suite sequel...(2.602 secs)
Processing suite sidekiq...(6.352 secs)
Processing suite sinatra...(4.96 secs)
Processing suite sinatra_agent_disabled...(4.92 secs)
Processing suite thread...(0.455 secs)
Processing suite tilt...(1.532 secs)
Processing suite typhoeus...(5.097 secs)
Processing suite unicorn...(4.038 secs)
Processing suite yajl...(4.883 secs)
Generating and parsing Gemfile.lock files took 149.522 secs total

Bundling the Multiverse would fetch these gems:
-------------------------------------------------
actioncable => ["7.0.4.3", "6.1.7.3"]
actionmailbox => ["7.0.4.3", "6.1.7.3"]
actionmailer => ["7.0.4.3", "6.1.7.3", "2.3.2"]
actionpack => ["7.0.4.3", "6.1.7.3", "2.3.2"]
actiontext => ["7.0.4.3", "6.1.7.3"]
actionview => ["7.0.4.3", "6.1.7.3"]
activejob => ["7.0.4.3", "6.1.7.3"]
activemerchant => ["1.126.0"]
activemodel => ["7.0.4.3", "6.1.7.3", "6.0.6.1"]
activerecord => ["7.0.4.3", "6.1.7.3", "2.3.2"]
activeresource => ["2.3.2"]
activestorage => ["7.0.4.3", "6.1.7.3"]
activesupport => ["7.0.4.3", "6.1.7.3", "6.0.6.1", "3.1.12", "2.3.2"]
addressable => ["2.8.1"]
airbrussh => ["1.4.1"]
amq-protocol => ["2.3.2"]
bson => ["4.15.0"]
builder => ["3.2.4"]
bunny => ["2.20.3", "2.19.0", "2.9.2"]
capistrano => ["3.17.2", "2.15.9"]
concurrent-ruby => ["1.2.2", "1.1.10"]
connection_pool => ["2.3.0"]
crass => ["1.0.6"]
curb => ["1.0.5"]
dalli => ["3.2.4", "3.2.0", "3.1.6", "3.1.0", "3.0.6", "2.7.11"]
date => ["3.3.3"]
delayed_job => ["4.1.11"]
delayed_job_active_record => ["4.1.7"]
delayed_job_mongoid => ["2.3.1"]
domain_name => ["0.5.20190701"]
dry-core => ["1.0.0"]
dry-inflector => ["1.0.0"]
dry-logic => ["1.5.0"]
dry-types => ["1.7.1"]
elastic-transport => ["8.2.0"]
elasticsearch => ["8.6.0", "7.17.7"]
elasticsearch-api => ["8.6.0", "7.17.7"]
elasticsearch-transport => ["7.17.7"]
erubi => ["1.12.0"]
ethon => ["0.16.0"]
excon => ["0.99.0", "0.56.0"]
fakefs => ["2.4.0"]
faraday => ["2.7.4", "1.10.3"]
faraday-em_http => ["1.0.0"]
faraday-em_synchrony => ["1.0.0"]
faraday-excon => ["1.1.0"]
faraday-httpclient => ["1.0.1"]
faraday-multipart => ["1.0.4"]
faraday-net_http => ["3.0.2", "1.0.1"]
faraday-net_http_persistent => ["1.2.0"]
faraday-patron => ["1.0.0"]
faraday-rack => ["1.0.0"]
faraday-retry => ["1.0.3"]
ffi => ["1.15.5"]
ffi-compiler => ["1.0.1"]
globalid => ["1.1.0"]
google-protobuf => ["3.22.2-x86_64-darwin"]
googleapis-common-protos-types => ["1.5.0"]
grape => ["1.7.0"]
grpc => ["1.52.0-x86_64-darwin"]
haml => ["5.1.2", "6.1.1"]
haml-rails => ["2.1.0"]
highline => ["2.1.0"]
http => ["5.1.1", "5.0.4"]
http-cookie => ["1.0.5"]
http-form_data => ["2.3.0"]
httpclient => ["2.8.3"]
i18n => ["1.12.0", "0.7.0"]
json => ["2.6.3"]
kgio => ["2.11.4"]
llhttp-ffi => ["0.4.0"]
loofah => ["2.19.1"]
mail => ["2.8.1"]
marcel => ["1.0.2"]
memcache-client => ["1.8.5"]
method_source => ["1.0.0"]
mime-types => ["3.4.1"]
mime-types-data => ["3.2023.0218.1"]
mini_mime => ["1.1.2"]
minitest => ["5.2.3", "5.1.0", "5.3.3", "5.18.0"]
moneta => ["1.1.1"]
mongo => ["2.18.2", "2.17.3", "2.15.1", "2.14.1", "2.12.4"]
mongoid => ["7.5.2"]
mongoid-compatibility => ["0.6.0"]
mono_logger => ["1.1.1"]
multi_json => ["1.15.0"]
multipart-post => ["2.3.0"]
mustermann => ["3.0.0", "1.1.2", "2.0.2"]
mustermann-grape => ["1.0.2"]
net-imap => ["0.3.4"]
net-pop => ["0.1.2"]
net-protocol => ["0.2.1"]
net-scp => ["4.0.0"]
net-sftp => ["4.0.0"]
net-smtp => ["0.3.3"]
net-ssh => ["7.1.0"]
net-ssh-gateway => ["2.0.0"]
nio4r => ["2.5.8"]
nokogiri => ["1.14.2-x86_64-darwin"]
padrino => ["0.15.3", "0.15.1"]
padrino-admin => ["0.15.3", "0.15.1"]
padrino-cache => ["0.15.3", "0.15.1"]
padrino-core => ["0.15.3", "0.15.1"]
padrino-gen => ["0.15.3", "0.15.1"]
padrino-helpers => ["0.15.3", "0.15.1"]
padrino-mailer => ["0.15.3", "0.15.1"]
padrino-support => ["0.15.3", "0.15.1"]
pg => ["1.4.6"]
psych => ["4.0.6", "3.3.4"]
public_suffix => ["5.0.1"]
puma => ["6.1.1", "5.6.5", "4.3.12", "3.12.6"]
racc => ["1.6.2"]
rack => ["3.0.6.1", "2.0.9.3", "2.2.6.4", "1.6.13", "2.2.4"]
rack-accept => ["0.4.5"]
rack-protection => ["3.0.5", "2.1.0", "1.5.5", "2.2.4", "2.0.8.1"]
rack-test => ["2.1.0"]
rails => ["7.0.4.3", "6.1.7.3", "2.3.2"]
rails-dom-testing => ["2.0.3"]
rails-html-sanitizer => ["1.5.0"]
railties => ["7.0.4.3", "6.1.7.3"]
raindrops => ["0.20.1"]
rake => ["13.0.6", "12.3.3"]
rbtree => ["0.4.6"]
redis => ["5.0.6", "4.8.1", "3.3.5"]
redis-client => ["0.14.0"]
redis-namespace => ["1.10.0"]
resque => ["2.5.0", "2.2.1", "1.27.4"]
rexml => ["3.2.5"]
ruby2_keywords => ["0.0.5"]
sequel => ["5.66.0", "5.58.0"]
set => ["1.0.3"]
sidekiq => ["7.0.7", "6.4.2", "5.0.5", "4.2.10"]
sinatra => ["3.0.5", "2.1.0", "1.4.8", "2.2.4", "2.0.8.1"]
sorted_set => ["1.0.3"]
sprockets => ["4.2.0"]
sprockets-rails => ["3.4.2"]
sqlite3 => ["1.4.4", "1.6.1-x86_64-darwin"]
sshkit => ["1.16.0"]
stringio => ["3.0.5"]
temple => ["0.10.0"]
thor => ["1.2.1"]
thread_safe => ["0.3.6"]
tilt => ["2.1.0"]
timeout => ["0.3.2"]
typhoeus => ["1.4.0", "1.3.1"]
tzinfo => ["2.0.6", "1.2.11"]
unf => ["0.1.4"]
unf_ext => ["0.0.8.2"]
unicorn => ["6.1.0", "4.9.0"]
vegas => ["0.1.11"]
websocket-driver => ["0.7.5"]
websocket-extensions => ["0.1.5"]
yajl-ruby => ["1.4.3", "1.3.1", "1.2.3"]
zeitwerk => ["2.6.7"]

The `test:multiverse:gem_manifest` rake task has been sped up so that it
instead of taking ~2.5 minutes, it'll only take ~3.5 seconds.

This speedup is achieved by not concerning ourselves with twiddle wakka
based versions that we are already aware of (considering them to be
specific enough already) and simply taking a single trip to RubyGems.org
via Bundler in order to fetch all of the "latest" version numbers for
each core tech gem.
@github-actions
Copy link
Contributor

SimpleCov Report

Coverage Threshold
Line 93.94% 93%
Branch 85.36% 85%

@fallwith fallwith merged commit 37d0720 into dev Mar 20, 2023
@fallwith fallwith deleted the sparkling_green_tea branch March 20, 2023 22:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant