rails-rfc6570 3.2.0 → 3.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -1
- data/lib/rails/rfc6570/version.rb +1 -1
- data/rails-rfc6570.gemspec +1 -1
- data/spec/dummy/log/test.log +432 -0
- metadata +10 -262
- data/vendor/bundle/ruby/3.3.0/bundler/gems/rubocop-config-943facea9d8f/LICENSE +0 -21
- data/vendor/bundle/ruby/3.3.0/bundler/gems/rubocop-config-943facea9d8f/README.md +0 -23
- data/vendor/bundle/ruby/3.3.0/bundler/gems/rubocop-config-943facea9d8f/rubocop-config.gemspec +0 -31
- data/vendor/bundle/ruby/3.3.0/gems/actionpack-7.2.1/CHANGELOG.md +0 -154
- data/vendor/bundle/ruby/3.3.0/gems/actionpack-7.2.1/MIT-LICENSE +0 -21
- data/vendor/bundle/ruby/3.3.0/gems/actionpack-7.2.1/README.rdoc +0 -57
- data/vendor/bundle/ruby/3.3.0/gems/actionview-7.2.1/CHANGELOG.md +0 -113
- data/vendor/bundle/ruby/3.3.0/gems/actionview-7.2.1/MIT-LICENSE +0 -21
- data/vendor/bundle/ruby/3.3.0/gems/actionview-7.2.1/README.rdoc +0 -40
- data/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1/CHANGELOG.md +0 -258
- data/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1/MIT-LICENSE +0 -20
- data/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.1/README.rdoc +0 -40
- data/vendor/bundle/ruby/3.3.0/gems/addressable-2.8.7/CHANGELOG.md +0 -301
- data/vendor/bundle/ruby/3.3.0/gems/addressable-2.8.7/LICENSE.txt +0 -202
- data/vendor/bundle/ruby/3.3.0/gems/addressable-2.8.7/README.md +0 -121
- data/vendor/bundle/ruby/3.3.0/gems/addressable-2.8.7/addressable.gemspec +0 -28
- data/vendor/bundle/ruby/3.3.0/gems/appraisal-2.5.0/MIT-LICENSE +0 -21
- data/vendor/bundle/ruby/3.3.0/gems/appraisal-2.5.0/README.md +0 -243
- data/vendor/bundle/ruby/3.3.0/gems/appraisal-2.5.0/appraisal.gemspec +0 -29
- data/vendor/bundle/ruby/3.3.0/gems/ast-2.4.2/LICENSE.MIT +0 -20
- data/vendor/bundle/ruby/3.3.0/gems/ast-2.4.2/README.YARD.md +0 -12
- data/vendor/bundle/ruby/3.3.0/gems/benchmark-ips-2.13.0/LICENSE +0 -20
- data/vendor/bundle/ruby/3.3.0/gems/benchmark-ips-2.13.0/README.md +0 -279
- data/vendor/bundle/ruby/3.3.0/gems/bigdecimal-3.1.8/LICENSE +0 -56
- data/vendor/bundle/ruby/3.3.0/gems/bigdecimal-3.1.8/bigdecimal.gemspec +0 -57
- data/vendor/bundle/ruby/3.3.0/gems/builder-3.3.0/MIT-LICENSE +0 -20
- data/vendor/bundle/ruby/3.3.0/gems/builder-3.3.0/README.md +0 -258
- data/vendor/bundle/ruby/3.3.0/gems/builder-3.3.0/builder.gemspec +0 -49
- data/vendor/bundle/ruby/3.3.0/gems/byebug-11.1.3/CHANGELOG.md +0 -934
- data/vendor/bundle/ruby/3.3.0/gems/byebug-11.1.3/LICENSE +0 -23
- data/vendor/bundle/ruby/3.3.0/gems/byebug-11.1.3/README.md +0 -199
- data/vendor/bundle/ruby/3.3.0/gems/coderay-1.1.3/MIT-LICENSE +0 -22
- data/vendor/bundle/ruby/3.3.0/gems/coderay-1.1.3/README_INDEX.rdoc +0 -123
- data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.4/CHANGELOG.md +0 -593
- data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.4/LICENSE.txt +0 -21
- data/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.4/README.md +0 -407
- data/vendor/bundle/ruby/3.3.0/gems/connection_pool-2.4.1/LICENSE +0 -20
- data/vendor/bundle/ruby/3.3.0/gems/connection_pool-2.4.1/README.md +0 -135
- data/vendor/bundle/ruby/3.3.0/gems/connection_pool-2.4.1/connection_pool.gemspec +0 -24
- data/vendor/bundle/ruby/3.3.0/gems/crass-1.0.6/LICENSE +0 -18
- data/vendor/bundle/ruby/3.3.0/gems/crass-1.0.6/README.md +0 -192
- data/vendor/bundle/ruby/3.3.0/gems/crass-1.0.6/crass.gemspec +0 -31
- data/vendor/bundle/ruby/3.3.0/gems/diff-lcs-1.5.1/README.rdoc +0 -84
- data/vendor/bundle/ruby/3.3.0/gems/docile-1.4.1/LICENSE +0 -21
- data/vendor/bundle/ruby/3.3.0/gems/docile-1.4.1/README.md +0 -409
- data/vendor/bundle/ruby/3.3.0/gems/docile-1.4.1/docile.gemspec +0 -36
- data/vendor/bundle/ruby/3.3.0/gems/drb-2.2.1/LICENSE.txt +0 -22
- data/vendor/bundle/ruby/3.3.0/gems/drb-2.2.1/drb.gemspec +0 -41
- data/vendor/bundle/ruby/3.3.0/gems/erubi-1.13.0/CHANGELOG +0 -107
- data/vendor/bundle/ruby/3.3.0/gems/erubi-1.13.0/MIT-LICENSE +0 -21
- data/vendor/bundle/ruby/3.3.0/gems/erubi-1.13.0/README.rdoc +0 -151
- data/vendor/bundle/ruby/3.3.0/gems/i18n-1.14.5/MIT-LICENSE +0 -20
- data/vendor/bundle/ruby/3.3.0/gems/i18n-1.14.5/README.md +0 -127
- data/vendor/bundle/ruby/3.3.0/gems/io-console-0.7.2/LICENSE.txt +0 -22
- data/vendor/bundle/ruby/3.3.0/gems/io-console-0.7.2/README.md +0 -46
- data/vendor/bundle/ruby/3.3.0/gems/irb-1.14.0/LICENSE.txt +0 -22
- data/vendor/bundle/ruby/3.3.0/gems/irb-1.14.0/README.md +0 -405
- data/vendor/bundle/ruby/3.3.0/gems/irb-1.14.0/irb.gemspec +0 -46
- data/vendor/bundle/ruby/3.3.0/gems/json-2.7.2/LICENSE +0 -56
- data/vendor/bundle/ruby/3.3.0/gems/json-2.7.2/README.md +0 -416
- data/vendor/bundle/ruby/3.3.0/gems/json-2.7.2/json.gemspec +0 -68
- data/vendor/bundle/ruby/3.3.0/gems/language_server-protocol-3.17.0.3/LICENSE.txt +0 -21
- data/vendor/bundle/ruby/3.3.0/gems/language_server-protocol-3.17.0.3/README.md +0 -88
- data/vendor/bundle/ruby/3.3.0/gems/loofah-2.22.0/CHANGELOG.md +0 -566
- data/vendor/bundle/ruby/3.3.0/gems/loofah-2.22.0/MIT-LICENSE.txt +0 -23
- data/vendor/bundle/ruby/3.3.0/gems/loofah-2.22.0/README.md +0 -363
- data/vendor/bundle/ruby/3.3.0/gems/method_source-1.1.0/CHANGELOG.md +0 -15
- data/vendor/bundle/ruby/3.3.0/gems/method_source-1.1.0/LICENSE +0 -22
- data/vendor/bundle/ruby/3.3.0/gems/method_source-1.1.0/README.markdown +0 -101
- data/vendor/bundle/ruby/3.3.0/gems/method_source-1.1.0/method_source.gemspec +0 -19
- data/vendor/bundle/ruby/3.3.0/gems/minitest-5.25.1/README.rdoc +0 -835
- data/vendor/bundle/ruby/3.3.0/gems/nokogiri-1.16.7-x86_64-linux/LICENSE-DEPENDENCIES.md +0 -2224
- data/vendor/bundle/ruby/3.3.0/gems/nokogiri-1.16.7-x86_64-linux/LICENSE.md +0 -9
- data/vendor/bundle/ruby/3.3.0/gems/nokogiri-1.16.7-x86_64-linux/README.md +0 -290
- data/vendor/bundle/ruby/3.3.0/gems/parallel-1.26.3/MIT-LICENSE.txt +0 -20
- data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.4.2/LICENSE.txt +0 -25
- data/vendor/bundle/ruby/3.3.0/gems/parser-3.3.4.2/parser.gemspec +0 -43
- data/vendor/bundle/ruby/3.3.0/gems/pry-0.14.2/CHANGELOG.md +0 -1141
- data/vendor/bundle/ruby/3.3.0/gems/pry-0.14.2/LICENSE +0 -25
- data/vendor/bundle/ruby/3.3.0/gems/pry-0.14.2/README.md +0 -466
- data/vendor/bundle/ruby/3.3.0/gems/pry-0.14.2/lib/pry/slop/LICENSE +0 -20
- data/vendor/bundle/ruby/3.3.0/gems/pry-byebug-3.10.1/CHANGELOG.md +0 -230
- data/vendor/bundle/ruby/3.3.0/gems/pry-byebug-3.10.1/LICENSE +0 -20
- data/vendor/bundle/ruby/3.3.0/gems/pry-byebug-3.10.1/README.md +0 -189
- data/vendor/bundle/ruby/3.3.0/gems/public_suffix-6.0.1/CHANGELOG.md +0 -491
- data/vendor/bundle/ruby/3.3.0/gems/public_suffix-6.0.1/LICENSE.txt +0 -22
- data/vendor/bundle/ruby/3.3.0/gems/public_suffix-6.0.1/README.md +0 -222
- data/vendor/bundle/ruby/3.3.0/gems/racc-1.8.1/README.ja.rdoc +0 -58
- data/vendor/bundle/ruby/3.3.0/gems/racc-1.8.1/README.rdoc +0 -60
- data/vendor/bundle/ruby/3.3.0/gems/rack-3.1.7/CHANGELOG.md +0 -994
- data/vendor/bundle/ruby/3.3.0/gems/rack-3.1.7/MIT-LICENSE +0 -20
- data/vendor/bundle/ruby/3.3.0/gems/rack-3.1.7/README.md +0 -328
- data/vendor/bundle/ruby/3.3.0/gems/rack-test-2.1.0/MIT-LICENSE.txt +0 -20
- data/vendor/bundle/ruby/3.3.0/gems/rack-test-2.1.0/README.md +0 -139
- data/vendor/bundle/ruby/3.3.0/gems/rails-dom-testing-2.2.0/MIT-LICENSE +0 -23
- data/vendor/bundle/ruby/3.3.0/gems/rails-dom-testing-2.2.0/README.md +0 -91
- data/vendor/bundle/ruby/3.3.0/gems/rails-html-sanitizer-1.6.0/CHANGELOG.md +0 -201
- data/vendor/bundle/ruby/3.3.0/gems/rails-html-sanitizer-1.6.0/MIT-LICENSE +0 -23
- data/vendor/bundle/ruby/3.3.0/gems/rails-html-sanitizer-1.6.0/README.md +0 -271
- data/vendor/bundle/ruby/3.3.0/gems/railties-7.2.1/CHANGELOG.md +0 -361
- data/vendor/bundle/ruby/3.3.0/gems/railties-7.2.1/MIT-LICENSE +0 -20
- data/vendor/bundle/ruby/3.3.0/gems/railties-7.2.1/README.rdoc +0 -39
- data/vendor/bundle/ruby/3.3.0/gems/railties-7.2.1/lib/rails/generators/rails/app/templates/README.md.tt +0 -24
- data/vendor/bundle/ruby/3.3.0/gems/railties-7.2.1/lib/rails/generators/rails/plugin/templates/%name%.gemspec.tt +0 -28
- data/vendor/bundle/ruby/3.3.0/gems/railties-7.2.1/lib/rails/generators/rails/plugin/templates/MIT-LICENSE.tt +0 -20
- data/vendor/bundle/ruby/3.3.0/gems/railties-7.2.1/lib/rails/generators/rails/plugin/templates/README.md.tt +0 -28
- data/vendor/bundle/ruby/3.3.0/gems/rainbow-3.1.1/LICENSE +0 -20
- data/vendor/bundle/ruby/3.3.0/gems/rainbow-3.1.1/README.markdown +0 -227
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/MIT-LICENSE +0 -21
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/README.rdoc +0 -155
- data/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/rake.gemspec +0 -101
- data/vendor/bundle/ruby/3.3.0/gems/rake-release-1.3.0/LICENSE +0 -21
- data/vendor/bundle/ruby/3.3.0/gems/rake-release-1.3.0/README.md +0 -107
- data/vendor/bundle/ruby/3.3.0/gems/rake-release-1.3.0/rake-release.gemspec +0 -23
- data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.7.0/LICENSE.rdoc +0 -57
- data/vendor/bundle/ruby/3.3.0/gems/rdoc-6.7.0/README.rdoc +0 -129
- data/vendor/bundle/ruby/3.3.0/gems/regexp_parser-2.9.2/LICENSE +0 -22
- data/vendor/bundle/ruby/3.3.0/gems/regexp_parser-2.9.2/regexp_parser.gemspec +0 -34
- data/vendor/bundle/ruby/3.3.0/gems/reline-0.5.9/README.md +0 -94
- data/vendor/bundle/ruby/3.3.0/gems/rexml-3.3.6/LICENSE.txt +0 -22
- data/vendor/bundle/ruby/3.3.0/gems/rexml-3.3.6/README.md +0 -57
- data/vendor/bundle/ruby/3.3.0/gems/rspec-3.13.0/LICENSE.md +0 -27
- data/vendor/bundle/ruby/3.3.0/gems/rspec-3.13.0/README.md +0 -47
- data/vendor/bundle/ruby/3.3.0/gems/rspec-core-3.13.0/LICENSE.md +0 -26
- data/vendor/bundle/ruby/3.3.0/gems/rspec-core-3.13.0/README.md +0 -389
- data/vendor/bundle/ruby/3.3.0/gems/rspec-expectations-3.13.2/LICENSE.md +0 -25
- data/vendor/bundle/ruby/3.3.0/gems/rspec-expectations-3.13.2/README.md +0 -326
- data/vendor/bundle/ruby/3.3.0/gems/rspec-mocks-3.13.1/LICENSE.md +0 -25
- data/vendor/bundle/ruby/3.3.0/gems/rspec-mocks-3.13.1/README.md +0 -465
- data/vendor/bundle/ruby/3.3.0/gems/rspec-rails-6.1.4/LICENSE.md +0 -25
- data/vendor/bundle/ruby/3.3.0/gems/rspec-rails-6.1.4/README.md +0 -381
- data/vendor/bundle/ruby/3.3.0/gems/rspec-support-3.13.1/LICENSE.md +0 -23
- data/vendor/bundle/ruby/3.3.0/gems/rspec-support-3.13.1/README.md +0 -40
- data/vendor/bundle/ruby/3.3.0/gems/rubocop-1.65.1/LICENSE.txt +0 -20
- data/vendor/bundle/ruby/3.3.0/gems/rubocop-1.65.1/README.md +0 -251
- data/vendor/bundle/ruby/3.3.0/gems/rubocop-ast-1.32.1/LICENSE.txt +0 -20
- data/vendor/bundle/ruby/3.3.0/gems/rubocop-ast-1.32.1/README.md +0 -56
- data/vendor/bundle/ruby/3.3.0/gems/rubocop-capybara-2.21.0/CHANGELOG.md +0 -85
- data/vendor/bundle/ruby/3.3.0/gems/rubocop-capybara-2.21.0/MIT-LICENSE.md +0 -21
- data/vendor/bundle/ruby/3.3.0/gems/rubocop-capybara-2.21.0/README.md +0 -88
- data/vendor/bundle/ruby/3.3.0/gems/rubocop-factory_bot-2.26.1/CHANGELOG.md +0 -116
- data/vendor/bundle/ruby/3.3.0/gems/rubocop-factory_bot-2.26.1/MIT-LICENSE.md +0 -21
- data/vendor/bundle/ruby/3.3.0/gems/rubocop-factory_bot-2.26.1/README.md +0 -88
- data/vendor/bundle/ruby/3.3.0/gems/rubocop-performance-1.21.1/LICENSE.txt +0 -20
- data/vendor/bundle/ruby/3.3.0/gems/rubocop-performance-1.21.1/README.md +0 -97
- data/vendor/bundle/ruby/3.3.0/gems/rubocop-rspec-3.0.4/CHANGELOG.md +0 -1028
- data/vendor/bundle/ruby/3.3.0/gems/rubocop-rspec-3.0.4/MIT-LICENSE.md +0 -21
- data/vendor/bundle/ruby/3.3.0/gems/rubocop-rspec-3.0.4/README.md +0 -109
- data/vendor/bundle/ruby/3.3.0/gems/rubocop-rspec_rails-2.30.0/CHANGELOG.md +0 -84
- data/vendor/bundle/ruby/3.3.0/gems/rubocop-rspec_rails-2.30.0/MIT-LICENSE.md +0 -21
- data/vendor/bundle/ruby/3.3.0/gems/rubocop-rspec_rails-2.30.0/README.md +0 -90
- data/vendor/bundle/ruby/3.3.0/gems/ruby-progressbar-1.13.0/LICENSE.txt +0 -19
- data/vendor/bundle/ruby/3.3.0/gems/ruby-progressbar-1.13.0/README.md +0 -131
- data/vendor/bundle/ruby/3.3.0/gems/simplecov-0.22.0/CHANGELOG.md +0 -191
- data/vendor/bundle/ruby/3.3.0/gems/simplecov-0.22.0/LICENSE +0 -20
- data/vendor/bundle/ruby/3.3.0/gems/simplecov-0.22.0/README.md +0 -974
- data/vendor/bundle/ruby/3.3.0/gems/simplecov-cobertura-2.1.0/LICENSE +0 -202
- data/vendor/bundle/ruby/3.3.0/gems/simplecov-cobertura-2.1.0/README.md +0 -62
- data/vendor/bundle/ruby/3.3.0/gems/simplecov-cobertura-2.1.0/simplecov-cobertura.gemspec +0 -29
- data/vendor/bundle/ruby/3.3.0/gems/simplecov-html-0.12.3/CHANGELOG.md +0 -81
- data/vendor/bundle/ruby/3.3.0/gems/simplecov-html-0.12.3/LICENSE +0 -20
- data/vendor/bundle/ruby/3.3.0/gems/simplecov-html-0.12.3/README.md +0 -30
- data/vendor/bundle/ruby/3.3.0/gems/simplecov-html-0.12.3/simplecov-html.gemspec +0 -23
- data/vendor/bundle/ruby/3.3.0/gems/simplecov_json_formatter-0.1.4/CHANGELOG.md +0 -13
- data/vendor/bundle/ruby/3.3.0/gems/simplecov_json_formatter-0.1.4/README.md +0 -29
- data/vendor/bundle/ruby/3.3.0/gems/strscan-3.1.0/LICENSE.txt +0 -22
- data/vendor/bundle/ruby/3.3.0/gems/thor-1.3.1/LICENSE.md +0 -20
- data/vendor/bundle/ruby/3.3.0/gems/thor-1.3.1/README.md +0 -45
- data/vendor/bundle/ruby/3.3.0/gems/thor-1.3.1/thor.gemspec +0 -33
- data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/LICENSE +0 -19
- data/vendor/bundle/ruby/3.3.0/gems/tzinfo-2.0.6/README.md +0 -406
- data/vendor/bundle/ruby/3.3.0/gems/unicode-display_width-2.5.0/CHANGELOG.md +0 -196
- data/vendor/bundle/ruby/3.3.0/gems/unicode-display_width-2.5.0/MIT-LICENSE.txt +0 -22
- data/vendor/bundle/ruby/3.3.0/gems/unicode-display_width-2.5.0/README.md +0 -171
- data/vendor/bundle/ruby/3.3.0/gems/useragent-0.16.10/LICENSE +0 -20
- data/vendor/bundle/ruby/3.3.0/gems/useragent-0.16.10/README.md +0 -42
- data/vendor/bundle/ruby/3.3.0/gems/webrick-1.8.1/LICENSE.txt +0 -22
- data/vendor/bundle/ruby/3.3.0/gems/webrick-1.8.1/README.md +0 -61
- data/vendor/bundle/ruby/3.3.0/gems/webrick-1.8.1/webrick.gemspec +0 -70
- data/vendor/bundle/ruby/3.3.0/gems/zeitwerk-2.6.17/MIT-LICENSE +0 -20
- data/vendor/bundle/ruby/3.3.0/gems/zeitwerk-2.6.17/README.md +0 -1494
- data/vendor/bundle/ruby/3.3.0/specifications/actionpack-7.2.1.gemspec +0 -37
- data/vendor/bundle/ruby/3.3.0/specifications/actionview-7.2.1.gemspec +0 -33
- data/vendor/bundle/ruby/3.3.0/specifications/activesupport-7.2.1.gemspec +0 -36
- data/vendor/bundle/ruby/3.3.0/specifications/addressable-2.8.7.gemspec +0 -30
- data/vendor/bundle/ruby/3.3.0/specifications/appraisal-2.5.0.gemspec +0 -31
- data/vendor/bundle/ruby/3.3.0/specifications/ast-2.4.2.gemspec +0 -30
- data/vendor/bundle/ruby/3.3.0/specifications/benchmark-ips-2.13.0.gemspec +0 -28
- data/vendor/bundle/ruby/3.3.0/specifications/bigdecimal-3.1.8.gemspec +0 -25
- data/vendor/bundle/ruby/3.3.0/specifications/builder-3.3.0.gemspec +0 -22
- data/vendor/bundle/ruby/3.3.0/specifications/byebug-11.1.3.gemspec +0 -31
- data/vendor/bundle/ruby/3.3.0/specifications/coderay-1.1.3.gemspec +0 -25
- data/vendor/bundle/ruby/3.3.0/specifications/concurrent-ruby-1.3.4.gemspec +0 -24
- data/vendor/bundle/ruby/3.3.0/specifications/connection_pool-2.4.1.gemspec +0 -28
- data/vendor/bundle/ruby/3.3.0/specifications/crass-1.0.6.gemspec +0 -27
- data/vendor/bundle/ruby/3.3.0/specifications/diff-lcs-1.5.1.gemspec +0 -37
- data/vendor/bundle/ruby/3.3.0/specifications/docile-1.4.1.gemspec +0 -22
- data/vendor/bundle/ruby/3.3.0/specifications/drb-2.2.1.gemspec +0 -22
- data/vendor/bundle/ruby/3.3.0/specifications/erubi-1.13.0.gemspec +0 -29
- data/vendor/bundle/ruby/3.3.0/specifications/i18n-1.14.5.gemspec +0 -26
- data/vendor/bundle/ruby/3.3.0/specifications/io-console-0.7.2.gemspec +0 -25
- data/vendor/bundle/ruby/3.3.0/specifications/irb-1.14.0.gemspec +0 -30
- data/vendor/bundle/ruby/3.3.0/specifications/json-2.7.2.gemspec +0 -0
- data/vendor/bundle/ruby/3.3.0/specifications/language_server-protocol-3.17.0.3.gemspec +0 -31
- data/vendor/bundle/ruby/3.3.0/specifications/loofah-2.22.0.gemspec +0 -27
- data/vendor/bundle/ruby/3.3.0/specifications/method_source-1.1.0.gemspec +0 -21
- data/vendor/bundle/ruby/3.3.0/specifications/minitest-5.25.1.gemspec +0 -31
- data/vendor/bundle/ruby/3.3.0/specifications/nokogiri-1.16.7-x86_64-linux.gemspec +0 -31
- data/vendor/bundle/ruby/3.3.0/specifications/parallel-1.26.3.gemspec +0 -21
- data/vendor/bundle/ruby/3.3.0/specifications/parser-3.3.4.2.gemspec +0 -37
- data/vendor/bundle/ruby/3.3.0/specifications/pry-0.14.2.gemspec +0 -29
- data/vendor/bundle/ruby/3.3.0/specifications/pry-byebug-3.10.1.gemspec +0 -28
- data/vendor/bundle/ruby/3.3.0/specifications/public_suffix-6.0.1.gemspec +0 -24
- data/vendor/bundle/ruby/3.3.0/specifications/racc-1.8.1.gemspec +0 -28
- data/vendor/bundle/ruby/3.3.0/specifications/rack-3.1.7.gemspec +0 -31
- data/vendor/bundle/ruby/3.3.0/specifications/rack-session-2.0.0.gemspec +0 -28
- data/vendor/bundle/ruby/3.3.0/specifications/rack-test-2.1.0.gemspec +0 -29
- data/vendor/bundle/ruby/3.3.0/specifications/rackup-2.1.0.gemspec +0 -31
- data/vendor/bundle/ruby/3.3.0/specifications/rails-dom-testing-2.2.0.gemspec +0 -28
- data/vendor/bundle/ruby/3.3.0/specifications/rails-html-sanitizer-1.6.0.gemspec +0 -27
- data/vendor/bundle/ruby/3.3.0/specifications/railties-7.2.1.gemspec +0 -37
- data/vendor/bundle/ruby/3.3.0/specifications/rainbow-3.1.1.gemspec +0 -25
- data/vendor/bundle/ruby/3.3.0/specifications/rake-13.2.1.gemspec +0 -26
- data/vendor/bundle/ruby/3.3.0/specifications/rake-release-1.3.0.gemspec +0 -26
- data/vendor/bundle/ruby/3.3.0/specifications/rdoc-6.7.0.gemspec +0 -31
- data/vendor/bundle/ruby/3.3.0/specifications/regexp_parser-2.9.2.gemspec +0 -22
- data/vendor/bundle/ruby/3.3.0/specifications/reline-0.5.9.gemspec +0 -26
- data/vendor/bundle/ruby/3.3.0/specifications/rexml-3.3.6.gemspec +0 -29
- data/vendor/bundle/ruby/3.3.0/specifications/rspec-3.13.0.gemspec +0 -31
- data/vendor/bundle/ruby/3.3.0/specifications/rspec-core-3.13.0.gemspec +0 -39
- data/vendor/bundle/ruby/3.3.0/specifications/rspec-expectations-3.13.2.gemspec +0 -33
- data/vendor/bundle/ruby/3.3.0/specifications/rspec-mocks-3.13.1.gemspec +0 -33
- data/vendor/bundle/ruby/3.3.0/specifications/rspec-rails-6.1.4.gemspec +0 -37
- data/vendor/bundle/ruby/3.3.0/specifications/rspec-support-3.13.1.gemspec +0 -29
- data/vendor/bundle/ruby/3.3.0/specifications/rubocop-1.65.1.gemspec +0 -39
- data/vendor/bundle/ruby/3.3.0/specifications/rubocop-ast-1.32.1.gemspec +0 -28
- data/vendor/bundle/ruby/3.3.0/specifications/rubocop-capybara-2.21.0.gemspec +0 -27
- data/vendor/bundle/ruby/3.3.0/specifications/rubocop-factory_bot-2.26.1.gemspec +0 -27
- data/vendor/bundle/ruby/3.3.0/specifications/rubocop-performance-1.21.1.gemspec +0 -29
- data/vendor/bundle/ruby/3.3.0/specifications/rubocop-rspec-3.0.4.gemspec +0 -28
- data/vendor/bundle/ruby/3.3.0/specifications/rubocop-rspec_rails-2.30.0.gemspec +0 -28
- data/vendor/bundle/ruby/3.3.0/specifications/ruby-progressbar-1.13.0.gemspec +0 -29
- data/vendor/bundle/ruby/3.3.0/specifications/simplecov-0.22.0.gemspec +0 -28
- data/vendor/bundle/ruby/3.3.0/specifications/simplecov-cobertura-2.1.0.gemspec +0 -29
- data/vendor/bundle/ruby/3.3.0/specifications/simplecov-html-0.12.3.gemspec +0 -21
- data/vendor/bundle/ruby/3.3.0/specifications/simplecov_json_formatter-0.1.4.gemspec +0 -21
- data/vendor/bundle/ruby/3.3.0/specifications/strscan-3.1.0.gemspec +0 -24
- data/vendor/bundle/ruby/3.3.0/specifications/thor-1.3.1.gemspec +0 -28
- data/vendor/bundle/ruby/3.3.0/specifications/tzinfo-2.0.6.gemspec +0 -30
- data/vendor/bundle/ruby/3.3.0/specifications/unicode-display_width-2.5.0.gemspec +0 -29
- data/vendor/bundle/ruby/3.3.0/specifications/useragent-0.16.10.gemspec +0 -25
- data/vendor/bundle/ruby/3.3.0/specifications/webrick-1.8.1.gemspec +0 -22
- data/vendor/bundle/ruby/3.3.0/specifications/zeitwerk-2.6.17.gemspec +0 -22
@@ -1,243 +0,0 @@
|
|
1
|
-
Appraisal
|
2
|
-
=========
|
3
|
-
|
4
|
-
Find out what your Ruby gems are worth.
|
5
|
-
|
6
|
-
Synopsis
|
7
|
-
--------
|
8
|
-
|
9
|
-
Appraisal integrates with bundler and rake to test your library against
|
10
|
-
different versions of dependencies in repeatable scenarios called "appraisals."
|
11
|
-
Appraisal is designed to make it easy to check for regressions in your library
|
12
|
-
without interfering with day-to-day development using Bundler.
|
13
|
-
|
14
|
-
Installation
|
15
|
-
------------
|
16
|
-
|
17
|
-
In your package's `.gemspec`:
|
18
|
-
|
19
|
-
s.add_development_dependency "appraisal"
|
20
|
-
|
21
|
-
Note that gems must be bundled in the global namespace. Bundling gems to a
|
22
|
-
local location or vendoring plugins is not supported. If you do not want to
|
23
|
-
pollute the global namespace, one alternative is
|
24
|
-
[RVM's Gemsets](http://rvm.io/gemsets).
|
25
|
-
|
26
|
-
Setup
|
27
|
-
-----
|
28
|
-
|
29
|
-
Setting up appraisal requires an `Appraisals` file (similar to a `Gemfile`) in
|
30
|
-
your project root, named "Appraisals" (note the case), and some slight changes
|
31
|
-
to your project's `Rakefile`.
|
32
|
-
|
33
|
-
An `Appraisals` file consists of several appraisal definitions. An appraisal
|
34
|
-
definition is simply a list of gem dependencies. For example, to test with a
|
35
|
-
few versions of Rails:
|
36
|
-
|
37
|
-
appraise "rails-3" do
|
38
|
-
gem "rails", "3.2.14"
|
39
|
-
end
|
40
|
-
|
41
|
-
appraise "rails-4" do
|
42
|
-
gem "rails", "4.0.0"
|
43
|
-
end
|
44
|
-
|
45
|
-
The dependencies in your `Appraisals` file are combined with dependencies in
|
46
|
-
your `Gemfile`, so you don't need to repeat anything that's the same for each
|
47
|
-
appraisal. If something is specified in both the Gemfile and an appraisal, the
|
48
|
-
version from the appraisal takes precedence.
|
49
|
-
|
50
|
-
Usage
|
51
|
-
-----
|
52
|
-
|
53
|
-
Once you've configured the appraisals you want to use, you need to install the
|
54
|
-
dependencies for each appraisal:
|
55
|
-
|
56
|
-
$ bundle exec appraisal install
|
57
|
-
|
58
|
-
This will resolve, install, and lock the dependencies for that appraisal using
|
59
|
-
bundler. Once you have your dependencies set up, you can run any command in a
|
60
|
-
single appraisal:
|
61
|
-
|
62
|
-
$ bundle exec appraisal rails-3 rake test
|
63
|
-
|
64
|
-
This will run `rake test` using the dependencies configured for Rails 3. You can
|
65
|
-
also run each appraisal in turn:
|
66
|
-
|
67
|
-
$ bundle exec appraisal rake test
|
68
|
-
|
69
|
-
If you want to use only the dependencies from your Gemfile, just run `rake
|
70
|
-
test` as normal. This allows you to keep running with the latest versions of
|
71
|
-
your dependencies in quick test runs, but keep running the tests in older
|
72
|
-
versions to check for regressions.
|
73
|
-
|
74
|
-
In the case that you want to run all the appraisals by default when you run
|
75
|
-
`rake`, you can override your default Rake task by put this into your Rakefile:
|
76
|
-
|
77
|
-
if !ENV["APPRAISAL_INITIALIZED"] && !ENV["TRAVIS"]
|
78
|
-
task :default => :appraisal
|
79
|
-
end
|
80
|
-
|
81
|
-
(Appraisal sets `APPRAISAL_INITIALIZED` environment variable when it runs your
|
82
|
-
process. We put a check here to ensure that `appraisal rake` command should run
|
83
|
-
your real default task, which usually is your `test` task.)
|
84
|
-
|
85
|
-
Note that this may conflict with your CI setup if you decide to split the test
|
86
|
-
into multiple processes by Appraisal and you are using `rake` to run tests by
|
87
|
-
default.
|
88
|
-
|
89
|
-
### Commands
|
90
|
-
|
91
|
-
```bash
|
92
|
-
appraisal clean # Remove all generated gemfiles and lockfiles from gemfiles folder
|
93
|
-
appraisal generate # Generate a gemfile for each appraisal
|
94
|
-
appraisal help [COMMAND] # Describe available commands or one specific command
|
95
|
-
appraisal install # Resolve and install dependencies for each appraisal
|
96
|
-
appraisal list # List the names of the defined appraisals
|
97
|
-
appraisal update [LIST_OF_GEMS] # Remove all generated gemfiles and lockfiles, resolve, and install dependencies again
|
98
|
-
appraisal version # Display the version and exit
|
99
|
-
```
|
100
|
-
|
101
|
-
Under the hood
|
102
|
-
--------------
|
103
|
-
|
104
|
-
Running `appraisal install` generates a Gemfile for each appraisal by combining
|
105
|
-
your root Gemfile with the specific requirements for each appraisal. These are
|
106
|
-
stored in the `gemfiles` directory, and should be added to version control to
|
107
|
-
ensure that the same versions are always used.
|
108
|
-
|
109
|
-
When you prefix a command with `appraisal`, the command is run with the
|
110
|
-
appropriate Gemfile for that appraisal, ensuring the correct dependencies
|
111
|
-
are used.
|
112
|
-
|
113
|
-
Removing Gems using Appraisal
|
114
|
-
-------
|
115
|
-
|
116
|
-
It is common while managing multiple Gemfiles for dependencies to become deprecated and no
|
117
|
-
longer necessary, meaning they need to be removed from the Gemfile for a specific `appraisal`.
|
118
|
-
To do this, use the `remove_gem` declaration within the necessary `appraise` block in your
|
119
|
-
`Appraisals` file.
|
120
|
-
|
121
|
-
### Example Usage
|
122
|
-
|
123
|
-
**Gemfile**
|
124
|
-
```ruby
|
125
|
-
gem 'rails', '~> 4.2'
|
126
|
-
|
127
|
-
group :test do
|
128
|
-
gem 'rspec', '~> 4.0'
|
129
|
-
gem 'test_after_commit'
|
130
|
-
end
|
131
|
-
```
|
132
|
-
|
133
|
-
**Appraisals**
|
134
|
-
```ruby
|
135
|
-
appraise 'rails-5' do
|
136
|
-
gem 'rails', '~> 5.2'
|
137
|
-
|
138
|
-
group :test do
|
139
|
-
remove_gem :test_after_commit
|
140
|
-
end
|
141
|
-
end
|
142
|
-
```
|
143
|
-
|
144
|
-
Using the `Appraisals` file defined above, this is what the resulting `Gemfile` will look like:
|
145
|
-
```ruby
|
146
|
-
gem 'rails', '~> 5.2'
|
147
|
-
|
148
|
-
group :test do
|
149
|
-
gem 'rspec', '~> 4.0'
|
150
|
-
end
|
151
|
-
```
|
152
|
-
|
153
|
-
Customization
|
154
|
-
-------------
|
155
|
-
|
156
|
-
It is possible to customize the generated Gemfiles by adding a `customize_gemfiles` block to
|
157
|
-
your `Appraisals` file. The block must contain a hash of key/value pairs. Currently supported
|
158
|
-
customizations include:
|
159
|
-
- heading: a string that by default adds "# This file was generated by Appraisal" to the top of each Gemfile, (the string will be commented for you)
|
160
|
-
- single_quotes: a boolean that controls if strings are single quoted in each Gemfile, defaults to false
|
161
|
-
|
162
|
-
### Example Usage
|
163
|
-
|
164
|
-
**Appraisals**
|
165
|
-
```ruby
|
166
|
-
customize_gemfiles do
|
167
|
-
{
|
168
|
-
single_quotes: true,
|
169
|
-
heading: <<~HEADING
|
170
|
-
frozen_string_literal: true
|
171
|
-
|
172
|
-
File has been generated by Appraisal, do NOT modify it directly!
|
173
|
-
See the conventions at https://example.com/
|
174
|
-
HEADING
|
175
|
-
}
|
176
|
-
end
|
177
|
-
|
178
|
-
appraise "rails-3" do
|
179
|
-
gem "rails", "3.2.14"
|
180
|
-
end
|
181
|
-
```
|
182
|
-
|
183
|
-
Using the `Appraisals` file defined above, this is what the resulting `Gemfile` will look like:
|
184
|
-
```ruby
|
185
|
-
# frozen_string_literal: true
|
186
|
-
|
187
|
-
# File has been generated by Appraisal, do NOT modify it directly!
|
188
|
-
# See the conventions at https://example.com/
|
189
|
-
|
190
|
-
gem 'rails', '3.2.14'
|
191
|
-
```
|
192
|
-
|
193
|
-
Version Control
|
194
|
-
---------------
|
195
|
-
|
196
|
-
When using Appraisal, we recommend you check in the Gemfiles that Appraisal
|
197
|
-
generates within the gemfiles directory, but exclude the lockfiles there
|
198
|
-
(`*.gemfile.lock`.) The Gemfiles are useful when running your tests against a
|
199
|
-
continuous integration server.
|
200
|
-
|
201
|
-
Circle CI Integration
|
202
|
-
---------------------
|
203
|
-
|
204
|
-
In Circle CI you can override the default testing behaviour to customize your
|
205
|
-
testing. Using this feature you can configure appraisal to execute your tests.
|
206
|
-
|
207
|
-
In order to this you can put the following configuration in your circle.yml file:
|
208
|
-
|
209
|
-
```yml
|
210
|
-
dependencies:
|
211
|
-
post:
|
212
|
-
- bundle exec appraisal install
|
213
|
-
test:
|
214
|
-
pre:
|
215
|
-
- bundle exec appraisal rake db:create
|
216
|
-
- bundle exec appraisal rake db:migrate
|
217
|
-
override:
|
218
|
-
- bundle exec appraisal rspec
|
219
|
-
```
|
220
|
-
|
221
|
-
Notice that we are running an rspec suite. You can customize your testing
|
222
|
-
command in the `override` section and use your favourite one.
|
223
|
-
|
224
|
-
Credits
|
225
|
-
-------
|
226
|
-
|
227
|
-
![thoughtbot](https://thoughtbot.com/thoughtbot-logo-for-readmes.svg)
|
228
|
-
|
229
|
-
Appraisal is maintained and funded by [thoughtbot, inc][thoughtbot]
|
230
|
-
|
231
|
-
Thank you to all [the contributors][contributors]
|
232
|
-
|
233
|
-
The names and logos for thoughtbot are trademarks of thoughtbot, inc.
|
234
|
-
|
235
|
-
[thoughtbot]: http://thoughtbot.com/community
|
236
|
-
[contributors]: https://github.com/thoughtbot/appraisal/contributors
|
237
|
-
|
238
|
-
License
|
239
|
-
-------
|
240
|
-
|
241
|
-
Appraisal is Copyright © 2010-2013 Joe Ferris and thoughtbot, inc. It is free
|
242
|
-
software, and may be redistributed under the terms specified in the MIT-LICENSE
|
243
|
-
file.
|
@@ -1,29 +0,0 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
$:.push File.expand_path("../lib", __FILE__)
|
3
|
-
require "appraisal/version"
|
4
|
-
|
5
|
-
Gem::Specification.new do |s|
|
6
|
-
s.name = 'appraisal'
|
7
|
-
s.version = Appraisal::VERSION.dup
|
8
|
-
s.platform = Gem::Platform::RUBY
|
9
|
-
s.authors = ['Joe Ferris', 'Prem Sichanugrist']
|
10
|
-
s.email = ['jferris@thoughtbot.com', 'prem@thoughtbot.com']
|
11
|
-
s.homepage = 'http://github.com/thoughtbot/appraisal'
|
12
|
-
s.summary = 'Find out what your Ruby gems are worth'
|
13
|
-
s.description = 'Appraisal integrates with bundler and rake to test your library against different versions of dependencies in repeatable scenarios called "appraisals."'
|
14
|
-
s.license = 'MIT'
|
15
|
-
|
16
|
-
s.files = `git ls-files`.split("\n")
|
17
|
-
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
-
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
-
s.require_paths = ["lib"]
|
20
|
-
|
21
|
-
s.required_ruby_version = ">= 2.3.0"
|
22
|
-
|
23
|
-
s.add_runtime_dependency('rake')
|
24
|
-
s.add_runtime_dependency('bundler')
|
25
|
-
s.add_runtime_dependency('thor', '>= 0.14.0')
|
26
|
-
|
27
|
-
s.add_development_dependency("activesupport", ">= 3.2.21")
|
28
|
-
s.add_development_dependency('rspec', '~> 3.0')
|
29
|
-
end
|
@@ -1,20 +0,0 @@
|
|
1
|
-
Copyright (c) 2011-2013 Peter Zotov <whitequark@whitequark.org>
|
2
|
-
|
3
|
-
Permission is hereby granted, free of charge, to any person obtaining a
|
4
|
-
copy of this software and associated documentation files (the
|
5
|
-
"Software"), to deal in the Software without restriction, including
|
6
|
-
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
-
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
-
permit persons to whom the Software is furnished to do so, subject to
|
9
|
-
the following conditions:
|
10
|
-
|
11
|
-
The above copyright notice and this permission notice shall be included
|
12
|
-
in all copies or substantial portions of the Software.
|
13
|
-
|
14
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
15
|
-
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
-
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
17
|
-
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
18
|
-
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
19
|
-
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
20
|
-
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
@@ -1,12 +0,0 @@
|
|
1
|
-
{AST} is a library for manipulating abstract syntax trees.
|
2
|
-
|
3
|
-
It embraces immutability; each AST node is inherently frozen at
|
4
|
-
creation, and updating a child node requires recreating that node
|
5
|
-
and its every parent, recursively.
|
6
|
-
|
7
|
-
This is a design choice. It does create some pressure on
|
8
|
-
garbage collector, but completely eliminates all concurrency
|
9
|
-
and aliasing problems.
|
10
|
-
|
11
|
-
See also {AST::Node}, {AST::Processor::Mixin} and {AST::Sexp} for
|
12
|
-
additional recommendations and design patterns.
|
@@ -1,20 +0,0 @@
|
|
1
|
-
Copyright (c) 2015 Evan Phoenix
|
2
|
-
|
3
|
-
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
-
a copy of this software and associated documentation files (the
|
5
|
-
'Software'), to deal in the Software without restriction, including
|
6
|
-
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
-
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
-
permit persons to whom the Software is furnished to do so, subject to
|
9
|
-
the following conditions:
|
10
|
-
|
11
|
-
The above copyright notice and this permission notice shall be
|
12
|
-
included in all copies or substantial portions of the Software.
|
13
|
-
|
14
|
-
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
15
|
-
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
-
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
17
|
-
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
18
|
-
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
19
|
-
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
20
|
-
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
@@ -1,279 +0,0 @@
|
|
1
|
-
# benchmark-ips
|
2
|
-
|
3
|
-
* rdoc :: http://rubydoc.info/gems/benchmark-ips
|
4
|
-
* home :: https://github.com/evanphx/benchmark-ips
|
5
|
-
|
6
|
-
[![Gem Version](https://badge.fury.io/rb/benchmark-ips.svg)](http://badge.fury.io/rb/benchmark-ips)
|
7
|
-
[![Build Status](https://secure.travis-ci.org/evanphx/benchmark-ips.svg)](http://travis-ci.org/evanphx/benchmark-ips)
|
8
|
-
[![Inline docs](http://inch-ci.org/github/evanphx/benchmark-ips.svg)](http://inch-ci.org/github/evanphx/benchmark-ips)
|
9
|
-
|
10
|
-
* https://github.com/evanphx/benchmark-ips
|
11
|
-
|
12
|
-
## DESCRIPTION:
|
13
|
-
|
14
|
-
An iterations per second enhancement to Benchmark.
|
15
|
-
|
16
|
-
## FEATURES/PROBLEMS:
|
17
|
-
|
18
|
-
* benchmark/ips - benchmarks a blocks iterations/second. For short snippits
|
19
|
-
of code, ips automatically figures out how many times to run the code
|
20
|
-
to get interesting data. No more guessing at random iteration counts!
|
21
|
-
|
22
|
-
## SYNOPSIS:
|
23
|
-
|
24
|
-
```ruby
|
25
|
-
require 'benchmark/ips'
|
26
|
-
|
27
|
-
Benchmark.ips do |x|
|
28
|
-
# Configure the number of seconds used during
|
29
|
-
# the warmup phase (default 2) and calculation phase (default 5)
|
30
|
-
x.config(:time => 5, :warmup => 2)
|
31
|
-
|
32
|
-
# These parameters can also be configured this way
|
33
|
-
x.time = 5
|
34
|
-
x.warmup = 2
|
35
|
-
|
36
|
-
# Typical mode, runs the block as many times as it can
|
37
|
-
x.report("addition") { 1 + 2 }
|
38
|
-
|
39
|
-
# To reduce overhead, the number of iterations is passed in
|
40
|
-
# and the block must run the code the specific number of times.
|
41
|
-
# Used for when the workload is very small and any overhead
|
42
|
-
# introduces incorrectable errors.
|
43
|
-
x.report("addition2") do |times|
|
44
|
-
i = 0
|
45
|
-
while i < times
|
46
|
-
1 + 2
|
47
|
-
i += 1
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
# To reduce overhead even more, grafts the code given into
|
52
|
-
# the loop that performs the iterations internally to reduce
|
53
|
-
# overhead. Typically not needed, use the |times| form instead.
|
54
|
-
x.report("addition3", "1 + 2")
|
55
|
-
|
56
|
-
# Really long labels should be formatted correctly
|
57
|
-
x.report("addition-test-long-label") { 1 + 2 }
|
58
|
-
|
59
|
-
# Compare the iterations per second of the various reports!
|
60
|
-
x.compare!
|
61
|
-
end
|
62
|
-
```
|
63
|
-
|
64
|
-
This will generate the following report:
|
65
|
-
|
66
|
-
```
|
67
|
-
Calculating -------------------------------------
|
68
|
-
addition 71.254k i/100ms
|
69
|
-
addition2 68.658k i/100ms
|
70
|
-
addition3 83.079k i/100ms
|
71
|
-
addition-test-long-label
|
72
|
-
70.129k i/100ms
|
73
|
-
-------------------------------------------------
|
74
|
-
addition 4.955M (± 8.7%) i/s - 24.155M
|
75
|
-
addition2 24.011M (± 9.5%) i/s - 114.246M
|
76
|
-
addition3 23.958M (±10.1%) i/s - 115.064M
|
77
|
-
addition-test-long-label
|
78
|
-
5.014M (± 9.1%) i/s - 24.545M
|
79
|
-
|
80
|
-
Comparison:
|
81
|
-
addition2: 24011974.8 i/s
|
82
|
-
addition3: 23958619.8 i/s - 1.00x slower
|
83
|
-
addition-test-long-label: 5014756.0 i/s - 4.79x slower
|
84
|
-
addition: 4955278.9 i/s - 4.85x slower
|
85
|
-
```
|
86
|
-
|
87
|
-
Benchmark/ips will report the number of iterations per second for a given block
|
88
|
-
of code. When analyzing the results, notice the percent of [standard
|
89
|
-
deviation](http://en.wikipedia.org/wiki/Standard\_deviation) which tells us how
|
90
|
-
spread out our measurements are from the average. A high standard deviation
|
91
|
-
could indicate the results having too much variability.
|
92
|
-
|
93
|
-
One benefit to using this method is benchmark-ips automatically determines the
|
94
|
-
data points for testing our code, so we can focus on the results instead of
|
95
|
-
guessing iteration counts as we do with the traditional Benchmark library.
|
96
|
-
|
97
|
-
### Custom Suite
|
98
|
-
|
99
|
-
Pass a custom suite to disable garbage collection during benchmark:
|
100
|
-
|
101
|
-
```ruby
|
102
|
-
require 'benchmark/ips'
|
103
|
-
|
104
|
-
# Enable and start GC before each job run. Disable GC afterwards.
|
105
|
-
#
|
106
|
-
# Inspired by https://www.omniref.com/ruby/2.2.1/symbols/Benchmark/bm?#annotation=4095926&line=182
|
107
|
-
class GCSuite
|
108
|
-
def warming(*)
|
109
|
-
run_gc
|
110
|
-
end
|
111
|
-
|
112
|
-
def running(*)
|
113
|
-
run_gc
|
114
|
-
end
|
115
|
-
|
116
|
-
def warmup_stats(*)
|
117
|
-
end
|
118
|
-
|
119
|
-
def add_report(*)
|
120
|
-
end
|
121
|
-
|
122
|
-
private
|
123
|
-
|
124
|
-
def run_gc
|
125
|
-
GC.enable
|
126
|
-
GC.start
|
127
|
-
GC.disable
|
128
|
-
end
|
129
|
-
end
|
130
|
-
|
131
|
-
suite = GCSuite.new
|
132
|
-
|
133
|
-
Benchmark.ips do |x|
|
134
|
-
x.config(:suite => suite)
|
135
|
-
x.report("job1") { ... }
|
136
|
-
x.report("job2") { ... }
|
137
|
-
end
|
138
|
-
```
|
139
|
-
|
140
|
-
### Independent benchmarking
|
141
|
-
|
142
|
-
If you are comparing multiple implementations of a piece of code you may want
|
143
|
-
to benchmark them in separate invocations of Ruby so that the measurements
|
144
|
-
are independent of each other. You can do this with the `hold!` command.
|
145
|
-
|
146
|
-
```ruby
|
147
|
-
Benchmark.ips do |x|
|
148
|
-
|
149
|
-
# Hold results between multiple invocations of Ruby
|
150
|
-
x.hold! 'filename'
|
151
|
-
|
152
|
-
end
|
153
|
-
```
|
154
|
-
|
155
|
-
This will run only one benchmarks each time you run the command, storing
|
156
|
-
results in the specified file. The file is deleted when all results have been
|
157
|
-
gathered and the report is shown.
|
158
|
-
|
159
|
-
Alternatively, if you prefer a different approach, the `save!` command is
|
160
|
-
available. Examples for [hold!](examples/hold.rb) and [save!](examples/save.rb) are available in
|
161
|
-
the `examples/` directory.
|
162
|
-
|
163
|
-
|
164
|
-
### Multiple iterations
|
165
|
-
|
166
|
-
In some cases you may want to run multiple iterations of the warmup and
|
167
|
-
calculation stages and take only the last result for comparison. This is useful
|
168
|
-
if you are benchmarking with an implementation of Ruby that optimizes using
|
169
|
-
tracing or on-stack-replacement, because to those implementations the
|
170
|
-
calculation phase may appear as new, unoptimized code.
|
171
|
-
|
172
|
-
You can do this with the `iterations` option, which by default is `1`. The
|
173
|
-
total time spent will then be `iterations * warmup + iterations * time` seconds.
|
174
|
-
|
175
|
-
```ruby
|
176
|
-
Benchmark.ips do |x|
|
177
|
-
|
178
|
-
x.config(:iterations => 3)
|
179
|
-
|
180
|
-
# or
|
181
|
-
|
182
|
-
x.iterations = 3
|
183
|
-
|
184
|
-
end
|
185
|
-
```
|
186
|
-
|
187
|
-
### Online sharing
|
188
|
-
|
189
|
-
If you want to quickly share your benchmark result with others, run you benchmark
|
190
|
-
with `SHARE=1` argument. For example: `SHARE=1 ruby my_benchmark.rb`.
|
191
|
-
|
192
|
-
Result will be sent to [benchmark.fyi](https://ips.fastruby.io/) and benchmark-ips
|
193
|
-
will display the link to share the benchmark's result.
|
194
|
-
|
195
|
-
If you want to run your own instance of [benchmark.fyi](https://github.com/evanphx/benchmark.fyi)
|
196
|
-
and share it to that instance, you can do this: `SHARE_URL=https://ips.example.com ruby my_benchmark.rb`
|
197
|
-
|
198
|
-
### Advanced Statistics
|
199
|
-
|
200
|
-
By default, the margin of error shown is plus-minus one standard deviation. If
|
201
|
-
a more advanced statistical test is wanted, a bootstrap confidence interval
|
202
|
-
can be calculated instead. A bootstrap confidence interval has the advantages of
|
203
|
-
arguably being more mathematically sound for this application than a standard
|
204
|
-
deviation, it additionally produces an error for relative slowdowns, which the
|
205
|
-
standard deviation does not, and it is arguably more intuitive and actionable.
|
206
|
-
|
207
|
-
When a bootstrap confidence interval is used, a median of the interval is used
|
208
|
-
rather than the mean of the samples, which is what you get with the default
|
209
|
-
standard deviation.
|
210
|
-
|
211
|
-
The bootstrap confidence interval used is the one described by Tomas Kalibera.
|
212
|
-
Note that for this technique to be valid your benchmark should have reached a
|
213
|
-
non-periodic steady state with statistically independent samples (it should
|
214
|
-
have warmed up) by the time measurements start.
|
215
|
-
|
216
|
-
Using a bootstrap confidence internal requires that the 'kalibera' gem is
|
217
|
-
installed separately. This gem is not a formal dependency, as by default it is
|
218
|
-
not needed.
|
219
|
-
|
220
|
-
```
|
221
|
-
gem install kalibera
|
222
|
-
```
|
223
|
-
|
224
|
-
```ruby
|
225
|
-
Benchmark.ips do |x|
|
226
|
-
|
227
|
-
# The default is :stats => :sd, which doesn't have a configurable confidence
|
228
|
-
x.config(:stats => :bootstrap, :confidence => 95)
|
229
|
-
|
230
|
-
# or
|
231
|
-
|
232
|
-
x.stats = :bootstrap
|
233
|
-
x.confidence = 95
|
234
|
-
|
235
|
-
# confidence is 95% by default, so it can be omitted
|
236
|
-
|
237
|
-
end
|
238
|
-
```
|
239
|
-
|
240
|
-
### Output as JSON
|
241
|
-
|
242
|
-
You can generate output in JSON. If you want to write JSON to a file, pass filename to `json!` method:
|
243
|
-
|
244
|
-
```ruby
|
245
|
-
Benchmark.ips do |x|
|
246
|
-
x.report("some report") { }
|
247
|
-
x.json! 'filename.json'
|
248
|
-
end
|
249
|
-
```
|
250
|
-
|
251
|
-
If you want to write JSON to STDOUT, pass `STDOUT` to `json!` method and set `quiet = true` before `json!`:
|
252
|
-
|
253
|
-
```ruby
|
254
|
-
Benchmark.ips do |x|
|
255
|
-
x.report("some report") { }
|
256
|
-
x.quiet = true
|
257
|
-
x.json! STDOUT
|
258
|
-
end
|
259
|
-
```
|
260
|
-
|
261
|
-
This is useful when the output from `benchmark-ips` becomes an input of other tools via stdin.
|
262
|
-
|
263
|
-
## REQUIREMENTS:
|
264
|
-
|
265
|
-
* None!
|
266
|
-
|
267
|
-
## INSTALL:
|
268
|
-
|
269
|
-
$ gem install benchmark-ips
|
270
|
-
|
271
|
-
## DEVELOPERS:
|
272
|
-
|
273
|
-
After checking out the source, run:
|
274
|
-
|
275
|
-
$ rake newb
|
276
|
-
|
277
|
-
This task will install any missing dependencies, run the tests/specs,
|
278
|
-
and generate the RDoc.
|
279
|
-
|
@@ -1,56 +0,0 @@
|
|
1
|
-
Ruby is copyrighted free software by Yukihiro Matsumoto <matz@netlab.jp>.
|
2
|
-
You can redistribute it and/or modify it under either the terms of the
|
3
|
-
2-clause BSDL (see the file BSDL), or the conditions below:
|
4
|
-
|
5
|
-
1. You may make and give away verbatim copies of the source form of the
|
6
|
-
software without restriction, provided that you duplicate all of the
|
7
|
-
original copyright notices and associated disclaimers.
|
8
|
-
|
9
|
-
2. You may modify your copy of the software in any way, provided that
|
10
|
-
you do at least ONE of the following:
|
11
|
-
|
12
|
-
a) place your modifications in the Public Domain or otherwise
|
13
|
-
make them Freely Available, such as by posting said
|
14
|
-
modifications to Usenet or an equivalent medium, or by allowing
|
15
|
-
the author to include your modifications in the software.
|
16
|
-
|
17
|
-
b) use the modified software only within your corporation or
|
18
|
-
organization.
|
19
|
-
|
20
|
-
c) give non-standard binaries non-standard names, with
|
21
|
-
instructions on where to get the original software distribution.
|
22
|
-
|
23
|
-
d) make other distribution arrangements with the author.
|
24
|
-
|
25
|
-
3. You may distribute the software in object code or binary form,
|
26
|
-
provided that you do at least ONE of the following:
|
27
|
-
|
28
|
-
a) distribute the binaries and library files of the software,
|
29
|
-
together with instructions (in the manual page or equivalent)
|
30
|
-
on where to get the original distribution.
|
31
|
-
|
32
|
-
b) accompany the distribution with the machine-readable source of
|
33
|
-
the software.
|
34
|
-
|
35
|
-
c) give non-standard binaries non-standard names, with
|
36
|
-
instructions on where to get the original software distribution.
|
37
|
-
|
38
|
-
d) make other distribution arrangements with the author.
|
39
|
-
|
40
|
-
4. You may modify and include the part of the software into any other
|
41
|
-
software (possibly commercial). But some files in the distribution
|
42
|
-
are not written by the author, so that they are not under these terms.
|
43
|
-
|
44
|
-
For the list of those files and their copying conditions, see the
|
45
|
-
file LEGAL.
|
46
|
-
|
47
|
-
5. The scripts and library files supplied as input to or produced as
|
48
|
-
output from the software do not automatically fall under the
|
49
|
-
copyright of the software, but belong to whomever generated them,
|
50
|
-
and may be sold commercially, and may be aggregated with this
|
51
|
-
software.
|
52
|
-
|
53
|
-
6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
|
54
|
-
IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
55
|
-
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
56
|
-
PURPOSE.
|