kettle-jem 7.1.39 → 7.1.41

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.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/CHANGELOG.md +117 -1
  4. data/README.md +43 -44
  5. data/lib/kettle/jem/templates/.duel.rb.example +25 -0
  6. data/lib/kettle/jem/templates/.github/FUNDING.yml.example +0 -1
  7. data/lib/kettle/jem/templates/.github/FUNDING.yml.no-osc.example +0 -1
  8. data/lib/kettle/jem/templates/.github/workflows/auto-assign.yml.example +1 -1
  9. data/lib/kettle/jem/templates/.github/workflows/coverage.yml.example +1 -0
  10. data/lib/kettle/jem/templates/.github/workflows/perf.yml.example +186 -0
  11. data/lib/kettle/jem/templates/.github/workflows/truffleruby-22.3.yml.example +3 -19
  12. data/lib/kettle/jem/templates/.structuredmerge/kettle-jem.yml.example +33 -2
  13. data/lib/kettle/jem/templates/AGENTS.md.example +1 -0
  14. data/lib/kettle/jem/templates/CHANGELOG.transfer.md +6 -1
  15. data/lib/kettle/jem/templates/CONTRIBUTING.md.example +1 -0
  16. data/lib/kettle/jem/templates/README.md.example +17 -40
  17. data/lib/kettle/jem/templates/Rakefile.example +1 -0
  18. data/lib/kettle/jem/templates/gem.gemspec.example +10 -6
  19. data/lib/kettle/jem/templates/gemfiles/modular/cgi/vHEAD.gemfile.example +1 -1
  20. data/lib/kettle/jem/templates/gemfiles/modular/coverage.gemfile.example +1 -1
  21. data/lib/kettle/jem/templates/gemfiles/modular/debug.gemfile.example +1 -1
  22. data/lib/kettle/jem/templates/gemfiles/modular/documentation.gemfile.example +1 -1
  23. data/lib/kettle/jem/templates/gemfiles/modular/duel.gemfile.example +18 -0
  24. data/lib/kettle/jem/templates/gemfiles/modular/optional.gemfile.example +2 -2
  25. data/lib/kettle/jem/templates/gemfiles/modular/recording/r3/recording.gemfile.example +2 -2
  26. data/lib/kettle/jem/templates/gemfiles/modular/recording/r4/recording.gemfile.example +2 -2
  27. data/lib/kettle/jem/templates/gemfiles/modular/stringio/r2/v3.0.gemfile.example +1 -1
  28. data/lib/kettle/jem/templates/gemfiles/modular/stringio/r2.4/v0.0.2.gemfile.example +1 -1
  29. data/lib/kettle/jem/templates/gemfiles/modular/stringio/r3/v3.0.gemfile.example +1 -1
  30. data/lib/kettle/jem/templates/gemfiles/modular/stringio/r4/v3.0.gemfile.example +1 -1
  31. data/lib/kettle/jem/templates/gemfiles/modular/style.gemfile.example +1 -1
  32. data/lib/kettle/jem/templates/gemfiles/modular/templating.gemfile.example +1 -1
  33. data/lib/kettle/jem/templates/gemfiles/modular/webrick/vHEAD.gemfile.example +1 -1
  34. data/lib/kettle/jem/templates/mise.toml.example +1 -0
  35. data/lib/kettle/jem/templates/mise.toml.no-osc.example +1 -0
  36. data/lib/kettle/jem/templates/shim/Gemfile.example +1 -1
  37. data/lib/kettle/jem/templates/shim/gem.gemspec.example +2 -2
  38. data/lib/kettle/jem/version.rb +1 -1
  39. data/lib/kettle/jem.rb +527 -140
  40. data.tar.gz.sig +0 -0
  41. metadata +40 -16
  42. metadata.gz.sig +0 -0
@@ -22,7 +22,8 @@ Available fields are `profile`, `topology`, `ruby.min`, `engine.jruby`,
22
22
  `feature.rubyforum`, `feature.rubyforum_project_tag`,
23
23
  `feature.corporate_sponsors`, `feature.organization_logo`,
24
24
  `feature.structuredmerge_driver`, `feature.dedicated_version_gem`,
25
- `workflow.dep_heads`, `workflow.jruby_94`, and `version_gem.mode`. Boolean
25
+ `workflow.dep_heads`, `workflow.jruby_94`, `workflow.duel`, and
26
+ `version_gem.mode`. Boolean
26
27
  fields accept `true` or `false`; `ruby.min` accepts normal version comparisons;
27
28
  the other fields accept `=` or `!=`.
28
29
 
@@ -46,6 +47,10 @@ the other fields accept `=` or `!=`.
46
47
  `engines:` and has no template-managed modular home (e.g. `sqlite3` on
47
48
  `jruby`). Review each entry and pick a resolution per the project's own
48
49
  engine support needs.
50
+ - kettle-jem-template-20261025-001 [if workflow.duel=true] - Duel performance regression guards: the
51
+ Perf workflow compares each pull request, each push to main, and, on a
52
+ schedule, the last release, and `rake duel` compares local changes, with
53
+ the benchmarks in `duel/`.
49
54
 
50
55
  ## Changed
51
56
 
@@ -95,6 +95,7 @@ Coverage (kettle-soup-cover / SimpleCov)
95
95
  - K_SOUP_COV_MIN_LINE: Minimum line coverage threshold (integer, e.g., 100)
96
96
  - K_SOUP_COV_MIN_BRANCH: Minimum branch coverage threshold (integer, e.g., 100)
97
97
  - K_SOUP_COV_MIN_HARD: Fail the run if thresholds are not met (true/false)
98
+ - K_SOUP_COV_MIN_STRICT: Require 100% line, branch, and method coverage (true/false)
98
99
  - K_SOUP_COV_MULTI_FORMATTERS: Enable multiple formatters at once (true/false)
99
100
  - K_SOUP_COV_OPEN_BIN: Path to browser opener for HTML (empty disables auto-open)
100
101
  - MAX_ROWS: Limit console output rows for simplecov-console (e.g., 1)
@@ -4,7 +4,7 @@
4
4
 
5
5
  # {KJ|PROJECT_EMOJI} {KJ|README:TITLE}
6
6
 
7
- [![Version][👽versioni]][👽version] [![Ruby Users Forum][✉️ruby-forum-top-img]][✉️ruby-forum] [![GitHub tag (latest SemVer)][⛳️tag-img]][⛳️tag] {KJ|README:LICENSE_BADGE} [![Total downloads][👽dl-ranki]][👽dl-rank] [![CodeCov Test Coverage][🏀codecovi]][🏀codecov] [![Coveralls Test Coverage][🏀coveralls-img]][🏀coveralls] [![QLTY Test Coverage][🏀qlty-covi]][🏀qlty-cov] [![QLTY Maintainability][🏀qlty-mnti]][🏀qlty-mnt] [![CI Heads][🚎3-hd-wfi]][🚎3-hd-wf] [![CI Runtime Dependencies @ HEAD][🚎12-crh-wfi]][🚎12-crh-wf] [![CI Current][🚎11-c-wfi]][🚎11-c-wf] [![CI Truffle Ruby][🚎9-t-wfi]][🚎9-t-wf] [![CI JRuby][🚎10-j-wfi]][🚎10-j-wf] [![Deps Locked][🚎13-🔒️-wfi]][🚎13-🔒️-wf] [![Deps Unlocked][🚎14-🔓️-wfi]][🚎14-🔓️-wf] [![CI Test Coverage][🚎2-cov-wfi]][🚎2-cov-wf] [![CI Style][🚎5-st-wfi]][🚎5-st-wf] {KJ|README:LICENSE_EYE_WORKFLOW_BADGE} {KJ|README:FOSSA_BADGE}
7
+ [![Version][👽versioni]][👽version] [![Ruby Users Forum][✉️ruby-forum-top-img]][✉️ruby-forum] [![GitHub tag (latest SemVer)][⛳️tag-img]][⛳️tag] {KJ|README:LICENSE_BADGE} [![Total downloads][👽dl-ranki]][👽dl-rank] [![CodeCov Test Coverage][🏀codecovi]][🏀codecov] [![Coveralls Test Coverage][🏀coveralls-img]][🏀coveralls] [![QLTY Test Coverage][🏀qlty-covi]][🏀qlty-cov] [![QLTY Maintainability][🏀qlty-mnti]][🏀qlty-mnt] [![CI Heads][🚎3-hd-wfi]][🚎3-hd-wf] [![CI Runtime Dependencies @ HEAD][🚎12-crh-wfi]][🚎12-crh-wf] [![CI Current][🚎11-c-wfi]][🚎11-c-wf] [![CI Truffle Ruby][🚎9-t-wfi]][🚎9-t-wf] [![CI JRuby][🚎10-j-wfi]][🚎10-j-wf] [![Deps Locked][🚎13-🔒️-wfi]][🚎13-🔒️-wf] [![Deps Unlocked][🚎14-🔓️-wfi]][🚎14-🔓️-wf] [![CI Test Coverage][🚎2-cov-wfi]][🚎2-cov-wf] [![CI Style][🚎5-st-wfi]][🚎5-st-wf] {KJ|README:LICENSE_EYE_WORKFLOW_BADGE} {KJ|README:FOSSA_BADGE} {KJ|README:DUEL_BADGE}
8
8
 
9
9
  `if ci_badges.map(&:color).detect { it != "green"}` ☝️ [let me know on Discord][✉️discord-invite] or [RubyForum][✉️ruby-forum], as I may have missed the notification.
10
10
 
@@ -50,11 +50,12 @@ I've summarized my thoughts in [this blog post](https://dev.to/galtzo/hostile-ta
50
50
 
51
51
  ### Compatibility
52
52
 
53
- Compatible with MRI Ruby {KJ|MIN_RUBY}+, and concordant releases of JRuby, and TruffleRuby.
53
+ The gem's declared runtime compatibility floor is MRI Ruby {KJ|MIN_RUBY}+, with concordant releases of JRuby and TruffleRuby.
54
54
  CI workflows and Appraisals are generated for MRI Ruby {KJ|MIN_TEST_RUBY}+.
55
- This test floor is configured by `ruby.test_minimum` in `.kettle-jem.yml` and
56
- may be higher than the gem's runtime compatibility floor when legacy Rubies are
57
- not practical for the current toolchain.
55
+ The current MRI CI lane runs on {KJ|README:CURRENT_MRI_PLATFORMS}.
56
+ The test floor is configured by `ruby.test_minimum` in `.kettle-jem.yml`.
57
+ When it is higher than the runtime floor, older runtime-compatible Rubies are
58
+ not covered by the generated CI or Appraisal matrix.
58
59
 
59
60
  <a href="https://github.com/kettle-dev"><img alt="kettle-dev Logo by Aboling0, CC BY-SA 4.0" src="https://logos.galtzo.com/assets/images/kettle-dev/avatar-128px.svg" width="14%" align="right"/></a>
60
61
 
@@ -64,10 +65,6 @@ The _amazing_ test matrix is powered by the kettle-dev stack.
64
65
 
65
66
  {KJ|README:FAMILY_INTRO_BACKEND_MATRIX}
66
67
 
67
- ### Runtime and Platform Support
68
-
69
- {KJ|README:PLATFORM_SUPPORT_TABLE}
70
-
71
68
  ### Federated DVCS
72
69
 
73
70
  <details markdown="1">
@@ -83,31 +80,12 @@ The _amazing_ test matrix is powered by the kettle-dev stack.
83
80
 
84
81
  ### Enterprise Support
85
82
 
86
- <!-- KJ:FUNDING_TIDELIFT:START -->
87
- [![Tidelift](https://tidelift.com/badges/package/rubygems/{KJ|GEM_NAME})](https://tidelift.com/subscription/pkg/rubygems-{KJ|GEM_NAME}?utm_source=rubygems-{KJ|GEM_NAME}&utm_medium=referral&utm_campaign=readme)
88
- <!-- KJ:FUNDING_TIDELIFT:END -->
89
-
90
- Available as part of the Tidelift Subscription.
91
-
92
- <details markdown="1">
93
- <summary>Need enterprise-level guarantees?</summary>
94
-
95
- The maintainers of this and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source packages you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact packages you use.
96
-
97
- [![Get help from me on Tidelift][🏙️entsup-tidelift-img]][🏙️entsup-tidelift]
83
+ For enterprise support from the maintainer, use [Upwork][👨🏼‍🏫expsup-upwork] or [CodeMentor][👨🏼‍🏫expsup-codementor].
98
84
 
99
- - 💡Subscribe for support guarantees covering _all_ your FLOSS dependencies
100
- - 💡Tidelift is part of [Sonar][🏙️entsup-tidelift-sonar]
101
- - 💡Tidelift pays maintainers to maintain the software you depend on!<br/>📊`@`Pointy Haired Boss: An [enterprise support][🏙️entsup-tidelift] subscription is "[never gonna let you down][🧮kloc]", and *supports* open source maintainers
102
-
103
- Alternatively:
85
+ Other support channels:
104
86
 
105
87
  - [![Ruby Users Forum][✉️ruby-forum-img]][✉️ruby-forum]
106
88
  - [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite]
107
- - [![Get help from me on Upwork][👨🏼‍🏫expsup-upwork-img]][👨🏼‍🏫expsup-upwork]
108
- - [![Get help from me on Codementor][👨🏼‍🏫expsup-codementor-img]][👨🏼‍🏫expsup-codementor]
109
-
110
- </details>
111
89
 
112
90
  ## ✨ Installation
113
91
 
@@ -143,21 +121,22 @@ Currently, [Open Collective][🖇osc] is our preferred funding platform.
143
121
  Currently, [GitHub Sponsors][🖇sponsor], and [Liberapay][⛳liberapay] are our preferred funding platforms.
144
122
  <!-- KJ:NO_OPEN_COLLECTIVE:END -->
145
123
 
124
+ ### Corporate Sponsorship
125
+
126
+ {KJ|README:CORPORATE_SPONSORS_DETAIL}
127
+
146
128
  **If you're working in a company that's making significant use of {KJ|GH_ORG} tools we'd
147
129
  appreciate it if you suggest to your company to become a {KJ|GH_ORG} sponsor.**
148
130
 
131
+ ### Individual Support
132
+
149
133
  You can support the development of {KJ|GH_ORG} tools via
150
134
  [GitHub Sponsors][🖇sponsor],
151
135
  [Liberapay][⛳liberapay],
152
- [PayPal][🖇paypal],
153
136
  <!-- KJ:OPEN_COLLECTIVE:START -->
154
- [Open Collective][🖇osc]
137
+ [Open Collective][🖇osc],
155
138
  <!-- KJ:OPEN_COLLECTIVE:END -->
156
- and [Tidelift][🏙️entsup-tidelift].
157
-
158
- | 📍 NOTE |
159
- |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
160
- | If doing a sponsorship in the form of donation is problematic for your company <br/> from an accounting standpoint, we'd recommend the use of Tidelift, <br/> where you can get a support-like subscription instead. |
139
+ and [PayPal][🖇paypal].
161
140
 
162
141
  <!-- KJ:OPEN_COLLECTIVE:START -->
163
142
  ### Open Collective for Individuals
@@ -386,9 +365,6 @@ Thanks for RTFM. ☺️
386
365
  [👨🏼‍🏫expsup-upwork-img]: https://img.shields.io/badge/UpWork-13544E?style=for-the-badge&logo=Upwork&logoColor=white
387
366
  [👨🏼‍🏫expsup-codementor]: https://www.codementor.io/peterboling?utm_source=github&utm_medium=button&utm_term=peterboling&utm_campaign=github
388
367
  [👨🏼‍🏫expsup-codementor-img]: https://img.shields.io/badge/CodeMentor-Get_Help-1abc9c?style=for-the-badge&logo=CodeMentor&logoColor=white
389
- [🏙️entsup-tidelift]: https://tidelift.com/subscription/pkg/rubygems-{KJ|GEM_NAME}?utm_source=rubygems-{KJ|GEM_NAME}&utm_medium=referral&utm_campaign=readme
390
- [🏙️entsup-tidelift-img]: https://img.shields.io/badge/Tidelift_and_Sonar-Enterprise_Support-FD3456?style=for-the-badge&logo=sonar&logoColor=white
391
- [🏙️entsup-tidelift-sonar]: https://blog.tidelift.com/tidelift-joins-sonar
392
368
  [💁🏼‍♂️peterboling]: http://www.peterboling.com
393
369
  [🚂railsbling]: http://www.railsbling.com
394
370
  [📜src-gl-img]: https://img.shields.io/badge/GitLab-FBA326?style=for-the-badge&logo=Gitlab&logoColor=orange
@@ -535,6 +511,7 @@ Thanks for RTFM. ☺️
535
511
  [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
536
512
  {KJ|README:LICENSE_REFS}
537
513
  {KJ|README:FOSSA_REFS}
514
+ {KJ|README:DUEL_REFS}
538
515
  [📄ilo-declaration]: https://www.ilo.org/declaration/lang--en/index.htm
539
516
  [📄ilo-declaration-img]: https://img.shields.io/badge/ILO_Fundamental_Principles-✓-259D6C.svg?style=flat
540
517
  [🚎yard-current]: http://rubydoc.info/gems/{KJ|GEM_NAME}
@@ -153,6 +153,7 @@ if kettle_jem_selftest_unavailable_note
153
153
  end
154
154
  end
155
155
 
156
+ {KJ|RAKE:DUEL_TASK}
156
157
  ### RELEASE TASKS
157
158
  # Setup stone_checksums
158
159
  begin
@@ -13,8 +13,12 @@ gem_version =
13
13
  # See: https://github.com/panorama-ed/memo_wise/pull/397
14
14
  Module.new.tap { |mod| Kernel.load("#{__dir__}/lib/{KJ|GEM_NAME_PATH}/version.rb", mod) }::{KJ|NAMESPACE}::Version::VERSION
15
15
  else
16
- require_relative "lib/{KJ|GEM_NAME_PATH}/version"
17
- {KJ|NAMESPACE}::Version::VERSION
16
+ # Ruby < 3.1: Kernel.load(path, module) is unavailable, but Module#module_eval with file
17
+ # metadata works on Ruby 2.2+. Anonymous loading matters beyond coverage: evaluating this
18
+ # gemspec (e.g. by bundler/setup in a subprocess) must not define top-level constants,
19
+ # which isolated-loading specs assert on.
20
+ version_path = "#{__dir__}/lib/{KJ|GEM_NAME_PATH}/version.rb"
21
+ Module.new.tap { |mod| mod.module_eval(File.read(version_path), version_path, 1) }::{KJ|NAMESPACE}::Version::VERSION
18
22
  end
19
23
 
20
24
  Gem::Specification.new do |spec|
@@ -102,7 +106,7 @@ Gem::Specification.new do |spec|
102
106
  spec.require_paths = ["lib"]
103
107
 
104
108
  # Utilities
105
- spec.add_dependency("version_gem", "~> 1.1", ">= 1.1.15") # ruby >= 2.2.0
109
+ spec.add_dependency("version_gem", "~> 1.1", ">= 1.1.17") # ruby >= 2.2.0
106
110
 
107
111
  # NOTE: It is preferable to list development dependencies in the gemspec due to increased
108
112
  # visibility and discoverability.
@@ -118,7 +122,7 @@ Gem::Specification.new do |spec|
118
122
  # and preferably a modular one (see gemfiles/modular/*.gemfile).
119
123
 
120
124
  # Dev, Test, & Release Tasks
121
- spec.add_development_dependency("kettle-dev", "~> 3.1", ">= 3.1.21") # ruby >= {KJ|MIN_TEST_RUBY}
125
+ spec.add_development_dependency("kettle-dev", "~> 3.1", ">= 3.1.26") # ruby >= {KJ|MIN_TEST_RUBY}
122
126
 
123
127
  # Security
124
128
  spec.add_development_dependency("bundler-audit", "~> 0.9.3") # ruby >= 2.0.0
@@ -131,9 +135,9 @@ Gem::Specification.new do |spec|
131
135
 
132
136
  # Testing
133
137
  # Loads version files in anonymous namespaces for coverage without constant redefinition warnings.
134
- spec.add_development_dependency("anonymous_loader", "~> 0.1", ">= 0.1.3") # ruby >= 2.2.0
138
+ spec.add_development_dependency("anonymous_loader", "~> 0.1", ">= 0.1.5") # ruby >= 2.2.0
135
139
  spec.add_development_dependency("appraisal2", "~> 3.2", ">= 3.2.6") # ruby >= 1.8.7, for testing against multiple versions of dependencies
136
- spec.add_development_dependency("kettle-test", "~> 2.0", ">= 2.0.27") # ruby >= {KJ|MIN_TEST_RUBY}
140
+ spec.add_development_dependency("kettle-test", "~> 2.0", ">= 2.0.29") # ruby >= {KJ|MIN_TEST_RUBY}
137
141
  spec.add_development_dependency("turbo_tests2", "~> 4.0", ">= 4.0.0") # ruby >= 2.4.0, default kettle-test runner
138
142
 
139
143
  # Releasing
@@ -1 +1 @@
1
- gem "cgi", ">= 0.5"
1
+ gem "cgi", ">= 0.5.2"
@@ -7,7 +7,7 @@
7
7
  if ENV.fetch("KETTLE_DEV_DEV", "false").casecmp("false").zero?
8
8
  # Coverage (remote/released)
9
9
  platform :mri do
10
- gem "kettle-soup-cover", "~> 3.0", ">= 3.0.13", require: false
10
+ gem "kettle-soup-cover", "~> 3.0", ">= 3.0.16", require: false
11
11
  end
12
12
  else
13
13
  eval_gemfile "coverage_local.gemfile"
@@ -13,7 +13,7 @@
13
13
  platform :mri do
14
14
  # Debugging - Ensure ENV["DEBUG"] == "true" to use debuggers within spec suite
15
15
  # Use binding.break, binding.b, or debugger in code
16
- gem "debug", ">= 1.1" # ruby >= 2.7
16
+ gem "debug", ">= 1.11.1" # ruby >= 2.7
17
17
 
18
18
  # Dev Console - Binding.pry - Irb replacement
19
19
  # gem "pry", "~> 0.14" # ruby >= 2.0
@@ -12,7 +12,7 @@ gem "kramdown-parser-gfm", "~> 1.1", require: false # Ruby >= 2.3
12
12
  gem "yaml-converter", "~> 0.2", ">= 0.2.7", require: false # Ruby >= 3.2
13
13
  gem "yard", "~> 0.9", ">= 0.9.45", require: false
14
14
  gem "yard-junk", "~> 0.1", ">= 0.1.0", require: false # Ruby >= 3.1
15
- gem "yard-lint", "~> 1.12", ">= 1.12.0", require: false # Ruby >= 3.3
15
+ gem "yard-lint", "~> 1.13", ">= 1.13.0", require: false # Ruby >= 3.3
16
16
  gem "yard-relative_markdown_links", "~> 0.6", require: false
17
17
 
18
18
  if ENV.fetch("GALTZO_FLOSS_DEV", "false").casecmp("false").zero?
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ # To retain during kettle-jem templating:
4
+ # {KJ|FREEZE_TOKEN}:freeze
5
+ # # ... your code
6
+ # {KJ|FREEZE_TOKEN}:unfreeze
7
+ #
8
+
9
+ # Performance regression guards (see .duel.rb and duel/)
10
+ # Duel requires Ruby 3.4 or later, so older Rubies install neither gem.
11
+ if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("3.4")
12
+ gem "duel", "~> 0.1", ">= 0.1.1" # ruby >= 3.4
13
+
14
+ # For profiles of regressions (StackProf runs on CRuby only)
15
+ platform :mri do
16
+ gem "stackprof", "~> 0.2", ">= 0.2.28"
17
+ end
18
+ end
@@ -9,8 +9,8 @@
9
9
  # Optional dependencies are not depended on directly, but may be used if present.
10
10
 
11
11
  # Required for curated binstubs generated by kettle-jem install
12
- gem "rbs", ">= 3.0", require: false # ruby >= 3.1
12
+ gem "rbs", ">= 4.2.0", require: false # ruby >= 3.1
13
13
 
14
14
  # Required for kettle-pre-release
15
15
  # URL parsing with Unicode support (falls back to URI if not available)
16
- gem "addressable", ">= 2.8", "< 3" # ruby >= 2.2
16
+ gem "addressable", ">= 2.9.1", "< 3" # ruby >= 2.2
@@ -12,5 +12,5 @@
12
12
  # | # ./spec/config/vcr.rb:3:in `<top (required)>'
13
13
  # | # ./spec/spec_helper.rb:8:in `require_relative'
14
14
  # | # ./spec/spec_helper.rb:8:in `<top (required)>'
15
- gem "vcr", ">= 6"
16
- gem "webmock", ">= 3"
15
+ gem "vcr", ">= 6.4.0"
16
+ gem "webmock", ">= 3.34.0"
@@ -12,5 +12,5 @@
12
12
  # | # ./spec/config/vcr.rb:3:in `<top (required)>'
13
13
  # | # ./spec/spec_helper.rb:8:in `require_relative'
14
14
  # | # ./spec/spec_helper.rb:8:in `<top (required)>'
15
- gem "vcr", ">= 6"
16
- gem "webmock", ">= 3"
15
+ gem "vcr", ">= 6.4.0"
16
+ gem "webmock", ">= 3.34.0"
@@ -2,4 +2,4 @@
2
2
  # NOT SEMVER
3
3
  # Version 3.0.7 dropped support for Ruby <= 2.7
4
4
  # Version 3.0.0 dropped support for Ruby <= 2.4
5
- gem "stringio", ">= 3.0"
5
+ gem "stringio", ">= 3.0", "< 3.0.7"
@@ -1,4 +1,4 @@
1
1
  # !!WARNING!!
2
2
  # NOT SEMVER
3
3
  # Last version to support Ruby <= 2.5
4
- gem "stringio", ">= 0.0.2"
4
+ gem "stringio", ">= 0.0.2", "< 3.0"
@@ -2,4 +2,4 @@
2
2
  # NOT SEMVER
3
3
  # Version 3.0.7 dropped support for Ruby <= 2.7
4
4
  # Version 3.0.0 dropped support for Ruby <= 2.4
5
- gem "stringio", ">= 3.0"
5
+ gem "stringio", ">= 3.2.0"
@@ -2,4 +2,4 @@
2
2
  # NOT SEMVER
3
3
  # Version 3.0.7 dropped support for Ruby <= 2.7
4
4
  # Version 3.0.0 dropped support for Ruby <= 2.4
5
- gem "stringio", ">= 3.0"
5
+ gem "stringio", ">= 3.2.0"
@@ -27,7 +27,7 @@ platform :mri do
27
27
  ref: "3539ba858d379740d638566faee9e56b2b854145"
28
28
  declared_gems = instance_variable_get(:@dependencies).to_a.map(&:name)
29
29
  gem "rubocop-lts", {KJ|RUBOCOP_LTS_CONSTRAINT} unless declared_gems.include?("rubocop-lts")
30
- gem "rubocop-lts-rspec", "~> 1.0", ">= 1.0.7" unless declared_gems.include?("rubocop-lts-rspec")
30
+ gem "rubocop-lts-rspec", "~> 1.0", ">= 1.0.8" unless declared_gems.include?("rubocop-lts-rspec")
31
31
  gem "{KJ|RUBOCOP_RUBY_GEM}", {KJ|RUBOCOP_RUBY_CONSTRAINT} unless declared_gems.include?("{KJ|RUBOCOP_RUBY_GEM}")
32
32
  else
33
33
  eval_gemfile("style_local.gemfile")
@@ -24,7 +24,7 @@ end
24
24
 
25
25
  if kettle_remote
26
26
  # Template/plugin checks for released installs.
27
- gem "kettle-drift", "~> 1.0", ">= 1.0.17", require: false
27
+ gem "kettle-drift", "~> 1.0", ">= 1.0.19", require: false
28
28
  end
29
29
 
30
30
  # Set STRUCTUREDMERGE_DEV=/path/to/structuredmerge/ruby/gems for local development with path-based dependencies.
@@ -1 +1 @@
1
- gem "webrick", ">= 1.9"
1
+ gem "webrick", ">= 1.9.2"
@@ -12,6 +12,7 @@ K_SOUP_COV_DO = "true"
12
12
  K_SOUP_COV_FORMATTERS = "html,xml,rcov,lcov,json,tty"
13
13
  K_SOUP_COV_MIN_BRANCH = "76"
14
14
  K_SOUP_COV_MIN_HARD = "true"
15
+ K_SOUP_COV_MIN_STRICT = "false"
15
16
  K_SOUP_COV_MIN_LINE = "92"
16
17
  K_SOUP_COV_MULTI_FORMATTERS = "true"
17
18
  K_SOUP_COV_OPEN_BIN = ""
@@ -12,6 +12,7 @@ K_SOUP_COV_DO = "true"
12
12
  K_SOUP_COV_FORMATTERS = "html,xml,rcov,lcov,json,tty"
13
13
  K_SOUP_COV_MIN_BRANCH = "76"
14
14
  K_SOUP_COV_MIN_HARD = "true"
15
+ K_SOUP_COV_MIN_STRICT = "false"
15
16
  K_SOUP_COV_MIN_LINE = "92"
16
17
  K_SOUP_COV_MULTI_FORMATTERS = "true"
17
18
  K_SOUP_COV_OPEN_BIN = ""
@@ -6,7 +6,7 @@ shimmed_gem_path = ENV["KETTLE_JEM_SHIMMED_GEM_PATH"].to_s
6
6
  gem "{KJ|SHIMMED_GEM_NAME}", path: shimmed_gem_path unless shimmed_gem_path.empty?
7
7
 
8
8
  # Local workspace dependency wiring for templating_local.gemfile overrides.
9
- gem "nomono", "~> 1.1", ">= 1.1.14", require: false # ruby >= 3.2.0
9
+ gem "nomono", "~> 1.1", ">= 1.1.17", require: false # ruby >= 3.2.0
10
10
 
11
11
  # Templating and the StructuredMerge family share this modular Gemfile.
12
12
  # kettle-jem needs StructuredMerge to template, and kettle-changelog needs it at
@@ -30,13 +30,13 @@ Gem::Specification.new do |spec|
30
30
  spec.add_dependency "{KJ|SHIMMED_GEM_NAME}"
31
31
 
32
32
  # Dev, Test, & Release Tasks
33
- spec.add_development_dependency("kettle-dev", "~> 3.1", ">= 3.1.21") # ruby >= {KJ|MIN_TEST_RUBY}
33
+ spec.add_development_dependency("kettle-dev", "~> 3.1", ">= 3.1.26") # ruby >= {KJ|MIN_TEST_RUBY}
34
34
 
35
35
  # Tasks
36
36
  spec.add_development_dependency "rake", "~> 13.0"
37
37
 
38
38
  # Testing
39
- spec.add_development_dependency("kettle-test", "~> 2.0", ">= 2.0.27") # ruby >= {KJ|MIN_TEST_RUBY}
39
+ spec.add_development_dependency("kettle-test", "~> 2.0", ">= 2.0.29") # ruby >= {KJ|MIN_TEST_RUBY}
40
40
  spec.add_development_dependency "rspec", "~> 3.12"
41
41
 
42
42
  # Releasing
@@ -5,7 +5,7 @@ module Kettle
5
5
  # Version namespace for this gem.
6
6
  module Version
7
7
  # Current gem version.
8
- VERSION = "7.1.39"
8
+ VERSION = "7.1.41"
9
9
  end
10
10
  # Current gem version exposed at the traditional constant location.
11
11
  VERSION = Version::VERSION # Traditional Constant Location