rubygems-update 3.1.2 → 3.2.6
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/{History.txt → CHANGELOG.md} +756 -489
- data/CODE_OF_CONDUCT.md +55 -19
- data/CONTRIBUTING.md +25 -11
- data/Manifest.txt +75 -104
- data/POLICIES.md +6 -12
- data/README.md +5 -5
- data/Rakefile +64 -92
- data/bin/update_rubygems +1 -1
- data/bundler/CHANGELOG.md +1636 -1422
- data/bundler/README.md +6 -8
- data/bundler/UPGRADING.md +18 -32
- data/bundler/bundler.gemspec +4 -4
- data/bundler/exe/bundle +3 -0
- data/bundler/lib/bundler.rb +32 -8
- data/bundler/lib/bundler/build_metadata.rb +4 -12
- data/bundler/lib/bundler/cli.rb +55 -21
- data/bundler/lib/bundler/cli/add.rb +1 -1
- data/bundler/lib/bundler/cli/binstubs.rb +6 -2
- data/bundler/lib/bundler/cli/cache.rb +1 -7
- data/bundler/lib/bundler/cli/clean.rb +1 -1
- data/bundler/lib/bundler/cli/common.rb +14 -0
- data/bundler/lib/bundler/cli/console.rb +1 -1
- data/bundler/lib/bundler/cli/doctor.rb +1 -1
- data/bundler/lib/bundler/cli/exec.rb +4 -4
- data/bundler/lib/bundler/cli/fund.rb +36 -0
- data/bundler/lib/bundler/cli/gem.rb +86 -11
- data/bundler/lib/bundler/cli/info.rb +15 -4
- data/bundler/lib/bundler/cli/init.rb +2 -2
- data/bundler/lib/bundler/cli/inject.rb +1 -1
- data/bundler/lib/bundler/cli/install.rb +16 -13
- data/bundler/lib/bundler/cli/issue.rb +2 -2
- data/bundler/lib/bundler/cli/list.rb +12 -10
- data/bundler/lib/bundler/cli/outdated.rb +87 -66
- data/bundler/lib/bundler/cli/plugin.rb +10 -0
- data/bundler/lib/bundler/cli/pristine.rb +5 -0
- data/bundler/lib/bundler/cli/show.rb +1 -1
- data/bundler/lib/bundler/cli/update.rb +3 -1
- data/bundler/lib/bundler/compact_index_client.rb +1 -1
- data/bundler/lib/bundler/compact_index_client/cache.rb +6 -14
- data/bundler/lib/bundler/compact_index_client/gem_parser.rb +28 -0
- data/bundler/lib/bundler/compact_index_client/updater.rb +5 -13
- data/bundler/lib/bundler/definition.rb +66 -82
- data/bundler/lib/bundler/dep_proxy.rb +16 -9
- data/bundler/lib/bundler/dependency.rb +3 -10
- data/bundler/lib/bundler/dsl.rb +5 -9
- data/bundler/lib/bundler/endpoint_specification.rb +1 -1
- data/bundler/lib/bundler/env.rb +1 -1
- data/bundler/lib/bundler/environment_preserver.rb +26 -2
- data/bundler/lib/bundler/errors.rb +1 -0
- data/bundler/lib/bundler/feature_flag.rb +0 -3
- data/bundler/lib/bundler/fetcher.rb +4 -3
- data/bundler/lib/bundler/fetcher/base.rb +1 -1
- data/bundler/lib/bundler/fetcher/compact_index.rb +1 -1
- data/bundler/lib/bundler/fetcher/downloader.rb +1 -1
- data/bundler/lib/bundler/fetcher/index.rb +3 -4
- data/bundler/lib/bundler/friendly_errors.rb +22 -13
- data/bundler/lib/bundler/gem_helper.rb +33 -19
- data/bundler/lib/bundler/gem_helpers.rb +36 -25
- data/bundler/lib/bundler/gem_version_promoter.rb +4 -4
- data/bundler/lib/bundler/graph.rb +1 -1
- data/bundler/lib/bundler/index.rb +6 -2
- data/bundler/lib/bundler/injector.rb +22 -4
- data/bundler/lib/bundler/inline.rb +2 -2
- data/bundler/lib/bundler/installer.rb +35 -32
- data/bundler/lib/bundler/installer/gem_installer.rb +3 -3
- data/bundler/lib/bundler/installer/parallel_installer.rb +10 -10
- data/bundler/lib/bundler/installer/standalone.rb +2 -2
- data/bundler/lib/bundler/lazy_specification.rb +35 -11
- data/bundler/lib/bundler/lockfile_generator.rb +1 -1
- data/bundler/lib/bundler/lockfile_parser.rb +1 -1
- data/bundler/lib/bundler/man/.document +1 -0
- data/bundler/{man → lib/bundler/man}/bundle-add.1 +1 -1
- data/bundler/{man/bundle-add.ronn → lib/bundler/man/bundle-add.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-binstubs.1 +5 -3
- data/bundler/{man/bundle-binstubs.ronn → lib/bundler/man/bundle-binstubs.1.ronn} +2 -4
- data/bundler/{man → lib/bundler/man}/bundle-cache.1 +1 -1
- data/bundler/{man/bundle-cache.ronn → lib/bundler/man/bundle-cache.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-check.1 +1 -1
- data/bundler/{man/bundle-check.ronn → lib/bundler/man/bundle-check.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-clean.1 +1 -1
- data/bundler/{man/bundle-clean.ronn → lib/bundler/man/bundle-clean.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-config.1 +16 -25
- data/bundler/{man/bundle-config.ronn → lib/bundler/man/bundle-config.1.ronn} +19 -30
- data/bundler/{man → lib/bundler/man}/bundle-doctor.1 +1 -1
- data/bundler/{man/bundle-doctor.ronn → lib/bundler/man/bundle-doctor.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-exec.1 +1 -1
- data/bundler/{man/bundle-exec.ronn → lib/bundler/man/bundle-exec.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-gem.1 +25 -3
- data/bundler/{man/bundle-gem.ronn → lib/bundler/man/bundle-gem.1.ronn} +30 -7
- data/bundler/{man → lib/bundler/man}/bundle-info.1 +1 -1
- data/bundler/{man/bundle-info.ronn → lib/bundler/man/bundle-info.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-init.1 +1 -1
- data/bundler/{man/bundle-init.ronn → lib/bundler/man/bundle-init.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-inject.1 +1 -1
- data/bundler/{man/bundle-inject.ronn → lib/bundler/man/bundle-inject.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-install.1 +30 -3
- data/bundler/{man/bundle-install.ronn → lib/bundler/man/bundle-install.1.ronn} +25 -3
- data/bundler/{man → lib/bundler/man}/bundle-list.1 +7 -7
- data/bundler/{man/bundle-list.ronn → lib/bundler/man/bundle-list.1.ronn} +6 -6
- data/bundler/{man → lib/bundler/man}/bundle-lock.1 +1 -1
- data/bundler/{man/bundle-lock.ronn → lib/bundler/man/bundle-lock.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-open.1 +1 -1
- data/bundler/{man/bundle-open.ronn → lib/bundler/man/bundle-open.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-outdated.1 +1 -1
- data/bundler/{man/bundle-outdated.ronn → lib/bundler/man/bundle-outdated.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-platform.1 +1 -1
- data/bundler/{man/bundle-platform.ronn → lib/bundler/man/bundle-platform.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-pristine.1 +1 -1
- data/bundler/{man/bundle-pristine.ronn → lib/bundler/man/bundle-pristine.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-remove.1 +1 -1
- data/bundler/{man/bundle-remove.ronn → lib/bundler/man/bundle-remove.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-show.1 +1 -1
- data/bundler/{man/bundle-show.ronn → lib/bundler/man/bundle-show.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-update.1 +1 -1
- data/bundler/{man/bundle-update.ronn → lib/bundler/man/bundle-update.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle-viz.1 +1 -1
- data/bundler/{man/bundle-viz.ronn → lib/bundler/man/bundle-viz.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/bundle.1 +1 -1
- data/bundler/{man/bundle.ronn → lib/bundler/man/bundle.1.ronn} +0 -0
- data/bundler/{man → lib/bundler/man}/gemfile.5 +4 -4
- data/bundler/{man → lib/bundler/man}/gemfile.5.ronn +4 -4
- data/bundler/{man → lib/bundler/man}/index.txt +0 -0
- data/bundler/lib/bundler/mirror.rb +2 -2
- data/bundler/lib/bundler/plugin.rb +30 -5
- data/bundler/lib/bundler/plugin/api/source.rb +1 -1
- data/bundler/lib/bundler/plugin/dsl.rb +1 -1
- data/bundler/lib/bundler/plugin/index.rb +10 -1
- data/bundler/lib/bundler/plugin/installer.rb +1 -1
- data/bundler/lib/bundler/plugin/installer/rubygems.rb +1 -1
- data/bundler/lib/bundler/plugin/source_list.rb +1 -1
- data/bundler/lib/bundler/psyched_yaml.rb +0 -15
- data/bundler/lib/bundler/remote_specification.rb +5 -2
- data/bundler/lib/bundler/resolver.rb +43 -19
- data/bundler/lib/bundler/resolver/spec_group.rb +39 -24
- data/bundler/lib/bundler/retry.rb +1 -1
- data/bundler/lib/bundler/ruby_version.rb +1 -1
- data/bundler/lib/bundler/rubygems_ext.rb +69 -9
- data/bundler/lib/bundler/rubygems_gem_installer.rb +3 -9
- data/bundler/lib/bundler/rubygems_integration.rb +26 -61
- data/bundler/lib/bundler/runtime.rb +4 -14
- data/bundler/lib/bundler/settings.rb +49 -46
- data/bundler/lib/bundler/shared_helpers.rb +2 -2
- data/bundler/lib/bundler/similarity_detector.rb +1 -1
- data/bundler/lib/bundler/source.rb +1 -1
- data/bundler/lib/bundler/source/git.rb +23 -21
- data/bundler/lib/bundler/source/git/git_proxy.rb +82 -80
- data/bundler/lib/bundler/source/path.rb +7 -3
- data/bundler/lib/bundler/source/path/installer.rb +10 -10
- data/bundler/lib/bundler/source/rubygems.rb +23 -17
- data/bundler/lib/bundler/source/rubygems/remote.rb +1 -1
- data/bundler/lib/bundler/source_list.rb +2 -2
- data/bundler/lib/bundler/spec_set.rb +8 -10
- data/bundler/lib/bundler/stub_specification.rb +17 -7
- data/bundler/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +57 -47
- data/bundler/lib/bundler/templates/newgem/Gemfile.tt +9 -1
- data/bundler/lib/bundler/templates/newgem/README.md.tt +1 -2
- data/bundler/lib/bundler/templates/newgem/Rakefile.tt +19 -5
- data/bundler/lib/bundler/templates/newgem/bin/console.tt +1 -0
- data/bundler/lib/bundler/templates/newgem/circleci/config.yml.tt +13 -0
- data/bundler/lib/bundler/templates/newgem/ext/newgem/extconf.rb.tt +2 -0
- data/bundler/lib/bundler/templates/newgem/github/workflows/main.yml.tt +18 -0
- data/bundler/lib/bundler/templates/newgem/gitlab-ci.yml.tt +9 -0
- data/bundler/lib/bundler/templates/newgem/lib/newgem.rb.tt +4 -2
- data/bundler/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +2 -0
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +15 -7
- data/bundler/lib/bundler/templates/newgem/rubocop.yml.tt +13 -0
- data/bundler/lib/bundler/templates/newgem/spec/newgem_spec.rb.tt +2 -0
- data/bundler/lib/bundler/templates/newgem/spec/spec_helper.rb.tt +2 -1
- data/bundler/lib/bundler/templates/newgem/test/{newgem_test.rb.tt → minitest/newgem_test.rb.tt} +2 -0
- data/bundler/lib/bundler/templates/newgem/test/{test_helper.rb.tt → minitest/test_helper.rb.tt} +2 -0
- data/bundler/lib/bundler/templates/newgem/test/test-unit/newgem_test.rb.tt +15 -0
- data/bundler/lib/bundler/templates/newgem/test/test-unit/test_helper.rb.tt +6 -0
- data/bundler/lib/bundler/ui/shell.rb +5 -5
- data/bundler/lib/bundler/uri_credentials_filter.rb +3 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo.rb +0 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph.rb +34 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/dependency_graph/tag.rb +2 -2
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/errors.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/gem_metadata.rb +1 -1
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/resolution.rb +48 -46
- data/bundler/lib/bundler/vendor/net-http-persistent/lib/net/http/persistent.rb +79 -208
- data/bundler/lib/bundler/vendor/thor/lib/thor.rb +0 -7
- data/bundler/lib/bundler/vendor/thor/lib/thor/actions/create_link.rb +2 -1
- data/bundler/lib/bundler/vendor/thor/lib/thor/base.rb +9 -0
- data/bundler/lib/bundler/vendor/thor/lib/thor/version.rb +1 -1
- data/bundler/lib/bundler/vendor/tmpdir/lib/tmpdir.rb +154 -0
- data/bundler/lib/bundler/vendored_persistent.rb +0 -7
- data/bundler/lib/bundler/vendored_tmpdir.rb +4 -0
- data/bundler/lib/bundler/version.rb +1 -1
- data/bundler/lib/bundler/worker.rb +1 -1
- data/bundler/lib/bundler/yaml_serializer.rb +1 -1
- data/lib/rubygems.rb +138 -187
- data/lib/rubygems/available_set.rb +4 -6
- data/lib/rubygems/basic_specification.rb +12 -10
- data/lib/rubygems/bundler_version_finder.rb +14 -9
- data/lib/rubygems/command.rb +17 -17
- data/lib/rubygems/command_manager.rb +5 -6
- data/lib/rubygems/commands/build_command.rb +40 -20
- data/lib/rubygems/commands/cert_command.rb +2 -10
- data/lib/rubygems/commands/check_command.rb +0 -2
- data/lib/rubygems/commands/cleanup_command.rb +11 -7
- data/lib/rubygems/commands/contents_command.rb +4 -6
- data/lib/rubygems/commands/dependency_command.rb +6 -8
- data/lib/rubygems/commands/environment_command.rb +1 -3
- data/lib/rubygems/commands/fetch_command.rb +2 -4
- data/lib/rubygems/commands/generate_index_command.rb +0 -2
- data/lib/rubygems/commands/help_command.rb +4 -4
- data/lib/rubygems/commands/info_command.rb +8 -5
- data/lib/rubygems/commands/install_command.rb +3 -5
- data/lib/rubygems/commands/list_command.rb +8 -7
- data/lib/rubygems/commands/lock_command.rb +1 -3
- data/lib/rubygems/commands/mirror_command.rb +0 -2
- data/lib/rubygems/commands/open_command.rb +0 -4
- data/lib/rubygems/commands/outdated_command.rb +0 -2
- data/lib/rubygems/commands/owner_command.rb +9 -4
- data/lib/rubygems/commands/pristine_command.rb +11 -5
- data/lib/rubygems/commands/push_command.rb +10 -47
- data/lib/rubygems/commands/query_command.rb +14 -344
- data/lib/rubygems/commands/rdoc_command.rb +0 -2
- data/lib/rubygems/commands/search_command.rb +7 -7
- data/lib/rubygems/commands/server_command.rb +3 -1
- data/lib/rubygems/commands/setup_command.rb +101 -74
- data/lib/rubygems/commands/signin_command.rb +0 -2
- data/lib/rubygems/commands/signout_command.rb +0 -2
- data/lib/rubygems/commands/sources_command.rb +9 -7
- data/lib/rubygems/commands/specification_command.rb +8 -4
- data/lib/rubygems/commands/stale_command.rb +1 -3
- data/lib/rubygems/commands/uninstall_command.rb +2 -4
- data/lib/rubygems/commands/unpack_command.rb +1 -3
- data/lib/rubygems/commands/update_command.rb +59 -14
- data/lib/rubygems/commands/which_command.rb +0 -2
- data/lib/rubygems/commands/yank_command.rb +4 -7
- data/lib/rubygems/config_file.rb +11 -4
- data/lib/rubygems/core_ext/kernel_require.rb +29 -36
- data/lib/rubygems/core_ext/kernel_warn.rb +12 -13
- data/lib/rubygems/defaults.rb +101 -7
- data/lib/rubygems/dependency.rb +3 -8
- data/lib/rubygems/dependency_installer.rb +6 -78
- data/lib/rubygems/dependency_list.rb +7 -9
- data/lib/rubygems/deprecate.rb +46 -1
- data/lib/rubygems/doctor.rb +4 -4
- data/lib/rubygems/errors.rb +3 -14
- data/lib/rubygems/exceptions.rb +2 -33
- data/lib/rubygems/ext.rb +6 -6
- data/lib/rubygems/ext/build_error.rb +2 -0
- data/lib/rubygems/ext/builder.rb +21 -39
- data/lib/rubygems/ext/cmake_builder.rb +6 -9
- data/lib/rubygems/ext/configure_builder.rb +5 -8
- data/lib/rubygems/ext/ext_conf_builder.rb +21 -19
- data/lib/rubygems/ext/rake_builder.rb +4 -6
- data/lib/rubygems/gem_runner.rb +3 -10
- data/lib/rubygems/gemcutter_utilities.rb +102 -21
- data/lib/rubygems/indexer.rb +1 -22
- data/lib/rubygems/install_update_options.rb +7 -7
- data/lib/rubygems/installer.rb +59 -80
- data/lib/rubygems/installer_test_case.rb +25 -11
- data/lib/rubygems/installer_uninstaller_utils.rb +24 -0
- data/lib/rubygems/local_remote_options.rb +1 -1
- data/lib/rubygems/mock_gem_ui.rb +0 -6
- data/lib/rubygems/name_tuple.rb +3 -7
- data/lib/rubygems/openssl.rb +7 -0
- data/lib/rubygems/package.rb +14 -25
- data/lib/rubygems/package/digest_io.rb +0 -2
- data/lib/rubygems/package/file_source.rb +0 -2
- data/lib/rubygems/package/io_source.rb +0 -2
- data/lib/rubygems/package/old.rb +1 -3
- data/lib/rubygems/package/tar_header.rb +4 -6
- data/lib/rubygems/package/tar_reader.rb +0 -3
- data/lib/rubygems/package/tar_reader/entry.rb +0 -3
- data/lib/rubygems/package/tar_test_case.rb +2 -4
- data/lib/rubygems/package/tar_writer.rb +2 -12
- data/lib/rubygems/package_task.rb +1 -7
- data/lib/rubygems/path_support.rb +1 -3
- data/lib/rubygems/platform.rb +21 -16
- data/lib/rubygems/psych_tree.rb +0 -2
- data/lib/rubygems/query_utils.rb +353 -0
- data/lib/rubygems/rdoc.rb +0 -12
- data/lib/rubygems/remote_fetcher.rb +14 -29
- data/lib/rubygems/request.rb +4 -11
- data/lib/rubygems/request/connection_pools.rb +1 -5
- data/lib/rubygems/request/http_pool.rb +0 -2
- data/lib/rubygems/request/https_pool.rb +0 -2
- data/lib/rubygems/request_set.rb +7 -20
- data/lib/rubygems/request_set/gem_dependency_api.rb +6 -8
- data/lib/rubygems/request_set/lockfile.rb +8 -12
- data/lib/rubygems/request_set/lockfile/parser.rb +0 -2
- data/lib/rubygems/request_set/lockfile/tokenizer.rb +1 -3
- data/lib/rubygems/requirement.rb +21 -22
- data/lib/rubygems/resolver.rb +14 -12
- data/lib/rubygems/resolver/activation_request.rb +9 -3
- data/lib/rubygems/resolver/api_set.rb +31 -24
- data/lib/rubygems/resolver/api_set/gem_parser.rb +20 -0
- data/lib/rubygems/resolver/api_specification.rb +24 -10
- data/lib/rubygems/resolver/best_set.rb +2 -4
- data/lib/rubygems/resolver/composed_set.rb +3 -5
- data/lib/rubygems/resolver/conflict.rb +2 -4
- data/lib/rubygems/resolver/current_set.rb +0 -2
- data/lib/rubygems/resolver/dependency_request.rb +1 -3
- data/lib/rubygems/resolver/git_set.rb +0 -2
- data/lib/rubygems/resolver/git_specification.rb +0 -2
- data/lib/rubygems/resolver/index_set.rb +1 -3
- data/lib/rubygems/resolver/index_specification.rb +29 -2
- data/lib/rubygems/resolver/installed_specification.rb +0 -2
- data/lib/rubygems/resolver/installer_set.rb +60 -13
- data/lib/rubygems/resolver/local_specification.rb +0 -2
- data/lib/rubygems/resolver/lock_set.rb +2 -4
- data/lib/rubygems/resolver/lock_specification.rb +0 -2
- data/lib/rubygems/resolver/molinillo/lib/molinillo.rb +6 -5
- data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/resolution_state.rb +7 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/delegates/specification_provider.rb +1 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph.rb +39 -5
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/action.rb +1 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_edge_no_circular.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/add_vertex.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/delete_edge.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/detach_vertex_named.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/log.rb +7 -6
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/set_payload.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/tag.rb +4 -3
- data/lib/rubygems/resolver/molinillo/lib/molinillo/dependency_graph/vertex.rb +43 -10
- data/lib/rubygems/resolver/molinillo/lib/molinillo/errors.rb +75 -7
- data/lib/rubygems/resolver/molinillo/lib/molinillo/gem_metadata.rb +2 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/specification_provider.rb +1 -0
- data/lib/rubygems/resolver/molinillo/lib/molinillo/modules/ui.rb +3 -1
- data/lib/rubygems/resolver/molinillo/lib/molinillo/resolution.rb +506 -165
- data/lib/rubygems/resolver/molinillo/lib/molinillo/resolver.rb +3 -2
- data/lib/rubygems/resolver/molinillo/lib/molinillo/state.rb +8 -4
- data/lib/rubygems/resolver/requirement_list.rb +0 -2
- data/lib/rubygems/resolver/set.rb +0 -2
- data/lib/rubygems/resolver/source_set.rb +0 -2
- data/lib/rubygems/resolver/spec_specification.rb +14 -2
- data/lib/rubygems/resolver/specification.rb +13 -3
- data/lib/rubygems/resolver/stats.rb +0 -2
- data/lib/rubygems/resolver/vendor_set.rb +0 -2
- data/lib/rubygems/resolver/vendor_specification.rb +0 -2
- data/lib/rubygems/s3_uri_signer.rb +2 -8
- data/lib/rubygems/safe_yaml.rb +4 -4
- data/lib/rubygems/security.rb +27 -34
- data/lib/rubygems/security/policy.rb +4 -8
- data/lib/rubygems/security/signer.rb +5 -7
- data/lib/rubygems/security/trust_dir.rb +1 -3
- data/lib/rubygems/server.rb +16 -13
- data/lib/rubygems/source.rb +23 -12
- data/lib/rubygems/source/git.rb +7 -8
- data/lib/rubygems/source/installed.rb +0 -2
- data/lib/rubygems/source/local.rb +2 -4
- data/lib/rubygems/source/lock.rb +0 -2
- data/lib/rubygems/source/specific_file.rb +0 -2
- data/lib/rubygems/source/vendor.rb +0 -2
- data/lib/rubygems/source_list.rb +4 -7
- data/lib/rubygems/spec_fetcher.rb +19 -18
- data/lib/rubygems/specification.rb +122 -131
- data/lib/rubygems/specification_policy.rb +88 -30
- data/lib/rubygems/ssl_certs/{index.rubygems.org → rubygems.org}/GlobalSignRootCA.pem +0 -0
- data/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem +21 -0
- data/lib/rubygems/stub_specification.rb +1 -5
- data/lib/rubygems/syck_hack.rb +0 -2
- data/lib/rubygems/test_case.rb +120 -134
- data/lib/rubygems/test_utilities.rb +12 -19
- data/lib/rubygems/uninstaller.rb +35 -16
- data/lib/rubygems/uri_formatter.rb +2 -3
- data/lib/rubygems/uri_parser.rb +0 -2
- data/lib/rubygems/user_interaction.rb +1 -26
- data/lib/rubygems/util.rb +15 -3
- data/lib/rubygems/util/licenses.rb +4 -6
- data/lib/rubygems/util/list.rb +0 -2
- data/lib/rubygems/validator.rb +1 -3
- data/lib/rubygems/version.rb +5 -7
- data/lib/rubygems/version_option.rb +6 -0
- data/rubygems-update.gemspec +3 -3
- data/setup.rb +2 -7
- data/test/rubygems/data/null-required-rubygems-version.gemspec.rz +0 -0
- data/test/rubygems/plugin/load/rubygems_plugin.rb +0 -2
- data/test/rubygems/rubygems/commands/crash_command.rb +0 -2
- data/test/rubygems/rubygems_plugin.rb +0 -2
- data/test/rubygems/specifications/bar-0.0.2.gemspec +0 -2
- data/test/rubygems/specifications/rubyforge-0.0.1.gemspec +12 -0
- data/test/rubygems/test_bundled_ca.rb +42 -45
- data/test/rubygems/test_config.rb +0 -2
- data/test/rubygems/test_deprecate.rb +40 -7
- data/test/rubygems/test_gem.rb +156 -99
- data/test/rubygems/test_gem_available_set.rb +3 -5
- data/test/rubygems/test_gem_bundler_version_finder.rb +19 -3
- data/test/rubygems/test_gem_command.rb +24 -7
- data/test/rubygems/test_gem_command_manager.rb +36 -5
- data/test/rubygems/test_gem_commands_build_command.rb +250 -15
- data/test/rubygems/test_gem_commands_cert_command.rb +4 -6
- data/test/rubygems/test_gem_commands_check_command.rb +0 -2
- data/test/rubygems/test_gem_commands_cleanup_command.rb +14 -5
- data/test/rubygems/test_gem_commands_contents_command.rb +50 -19
- data/test/rubygems/test_gem_commands_dependency_command.rb +0 -2
- data/test/rubygems/test_gem_commands_environment_command.rb +21 -23
- data/test/rubygems/test_gem_commands_fetch_command.rb +0 -2
- data/test/rubygems/test_gem_commands_generate_index_command.rb +1 -7
- data/test/rubygems/test_gem_commands_help_command.rb +15 -4
- data/test/rubygems/test_gem_commands_info_command.rb +6 -8
- data/test/rubygems/test_gem_commands_install_command.rb +163 -34
- data/test/rubygems/test_gem_commands_list_command.rb +0 -2
- data/test/rubygems/test_gem_commands_lock_command.rb +0 -2
- data/test/rubygems/test_gem_commands_mirror.rb +1 -3
- data/test/rubygems/test_gem_commands_open_command.rb +4 -6
- data/test/rubygems/test_gem_commands_outdated_command.rb +0 -2
- data/test/rubygems/test_gem_commands_owner_command.rb +59 -5
- data/test/rubygems/test_gem_commands_pristine_command.rb +43 -12
- data/test/rubygems/test_gem_commands_push_command.rb +77 -9
- data/test/rubygems/test_gem_commands_query_command.rb +12 -12
- data/test/rubygems/test_gem_commands_search_command.rb +0 -2
- data/test/rubygems/test_gem_commands_server_command.rb +0 -2
- data/test/rubygems/test_gem_commands_setup_command.rb +160 -135
- data/test/rubygems/test_gem_commands_signin_command.rb +33 -9
- data/test/rubygems/test_gem_commands_signout_command.rb +0 -7
- data/test/rubygems/test_gem_commands_sources_command.rb +99 -3
- data/test/rubygems/test_gem_commands_specification_command.rb +46 -20
- data/test/rubygems/test_gem_commands_stale_command.rb +0 -2
- data/test/rubygems/test_gem_commands_uninstall_command.rb +2 -3
- data/test/rubygems/test_gem_commands_unpack_command.rb +0 -2
- data/test/rubygems/test_gem_commands_update_command.rb +116 -7
- data/test/rubygems/test_gem_commands_which_command.rb +3 -5
- data/test/rubygems/test_gem_commands_yank_command.rb +44 -8
- data/test/rubygems/test_gem_config_file.rb +7 -12
- data/test/rubygems/test_gem_dependency.rb +0 -2
- data/test/rubygems/test_gem_dependency_installer.rb +116 -239
- data/test/rubygems/test_gem_dependency_list.rb +10 -12
- data/test/rubygems/test_gem_dependency_resolution_error.rb +1 -3
- data/test/rubygems/test_gem_doctor.rb +28 -2
- data/test/rubygems/test_gem_ext_builder.rb +50 -47
- data/test/rubygems/test_gem_ext_cmake_builder.rb +16 -25
- data/test/rubygems/test_gem_ext_configure_builder.rb +6 -22
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +9 -29
- data/test/rubygems/test_gem_ext_rake_builder.rb +39 -24
- data/test/rubygems/test_gem_gem_runner.rb +44 -1
- data/test/rubygems/test_gem_gemcutter_utilities.rb +8 -5
- data/test/rubygems/test_gem_impossible_dependencies_error.rb +0 -2
- data/test/rubygems/test_gem_indexer.rb +9 -15
- data/test/rubygems/test_gem_install_update_options.rb +14 -4
- data/test/rubygems/test_gem_installer.rb +258 -115
- data/test/rubygems/test_gem_local_remote_options.rb +0 -2
- data/test/rubygems/test_gem_name_tuple.rb +0 -2
- data/test/rubygems/test_gem_package.rb +41 -39
- data/test/rubygems/test_gem_package_old.rb +4 -6
- data/test/rubygems/test_gem_package_tar_header.rb +18 -1
- data/test/rubygems/test_gem_package_tar_reader.rb +0 -2
- data/test/rubygems/test_gem_package_tar_reader_entry.rb +0 -2
- data/test/rubygems/test_gem_package_tar_writer.rb +9 -6
- data/test/rubygems/test_gem_package_task.rb +46 -13
- data/test/rubygems/test_gem_path_support.rb +0 -2
- data/test/rubygems/test_gem_platform.rb +71 -6
- data/test/rubygems/test_gem_rdoc.rb +0 -2
- data/test/rubygems/test_gem_remote_fetcher.rb +169 -212
- data/test/rubygems/test_gem_request.rb +13 -17
- data/test/rubygems/test_gem_request_connection_pools.rb +0 -4
- data/test/rubygems/test_gem_request_set.rb +72 -22
- data/test/rubygems/test_gem_request_set_gem_dependency_api.rb +3 -5
- data/test/rubygems/test_gem_request_set_lockfile.rb +4 -6
- data/test/rubygems/test_gem_request_set_lockfile_parser.rb +9 -11
- data/test/rubygems/test_gem_request_set_lockfile_tokenizer.rb +118 -120
- data/test/rubygems/test_gem_requirement.rb +43 -3
- data/test/rubygems/test_gem_resolver.rb +6 -8
- data/test/rubygems/test_gem_resolver_activation_request.rb +0 -2
- data/test/rubygems/test_gem_resolver_api_set.rb +60 -59
- data/test/rubygems/test_gem_resolver_api_specification.rb +3 -5
- data/test/rubygems/test_gem_resolver_best_set.rb +27 -6
- data/test/rubygems/test_gem_resolver_composed_set.rb +0 -2
- data/test/rubygems/test_gem_resolver_conflict.rb +1 -3
- data/test/rubygems/test_gem_resolver_dependency_request.rb +0 -2
- data/test/rubygems/test_gem_resolver_git_set.rb +0 -2
- data/test/rubygems/test_gem_resolver_git_specification.rb +0 -2
- data/test/rubygems/test_gem_resolver_index_set.rb +2 -4
- data/test/rubygems/test_gem_resolver_index_specification.rb +0 -2
- data/test/rubygems/test_gem_resolver_installed_specification.rb +0 -2
- data/test/rubygems/test_gem_resolver_installer_set.rb +7 -9
- data/test/rubygems/test_gem_resolver_local_specification.rb +0 -2
- data/test/rubygems/test_gem_resolver_lock_set.rb +3 -5
- data/test/rubygems/test_gem_resolver_lock_specification.rb +0 -2
- data/test/rubygems/test_gem_resolver_requirement_list.rb +0 -2
- data/test/rubygems/test_gem_resolver_specification.rb +0 -4
- data/test/rubygems/test_gem_resolver_vendor_set.rb +1 -3
- data/test/rubygems/test_gem_resolver_vendor_specification.rb +0 -2
- data/test/rubygems/test_gem_security.rb +22 -24
- data/test/rubygems/test_gem_security_policy.rb +7 -12
- data/test/rubygems/test_gem_security_signer.rb +10 -12
- data/test/rubygems/test_gem_security_trust_dir.rb +4 -6
- data/test/rubygems/test_gem_server.rb +10 -14
- data/test/rubygems/test_gem_silent_ui.rb +0 -2
- data/test/rubygems/test_gem_source.rb +19 -18
- data/test/rubygems/test_gem_source_fetch_problem.rb +0 -2
- data/test/rubygems/test_gem_source_git.rb +12 -13
- data/test/rubygems/test_gem_source_installed.rb +7 -9
- data/test/rubygems/test_gem_source_list.rb +1 -2
- data/test/rubygems/test_gem_source_local.rb +8 -10
- data/test/rubygems/test_gem_source_lock.rb +10 -12
- data/test/rubygems/test_gem_source_specific_file.rb +7 -9
- data/test/rubygems/test_gem_source_subpath_problem.rb +49 -0
- data/test/rubygems/test_gem_source_vendor.rb +7 -9
- data/test/rubygems/test_gem_spec_fetcher.rb +11 -4
- data/test/rubygems/test_gem_specification.rb +188 -131
- data/test/rubygems/test_gem_stream_ui.rb +3 -3
- data/test/rubygems/test_gem_stub_specification.rb +4 -7
- data/test/rubygems/test_gem_text.rb +1 -3
- data/test/rubygems/test_gem_uninstaller.rb +134 -12
- data/test/rubygems/test_gem_unsatisfiable_dependency_error.rb +0 -2
- data/test/rubygems/test_gem_uri_formatter.rb +0 -2
- data/test/rubygems/test_gem_util.rb +7 -7
- data/test/rubygems/test_gem_validator.rb +1 -3
- data/test/rubygems/test_gem_version.rb +1 -3
- data/test/rubygems/test_gem_version_option.rb +1 -3
- data/test/rubygems/test_kernel.rb +25 -10
- data/test/rubygems/test_project_sanity.rb +7 -2
- data/test/rubygems/test_remote_fetch_error.rb +0 -2
- data/test/rubygems/test_require.rb +291 -56
- data/test/test_changelog_generator.rb +17 -0
- metadata +79 -133
- data/.bundle/config +0 -2
- data/.rubocop.yml +0 -91
- data/Gemfile +0 -8
- data/Gemfile.lock +0 -43
- data/bundler/CODE_OF_CONDUCT.md +0 -136
- data/bundler/lib/bundler/vendor/molinillo/lib/molinillo/compatibility.rb +0 -26
- data/bundler/man/bundle-add.1.txt +0 -58
- data/bundler/man/bundle-binstubs.1.txt +0 -48
- data/bundler/man/bundle-cache.1.txt +0 -78
- data/bundler/man/bundle-check.1.txt +0 -33
- data/bundler/man/bundle-clean.1.txt +0 -26
- data/bundler/man/bundle-config.1.txt +0 -528
- data/bundler/man/bundle-doctor.1.txt +0 -44
- data/bundler/man/bundle-exec.1.txt +0 -178
- data/bundler/man/bundle-gem.1.txt +0 -91
- data/bundler/man/bundle-info.1.txt +0 -21
- data/bundler/man/bundle-init.1.txt +0 -34
- data/bundler/man/bundle-inject.1.txt +0 -32
- data/bundler/man/bundle-install.1.txt +0 -401
- data/bundler/man/bundle-list.1.txt +0 -43
- data/bundler/man/bundle-lock.1.txt +0 -93
- data/bundler/man/bundle-open.1.txt +0 -29
- data/bundler/man/bundle-outdated.1.txt +0 -131
- data/bundler/man/bundle-platform.1.txt +0 -57
- data/bundler/man/bundle-pristine.1.txt +0 -44
- data/bundler/man/bundle-remove.1.txt +0 -34
- data/bundler/man/bundle-show.1.txt +0 -27
- data/bundler/man/bundle-update.1.txt +0 -390
- data/bundler/man/bundle-viz.1.txt +0 -39
- data/bundler/man/bundle.1.txt +0 -116
- data/bundler/man/gemfile.5.txt +0 -649
- data/lib/rubygems/source_local.rb +0 -7
- data/lib/rubygems/source_specific_file.rb +0 -6
- data/lib/rubygems/ssl_certs/rubygems.global.ssl.fastly.net/DigiCertHighAssuranceEVRootCA.pem +0 -23
- data/lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot.pem +0 -25
- data/lib/ubygems.rb +0 -14
- data/tmp/.keep +0 -0
- data/util/CL2notes +0 -55
- data/util/bisect +0 -10
- data/util/ci.sh +0 -62
- data/util/cops/deprecations.rb +0 -52
- data/util/create_certs.rb +0 -171
- data/util/create_certs.sh +0 -27
- data/util/create_encrypted_key.rb +0 -16
- data/util/generate_spdx_license_list.rb +0 -63
- data/util/patch_with_prs.rb +0 -77
- data/util/rubocop +0 -8
- data/util/update_bundled_ca_certificates.rb +0 -139
- data/util/update_changelog.rb +0 -67
@@ -3,11 +3,6 @@ require_relative '../../../../uri/lib/uri'
|
|
3
3
|
require 'cgi' # for escaping
|
4
4
|
require_relative '../../../../connection_pool/lib/connection_pool'
|
5
5
|
|
6
|
-
begin
|
7
|
-
require 'net/http/pipeline'
|
8
|
-
rescue LoadError
|
9
|
-
end
|
10
|
-
|
11
6
|
autoload :OpenSSL, 'openssl'
|
12
7
|
|
13
8
|
##
|
@@ -17,15 +12,11 @@ autoload :OpenSSL, 'openssl'
|
|
17
12
|
# servers you wish to talk to. For each host:port you communicate with a
|
18
13
|
# single persistent connection is created.
|
19
14
|
#
|
20
|
-
#
|
21
|
-
# connections.
|
22
|
-
#
|
23
|
-
# For each thread you start a new connection will be created. A
|
24
|
-
# Bundler::Persistent::Net::HTTP::Persistent connection will not be shared across threads.
|
15
|
+
# Connections will be shared across threads through a connection pool to
|
16
|
+
# increase reuse of connections.
|
25
17
|
#
|
26
|
-
# You can shut down
|
27
|
-
#
|
28
|
-
# method.
|
18
|
+
# You can shut down any remaining HTTP connections when done by calling
|
19
|
+
# #shutdown.
|
29
20
|
#
|
30
21
|
# Example:
|
31
22
|
#
|
@@ -33,7 +24,7 @@ autoload :OpenSSL, 'openssl'
|
|
33
24
|
#
|
34
25
|
# uri = Bundler::URI 'http://example.com/awesome/web/service'
|
35
26
|
#
|
36
|
-
# http = Bundler::Persistent::Net::HTTP::Persistent.new
|
27
|
+
# http = Bundler::Persistent::Net::HTTP::Persistent.new
|
37
28
|
#
|
38
29
|
# # perform a GET
|
39
30
|
# response = http.request uri
|
@@ -55,14 +46,14 @@ autoload :OpenSSL, 'openssl'
|
|
55
46
|
# to use Bundler::URI#request_uri not Bundler::URI#path. The request_uri contains the query
|
56
47
|
# params which are sent in the body for other requests.
|
57
48
|
#
|
58
|
-
# == SSL
|
49
|
+
# == TLS/SSL
|
59
50
|
#
|
60
|
-
#
|
61
|
-
# Bundler::URI.
|
51
|
+
# TLS connections are automatically created depending upon the scheme of the
|
52
|
+
# Bundler::URI. TLS connections are automatically verified against the default
|
62
53
|
# certificate store for your computer. You can override this by changing
|
63
54
|
# verify_mode or by specifying an alternate cert_store.
|
64
55
|
#
|
65
|
-
# Here are the
|
56
|
+
# Here are the TLS settings, see the individual methods for documentation:
|
66
57
|
#
|
67
58
|
# #certificate :: This client's certificate
|
68
59
|
# #ca_file :: The certificate-authorities
|
@@ -72,7 +63,7 @@ autoload :OpenSSL, 'openssl'
|
|
72
63
|
# #private_key :: The client's SSL private key
|
73
64
|
# #reuse_ssl_sessions :: Reuse a previously opened SSL session for a new
|
74
65
|
# connection
|
75
|
-
# #ssl_timeout ::
|
66
|
+
# #ssl_timeout :: Session lifetime
|
76
67
|
# #ssl_version :: Which specific SSL version to use
|
77
68
|
# #verify_callback :: For server certificate verification
|
78
69
|
# #verify_depth :: Depth of certificate verification
|
@@ -101,14 +92,15 @@ autoload :OpenSSL, 'openssl'
|
|
101
92
|
#
|
102
93
|
# === Segregation
|
103
94
|
#
|
104
|
-
#
|
105
|
-
#
|
95
|
+
# Each Bundler::Persistent::Net::HTTP::Persistent instance has its own pool of connections. There
|
96
|
+
# is no sharing with other instances (as was true in earlier versions).
|
106
97
|
#
|
107
98
|
# === Idle Timeout
|
108
99
|
#
|
109
|
-
# If a connection hasn't been used for this number of seconds it will
|
110
|
-
# reset upon the next use to avoid attempting to send to a
|
111
|
-
# The default value is 5 seconds. nil means no timeout.
|
100
|
+
# If a connection hasn't been used for this number of seconds it will
|
101
|
+
# automatically be reset upon the next use to avoid attempting to send to a
|
102
|
+
# closed connection. The default value is 5 seconds. nil means no timeout.
|
103
|
+
# Set through #idle_timeout.
|
112
104
|
#
|
113
105
|
# Reducing this value may help avoid the "too many connection resets" error
|
114
106
|
# when sending non-idempotent requests while increasing this value will cause
|
@@ -123,8 +115,9 @@ autoload :OpenSSL, 'openssl'
|
|
123
115
|
#
|
124
116
|
# The number of requests that should be made before opening a new connection.
|
125
117
|
# Typically many keep-alive capable servers tune this to 100 or less, so the
|
126
|
-
# 101st request will fail with ECONNRESET. If unset (default), this value has
|
127
|
-
# effect, if set, connections will be reset on the request after
|
118
|
+
# 101st request will fail with ECONNRESET. If unset (default), this value has
|
119
|
+
# no effect, if set, connections will be reset on the request after
|
120
|
+
# max_requests.
|
128
121
|
#
|
129
122
|
# === Open Timeout
|
130
123
|
#
|
@@ -136,45 +129,6 @@ autoload :OpenSSL, 'openssl'
|
|
136
129
|
# Socket options may be set on newly-created connections. See #socket_options
|
137
130
|
# for details.
|
138
131
|
#
|
139
|
-
# === Non-Idempotent Requests
|
140
|
-
#
|
141
|
-
# By default non-idempotent requests will not be retried per RFC 2616. By
|
142
|
-
# setting retry_change_requests to true requests will automatically be retried
|
143
|
-
# once.
|
144
|
-
#
|
145
|
-
# Only do this when you know that retrying a POST or other non-idempotent
|
146
|
-
# request is safe for your application and will not create duplicate
|
147
|
-
# resources.
|
148
|
-
#
|
149
|
-
# The recommended way to handle non-idempotent requests is the following:
|
150
|
-
#
|
151
|
-
# require 'bundler/vendor/net-http-persistent/lib/net/http/persistent'
|
152
|
-
#
|
153
|
-
# uri = Bundler::URI 'http://example.com/awesome/web/service'
|
154
|
-
# post_uri = uri + 'create'
|
155
|
-
#
|
156
|
-
# http = Bundler::Persistent::Net::HTTP::Persistent.new name: 'my_app_name'
|
157
|
-
#
|
158
|
-
# post = Net::HTTP::Post.new post_uri.path
|
159
|
-
# # ... fill in POST request
|
160
|
-
#
|
161
|
-
# begin
|
162
|
-
# response = http.request post_uri, post
|
163
|
-
# rescue Bundler::Persistent::Net::HTTP::Persistent::Error
|
164
|
-
#
|
165
|
-
# # POST failed, make a new request to verify the server did not process
|
166
|
-
# # the request
|
167
|
-
# exists_uri = uri + '...'
|
168
|
-
# response = http.get exists_uri
|
169
|
-
#
|
170
|
-
# # Retry if it failed
|
171
|
-
# retry if response.code == '404'
|
172
|
-
# end
|
173
|
-
#
|
174
|
-
# The method of determining if the resource was created or not is unique to
|
175
|
-
# the particular service you are using. Of course, you will want to add
|
176
|
-
# protection from infinite looping.
|
177
|
-
#
|
178
132
|
# === Connection Termination
|
179
133
|
#
|
180
134
|
# If you are done using the Bundler::Persistent::Net::HTTP::Persistent instance you may shut down
|
@@ -200,33 +154,27 @@ class Bundler::Persistent::Net::HTTP::Persistent
|
|
200
154
|
HAVE_OPENSSL = defined? OpenSSL::SSL # :nodoc:
|
201
155
|
|
202
156
|
##
|
203
|
-
# The default connection pool size is 1/4 the allowed open files
|
157
|
+
# The default connection pool size is 1/4 the allowed open files
|
158
|
+
# (<code>ulimit -n</code>) or 256 if your OS does not support file handle
|
159
|
+
# limits (typically windows).
|
204
160
|
|
205
|
-
if
|
206
|
-
|
161
|
+
if Process.const_defined? :RLIMIT_NOFILE
|
162
|
+
open_file_limits = Process.getrlimit(Process::RLIMIT_NOFILE)
|
163
|
+
|
164
|
+
# Under JRuby on Windows Process responds to `getrlimit` but returns something that does not match docs
|
165
|
+
if open_file_limits.respond_to?(:first)
|
166
|
+
DEFAULT_POOL_SIZE = open_file_limits.first / 4
|
167
|
+
else
|
168
|
+
DEFAULT_POOL_SIZE = 256
|
169
|
+
end
|
207
170
|
else
|
208
|
-
DEFAULT_POOL_SIZE =
|
171
|
+
DEFAULT_POOL_SIZE = 256
|
209
172
|
end
|
210
173
|
|
211
174
|
##
|
212
175
|
# The version of Bundler::Persistent::Net::HTTP::Persistent you are using
|
213
176
|
|
214
|
-
VERSION = '
|
215
|
-
|
216
|
-
##
|
217
|
-
# Exceptions rescued for automatic retry on ruby 2.0.0. This overlaps with
|
218
|
-
# the exception list for ruby 1.x.
|
219
|
-
|
220
|
-
RETRIED_EXCEPTIONS = [ # :nodoc:
|
221
|
-
(Net::ReadTimeout if Net.const_defined? :ReadTimeout),
|
222
|
-
IOError,
|
223
|
-
EOFError,
|
224
|
-
Errno::ECONNRESET,
|
225
|
-
Errno::ECONNABORTED,
|
226
|
-
Errno::EPIPE,
|
227
|
-
(OpenSSL::SSL::SSLError if HAVE_OPENSSL),
|
228
|
-
Timeout::Error,
|
229
|
-
].compact
|
177
|
+
VERSION = '4.0.0'
|
230
178
|
|
231
179
|
##
|
232
180
|
# Error class for errors raised by Bundler::Persistent::Net::HTTP::Persistent. Various
|
@@ -353,6 +301,13 @@ class Bundler::Persistent::Net::HTTP::Persistent
|
|
353
301
|
|
354
302
|
attr_accessor :max_requests
|
355
303
|
|
304
|
+
##
|
305
|
+
# Number of retries to perform if a request fails.
|
306
|
+
#
|
307
|
+
# See also #max_retries=, Net::HTTP#max_retries=.
|
308
|
+
|
309
|
+
attr_reader :max_retries
|
310
|
+
|
356
311
|
##
|
357
312
|
# The value sent in the Keep-Alive header. Defaults to 30. Not needed for
|
358
313
|
# HTTP/1.1 servers.
|
@@ -365,8 +320,7 @@ class Bundler::Persistent::Net::HTTP::Persistent
|
|
365
320
|
attr_accessor :keep_alive
|
366
321
|
|
367
322
|
##
|
368
|
-
#
|
369
|
-
# from everybody else's.
|
323
|
+
# The name for this collection of persistent connections.
|
370
324
|
|
371
325
|
attr_reader :name
|
372
326
|
|
@@ -495,23 +449,11 @@ class Bundler::Persistent::Net::HTTP::Persistent
|
|
495
449
|
|
496
450
|
attr_reader :verify_mode
|
497
451
|
|
498
|
-
##
|
499
|
-
# Enable retries of non-idempotent requests that change data (e.g. POST
|
500
|
-
# requests) when the server has disconnected.
|
501
|
-
#
|
502
|
-
# This will in the worst case lead to multiple requests with the same data,
|
503
|
-
# but it may be useful for some applications. Take care when enabling
|
504
|
-
# this option to ensure it is safe to POST or perform other non-idempotent
|
505
|
-
# requests to the server.
|
506
|
-
|
507
|
-
attr_accessor :retry_change_requests
|
508
|
-
|
509
452
|
##
|
510
453
|
# Creates a new Bundler::Persistent::Net::HTTP::Persistent.
|
511
454
|
#
|
512
|
-
# Set +name+
|
513
|
-
#
|
514
|
-
# good enough. This parameter will be required in a future version.
|
455
|
+
# Set a +name+ for fun. Your library name should be good enough, but this
|
456
|
+
# otherwise has no purpose.
|
515
457
|
#
|
516
458
|
# +proxy+ may be set to a Bundler::URI::HTTP or :ENV to pick up proxy options from
|
517
459
|
# the environment. See proxy_from_env for details.
|
@@ -524,8 +466,9 @@ class Bundler::Persistent::Net::HTTP::Persistent
|
|
524
466
|
# proxy.password = 'hunter2'
|
525
467
|
#
|
526
468
|
# Set +pool_size+ to limit the maximum number of connections allowed.
|
527
|
-
# Defaults to 1/4 the number of allowed file handles
|
528
|
-
#
|
469
|
+
# Defaults to 1/4 the number of allowed file handles or 256 if your OS does
|
470
|
+
# not support a limit on allowed file handles. You can have no more than
|
471
|
+
# this many threads with active HTTP transactions.
|
529
472
|
|
530
473
|
def initialize name: nil, proxy: nil, pool_size: DEFAULT_POOL_SIZE
|
531
474
|
@name = name
|
@@ -542,6 +485,7 @@ class Bundler::Persistent::Net::HTTP::Persistent
|
|
542
485
|
@write_timeout = nil
|
543
486
|
@idle_timeout = 5
|
544
487
|
@max_requests = nil
|
488
|
+
@max_retries = 1
|
545
489
|
@socket_options = []
|
546
490
|
@ssl_generation = 0 # incremented when SSL session variables change
|
547
491
|
|
@@ -573,8 +517,6 @@ class Bundler::Persistent::Net::HTTP::Persistent
|
|
573
517
|
@reuse_ssl_sessions = OpenSSL::SSL.const_defined? :Session
|
574
518
|
end
|
575
519
|
|
576
|
-
@retry_change_requests = false
|
577
|
-
|
578
520
|
self.proxy = proxy if proxy
|
579
521
|
end
|
580
522
|
|
@@ -635,7 +577,9 @@ class Bundler::Persistent::Net::HTTP::Persistent
|
|
635
577
|
|
636
578
|
net_http_args = [uri.hostname, uri.port]
|
637
579
|
|
638
|
-
|
580
|
+
# I'm unsure if uri.host or uri.hostname should be checked against
|
581
|
+
# the proxy bypass list.
|
582
|
+
if @proxy_uri and not proxy_bypass? uri.host, uri.port then
|
639
583
|
net_http_args.concat @proxy_args
|
640
584
|
else
|
641
585
|
net_http_args.concat [nil, nil, nil, nil]
|
@@ -655,9 +599,11 @@ class Bundler::Persistent::Net::HTTP::Persistent
|
|
655
599
|
reset connection
|
656
600
|
end
|
657
601
|
|
658
|
-
http.
|
659
|
-
http.
|
660
|
-
http.
|
602
|
+
http.keep_alive_timeout = @idle_timeout if @idle_timeout
|
603
|
+
http.max_retries = @max_retries if http.respond_to?(:max_retries=)
|
604
|
+
http.read_timeout = @read_timeout if @read_timeout
|
605
|
+
http.write_timeout = @write_timeout if
|
606
|
+
@write_timeout && http.respond_to?(:write_timeout=)
|
661
607
|
|
662
608
|
return yield connection
|
663
609
|
rescue Errno::ECONNREFUSED
|
@@ -675,27 +621,14 @@ class Bundler::Persistent::Net::HTTP::Persistent
|
|
675
621
|
end
|
676
622
|
|
677
623
|
##
|
678
|
-
#
|
679
|
-
# this connection
|
680
|
-
|
681
|
-
def error_message connection
|
682
|
-
connection.requests -= 1 # fixup
|
683
|
-
|
684
|
-
age = Time.now - connection.last_use
|
685
|
-
|
686
|
-
"after #{connection.requests} requests on #{connection.http.object_id}, " \
|
687
|
-
"last used #{age} seconds ago"
|
688
|
-
end
|
689
|
-
|
690
|
-
##
|
691
|
-
# Bundler::URI::escape wrapper
|
624
|
+
# CGI::escape wrapper
|
692
625
|
|
693
626
|
def escape str
|
694
627
|
CGI.escape str if str
|
695
628
|
end
|
696
629
|
|
697
630
|
##
|
698
|
-
#
|
631
|
+
# CGI::unescape wrapper
|
699
632
|
|
700
633
|
def unescape str
|
701
634
|
CGI.unescape str if str
|
@@ -738,6 +671,7 @@ class Bundler::Persistent::Net::HTTP::Persistent
|
|
738
671
|
def finish connection
|
739
672
|
connection.finish
|
740
673
|
|
674
|
+
connection.http.instance_variable_set :@last_communicated, nil
|
741
675
|
connection.http.instance_variable_set :@ssl_session, nil unless
|
742
676
|
@reuse_ssl_sessions
|
743
677
|
end
|
@@ -746,24 +680,7 @@ class Bundler::Persistent::Net::HTTP::Persistent
|
|
746
680
|
# Returns the HTTP protocol version for +uri+
|
747
681
|
|
748
682
|
def http_version uri
|
749
|
-
@http_versions["#{uri.
|
750
|
-
end
|
751
|
-
|
752
|
-
##
|
753
|
-
# Is +req+ idempotent according to RFC 2616?
|
754
|
-
|
755
|
-
def idempotent? req
|
756
|
-
case req.method
|
757
|
-
when 'DELETE', 'GET', 'HEAD', 'OPTIONS', 'PUT', 'TRACE' then
|
758
|
-
true
|
759
|
-
end
|
760
|
-
end
|
761
|
-
|
762
|
-
##
|
763
|
-
# Is the request +req+ idempotent or is retry_change_requests allowed.
|
764
|
-
|
765
|
-
def can_retry? req
|
766
|
-
@retry_change_requests && !idempotent?(req)
|
683
|
+
@http_versions["#{uri.hostname}:#{uri.port}"]
|
767
684
|
end
|
768
685
|
|
769
686
|
##
|
@@ -774,20 +691,20 @@ class Bundler::Persistent::Net::HTTP::Persistent
|
|
774
691
|
end
|
775
692
|
|
776
693
|
##
|
777
|
-
#
|
778
|
-
# block is given. Returns all responses received.
|
694
|
+
# Set the maximum number of retries for a request.
|
779
695
|
#
|
780
|
-
#
|
781
|
-
# Net::HTTP::Pipeline[http://docs.seattlerb.org/net-http-pipeline/Net/HTTP/Pipeline.html]
|
782
|
-
# for further details.
|
696
|
+
# Defaults to one retry.
|
783
697
|
#
|
784
|
-
#
|
785
|
-
# <tt>net-http-persistent</tt> #pipeline will be present.
|
698
|
+
# Set this to 0 to disable retries.
|
786
699
|
|
787
|
-
def
|
788
|
-
|
789
|
-
|
790
|
-
|
700
|
+
def max_retries= retries
|
701
|
+
retries = retries.to_int
|
702
|
+
|
703
|
+
raise ArgumentError, "max_retries must be positive" if retries < 0
|
704
|
+
|
705
|
+
@max_retries = retries
|
706
|
+
|
707
|
+
reconnect
|
791
708
|
end
|
792
709
|
|
793
710
|
##
|
@@ -828,7 +745,7 @@ class Bundler::Persistent::Net::HTTP::Persistent
|
|
828
745
|
|
829
746
|
if @proxy_uri then
|
830
747
|
@proxy_args = [
|
831
|
-
@proxy_uri.
|
748
|
+
@proxy_uri.hostname,
|
832
749
|
@proxy_uri.port,
|
833
750
|
unescape(@proxy_uri.user),
|
834
751
|
unescape(@proxy_uri.password),
|
@@ -903,14 +820,15 @@ class Bundler::Persistent::Net::HTTP::Persistent
|
|
903
820
|
end
|
904
821
|
|
905
822
|
##
|
906
|
-
# Forces reconnection of HTTP connections
|
823
|
+
# Forces reconnection of all HTTP connections, including TLS/SSL
|
824
|
+
# connections.
|
907
825
|
|
908
826
|
def reconnect
|
909
827
|
@generation += 1
|
910
828
|
end
|
911
829
|
|
912
830
|
##
|
913
|
-
# Forces reconnection of SSL connections.
|
831
|
+
# Forces reconnection of only TLS/SSL connections.
|
914
832
|
|
915
833
|
def reconnect_ssl
|
916
834
|
@ssl_generation += 1
|
@@ -943,14 +861,8 @@ class Bundler::Persistent::Net::HTTP::Persistent
|
|
943
861
|
# the response will not have been read).
|
944
862
|
#
|
945
863
|
# +req+ must be a Net::HTTPGenericRequest subclass (see Net::HTTP for a list).
|
946
|
-
#
|
947
|
-
# If there is an error and the request is idempotent according to RFC 2616
|
948
|
-
# it will be retried automatically.
|
949
864
|
|
950
865
|
def request uri, req = nil, &block
|
951
|
-
retried = false
|
952
|
-
bad_response = false
|
953
|
-
|
954
866
|
uri = Bundler::URI uri
|
955
867
|
req = request_setup req || uri
|
956
868
|
response = nil
|
@@ -964,37 +876,12 @@ class Bundler::Persistent::Net::HTTP::Persistent
|
|
964
876
|
response = http.request req, &block
|
965
877
|
|
966
878
|
if req.connection_close? or
|
967
|
-
|
879
|
+
(response.http_version <= '1.0' and
|
968
880
|
not response.connection_keep_alive?) or
|
969
|
-
|
881
|
+
response.connection_close? then
|
970
882
|
finish connection
|
971
883
|
end
|
972
|
-
rescue
|
973
|
-
message = error_message connection
|
974
|
-
|
975
|
-
finish connection
|
976
|
-
|
977
|
-
raise Error, "too many bad responses #{message}" if
|
978
|
-
bad_response or not can_retry? req
|
979
|
-
|
980
|
-
bad_response = true
|
981
|
-
retry
|
982
|
-
rescue *RETRIED_EXCEPTIONS => e
|
983
|
-
request_failed e, req, connection if
|
984
|
-
retried or not can_retry? req
|
985
|
-
|
986
|
-
reset connection
|
987
|
-
|
988
|
-
retried = true
|
989
|
-
retry
|
990
|
-
rescue Errno::EINVAL, Errno::ETIMEDOUT => e # not retried on ruby 2
|
991
|
-
request_failed e, req, connection if retried or not can_retry? req
|
992
|
-
|
993
|
-
reset connection
|
994
|
-
|
995
|
-
retried = true
|
996
|
-
retry
|
997
|
-
rescue Exception => e
|
884
|
+
rescue Exception # make sure to close the connection when it was interrupted
|
998
885
|
finish connection
|
999
886
|
|
1000
887
|
raise
|
@@ -1003,26 +890,11 @@ class Bundler::Persistent::Net::HTTP::Persistent
|
|
1003
890
|
end
|
1004
891
|
end
|
1005
892
|
|
1006
|
-
@http_versions["#{uri.
|
893
|
+
@http_versions["#{uri.hostname}:#{uri.port}"] ||= response.http_version
|
1007
894
|
|
1008
895
|
response
|
1009
896
|
end
|
1010
897
|
|
1011
|
-
##
|
1012
|
-
# Raises an Error for +exception+ which resulted from attempting the request
|
1013
|
-
# +req+ on the +connection+.
|
1014
|
-
#
|
1015
|
-
# Finishes the +connection+.
|
1016
|
-
|
1017
|
-
def request_failed exception, req, connection # :nodoc:
|
1018
|
-
due_to = "(due to #{exception.message} - #{exception.class})"
|
1019
|
-
message = "too many connection resets #{due_to} #{error_message connection}"
|
1020
|
-
|
1021
|
-
finish connection
|
1022
|
-
|
1023
|
-
raise Error, message, exception.backtrace
|
1024
|
-
end
|
1025
|
-
|
1026
898
|
##
|
1027
899
|
# Creates a GET request if +req_or_uri+ is a Bundler::URI and adds headers to the
|
1028
900
|
# request.
|
@@ -1030,7 +902,7 @@ class Bundler::Persistent::Net::HTTP::Persistent
|
|
1030
902
|
# Returns the request.
|
1031
903
|
|
1032
904
|
def request_setup req_or_uri # :nodoc:
|
1033
|
-
req = if
|
905
|
+
req = if req_or_uri.respond_to? 'request_uri' then
|
1034
906
|
Net::HTTP::Get.new req_or_uri.request_uri
|
1035
907
|
else
|
1036
908
|
req_or_uri
|
@@ -1194,7 +1066,6 @@ application:
|
|
1194
1066
|
|
1195
1067
|
reconnect_ssl
|
1196
1068
|
end
|
1197
|
-
|
1198
1069
|
end
|
1199
1070
|
|
1200
1071
|
require_relative 'persistent/connection'
|