You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
⚡️ A message from a fellow meat-based-AI ⚡️
- [❤️] Finely-crafted open-source tools like kettle-test (& many more) require time and effort.
- [❤️] Though I adore my work, it lacks financial sustainability.
- [❤️] Please, help me continue enhancing your tools by becoming a sponsor:
- [💲] https://liberapay.com/pboling/donate
- [💲] https://github.com/sponsors/pboling
Copy file name to clipboardExpand all lines: docs/file.CHANGELOG.html
+48-16Lines changed: 48 additions & 16 deletions
Original file line number
Diff line number
Diff line change
@@ -70,7 +70,7 @@
70
70
and <ahref="https://tom.preston-werner.com/2022/05/23/major-version-numbers-are-not-sacred.html">yes</a>, platform and engine support are part of the <ahref="https://github.com/semver/semver/issues/716#issuecomment-869336139">public API</a>.<br>
71
71
Please file a bug if you notice a violation of semantic versioning.</p>
<li>Announce it in the channel for this org in the <ahref="https://discord.gg/3qme4XHNKN">Discord</a>!</li>
95
95
</ol>
96
96
97
+
<h2id="ruby-engine-ci-branches">Ruby engine CI branches</h2>
98
+
99
+
<p>Pull requests run MRI workflows by default. JRuby and TruffleRuby workflows are<br>
100
+
available by branch naming convention so ordinary PRs do not spend CI time on<br>
101
+
alternate Ruby engines.</p>
102
+
103
+
<ul>
104
+
<li>Use a branch named <code>jruby/*</code> to run JRuby workflows for a pull request.</li>
105
+
<li>Use a branch named <code>truffleruby/*</code> to run TruffleRuby workflows for a pull<br>
106
+
request.</li>
107
+
<li>Use a branch named <code>engines/*</code> to run both JRuby and TruffleRuby workflows for<br>
108
+
a pull request.</li>
109
+
</ul>
110
+
111
+
<p>Pushes to the default branch continue to run the configured engine workflows.</p>
112
+
97
113
<h2id="executables-vs-rake-tasks">Executables vs Rake tasks</h2>
98
114
99
115
<p>Executables shipped by dependencies, such as kettle-dev, and stone_checksums, are available<br>
@@ -195,7 +211,7 @@ <h2 id="environment-variables-for-local-development">Environment Variables for L
195
211
<li>Use <code>git diff --no-ext-diff</code> to compare against Git’s built-in diff output.</li>
196
212
<li>Use <code>git diff --no-textconv</code> when a textconv projection obscures the raw file bytes you need to inspect.</li>
197
213
<li>If Git reports a missing <code>smorg-*</code> executable, rerun <code>bundle install</code> and the setup command above, then check <code>git config --local --get-regexp '^diff\.smorg-'</code>.</li>
198
-
<li>To remove managed local entries, run <code>K_JEM_TEMPLATING=true kettle-jem install --undo</code>; remove global command registrations with <code>git config --global --unset-all diff.smorg-ruby.command</code>.</li>
214
+
<li>To remove managed local entries, run <code>K_JEM_TEMPLATING=true kettle-jem install --undo</code>; remove global command registrations with <code>git config --global --unset-all diff.smorg-rb.command</code>, <code>git config --global --unset-all merge.smorg-rb.driver</code>, and <code>git config --global --unset-all merge.smorg-rb.name</code>.</li>
199
215
</ul>
200
216
201
217
<p>For a quick starting point, this repository’s <code>mise.toml</code> defines the shared defaults, and <code>.env.local</code> can override them locally. Copy <code>.env.local.example</code> to <code>.env.local</code>, use <code>KEY=value</code> lines, and either activate <code>mise</code> in your shell or run commands through <code>mise exec -C /path/to/project -- ...</code>.</p>
Copy file name to clipboardExpand all lines: docs/file.README.html
+2-2Lines changed: 2 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -168,7 +168,7 @@ <h2 id="-info-you-can-shake-a-stick-at">💡 Info you can shake a stick at</h2>
168
168
<tr>
169
169
<td>Support & Community</td>
170
170
<td>
171
-
<ahref="https://app.daily.dev/squads/rubyfriends"><imgsrc="https://img.shields.io/badge/daily.dev-%F0%9F%92%8E_Ruby_Friends-0A0A0A?style=for-the-badge&logo=dailydotdev&logoColor=white" alt="Join Me on Daily.dev's RubyFriends"></a><ahref="https://discord.gg/3qme4XHNKN"><imgsrc="https://img.shields.io/discord/1373797679469170758?style=for-the-badge&logo=discord" alt="Live Chat on Discord"></a><ahref="https://www.upwork.com/freelancers/~014942e9b056abdf86?mp_source=share"><imgsrc="https://img.shields.io/badge/UpWork-13544E?style=for-the-badge&logo=Upwork&logoColor=white" alt="Get help from me on Upwork"></a><ahref="https://www.codementor.io/peterboling?utm_source=github&utm_medium=button&utm_term=peterboling&utm_campaign=github"><imgsrc="https://img.shields.io/badge/CodeMentor-Get_Help-1abc9c?style=for-the-badge&logo=CodeMentor&logoColor=white" alt="Get help from me on Codementor"></a>
171
+
<ahref="https://app.daily.dev/squads/rubyfriends"><imgsrc="https://img.shields.io/badge/daily.dev-%F0%9F%92%8E_Ruby_Friends-0A0A0A?style=for-the-badge&logo=dailydotdev&logoColor=white" alt="Join Me on Daily.dev's RubyFriends"></a><ahref="https://www.rubyforum.org/c/help/8"><imgsrc="https://img.shields.io/badge/RubyForum-Help-CC342D?style=for-the-badge&logo=ruby&logoColor=white" alt="Get help from RubyForum"></a><ahref="https://discord.gg/3qme4XHNKN"><imgsrc="https://img.shields.io/discord/1373797679469170758?style=for-the-badge&logo=discord" alt="Live Chat on Discord"></a><ahref="https://www.upwork.com/freelancers/~014942e9b056abdf86?mp_source=share"><imgsrc="https://img.shields.io/badge/UpWork-13544E?style=for-the-badge&logo=Upwork&logoColor=white" alt="Get help from me on Upwork"></a><ahref="https://www.codementor.io/peterboling?utm_source=github&utm_medium=button&utm_term=peterboling&utm_campaign=github"><imgsrc="https://img.shields.io/badge/CodeMentor-Get_Help-1abc9c?style=for-the-badge&logo=CodeMentor&logoColor=white" alt="Get help from me on Codementor"></a>
172
172
</td>
173
173
</tr>
174
174
<tr>
@@ -887,7 +887,7 @@ <h3 id="please-give-the-project-a-star--">Please give the project a star ⭐ ♥
887
887
<p>| Field | Value |<br>
888
888
|—|—|<br>
889
889
| Package | kettle-test |<br>
890
-
| Description | 🍲 Kettle::Test is a meta tool from kettle-rb to streamline testing. Acts as a shim dependency, pulling in many other dependencies, to give you OOTB productivity with a RubyGem, or Ruby app project. Configures RSpec w/ syntactic sugar to make writing tests, and testing more scenarios, easier.Configures each dependency library for proper use in the test suite, so they arrive ready to go. Fund overlooked open source projects - bottom of stack, dev/test dependencies: floss-funding.dev |<br>
890
+
| Description | 🍲 Kettle::Test is a meta tool from kettle-dev to streamline testing. Acts as a shim dependency, pulling in many other dependencies, to give you OOTB productivity with a RubyGem, or Ruby app project. Configures RSpec w/ syntactic sugar to make writing tests, and testing more scenarios, easier.Configures each dependency library for proper use in the test suite, so they arrive ready to go. Fund overlooked open source projects - bottom of stack, dev/test dependencies: floss-funding.dev |<br>
<h2id="understanding-the-lock-file">Understanding the Lock File</h2>
91
91
92
-
<p>The <code>.rubocop_gradual.lock</code> file tracks all current RuboCop violations in the project. This allows the team to:</p>
92
+
<p>The <code>.rubocop_gradual.lock</code> file is a work list, not a permanent baseline. Every entry represents a style issue that should be resolved by either fixing the code or making an intentional exception explicit.</p>
93
+
94
+
<p>This allows the team to:</p>
93
95
94
96
<ol>
95
-
<li>Prevent new violations while gradually fixing existing ones</li>
97
+
<li>Prevent new violations while existing issues are handled deliberately</li>
96
98
<li>Track progress on code style improvements</li>
97
-
<li>Ensure CI builds don’t fail due to pre-existing violations</li>
99
+
<li>Distinguish temporary work items from intentional project style exceptions</li>
<p>Do not add inline <code>rubocop:disable</code>/ <code>rubocop:enable</code> comments anywhere in the codebase (including specs, except when following the few existing <code>rubocop:disable</code> patterns for a rule already being disabled elsewhere in the code). We handle exceptions in two supported ways:</p>
143
+
<p>Do not treat <code>.rubocop_gradual.lock</code>as a baseline. Treat it as a list of work that must be fixed or normalized into the styleguide.</p>
141
144
142
-
<ul>
143
-
<li>Permanent/structural exceptions: prefer adjusting the RuboCop configuration (e.g., in <code>.rubocop.yml</code>) to exclude a rule for a path or file pattern when it makes sense project-wide.</li>
144
-
<li>Temporary exceptions while improving code: record the current violations in <code>.rubocop_gradual.lock</code> via the gradual workflow:
145
-
<ul>
146
-
<li>
147
-
<code>bundle exec rake rubocop_gradual:autocorrect</code> (preferred; will autocorrect what it can and update the lock only if no new violations were introduced)</li>
148
-
<li>If needed, <code>bundle exec rake rubocop_gradual:force_update</code>(as a last resort when you cannot fix the newly reported violations immediately)</li>
149
-
</ul>
150
-
</li>
151
-
</ul>
145
+
<p>Prefer this order:</p>
146
+
147
+
<ol>
148
+
<li>Fix the code so it follows the configured styleguide.</li>
149
+
<li>For intentional project conventions, add the narrowest useful override in <code>.rubocop.yml</code> or <code>.rubocop_rspec.yml</code>.</li>
150
+
<li>For local intentional deviations, add a tightly scoped inline <code>rubocop:disable</code> / <code>rubocop:enable</code> around the exact line or block.</li>
151
+
<li>Keep an entry in <code>.rubocop_gradual.lock</code>only as temporary work to be resolved later.</li>
152
+
</ol>
153
+
154
+
<p>Use configuration overrides when a deviation is structural, generated, path-specific, or applies consistently to a small set of files. Use inline disables when the exception is local and the reason is clearer at the code site than in global config.</p>
152
155
153
156
<p>In general, treat the rules as guidance to follow; fix violations rather than ignore them. For example, RSpec conventions in this project expect <code>described_class</code> to be used in specs that target a specific class under test.</p>
154
157
155
158
<h2id="benefits-of-rubocop_gradual">Benefits of rubocop_gradual</h2>
156
159
157
160
<ul>
158
161
<li>Allows incremental adoption of code style rules</li>
159
-
<li>Prevents CI failures due to pre-existing violations</li>
160
-
<li>Provides a clear record of code style debt</li>
162
+
<li>Prevents CI failures due to temporary pre-existing violations</li>
163
+
<li>Provides a clear work list of code style debt</li>
161
164
<li>Enables focused efforts on improving code quality over time</li>
0 commit comments