rails-local-ci 0.1.1 → 0.2.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 454a957773807b9400e406ce3fc9777f2699380e4f67a928679e43470760a6f6
4
- data.tar.gz: 1f3c8adffb0cb1db8d07fe853dbef10e9da8cc7635cc494da85f35a518da984a
3
+ metadata.gz: bea5f0d0292bb64efb5fd49d72374f2d9e6435df2554d1d89fabdb43009b3343
4
+ data.tar.gz: e11563b36687390ee1bb34e818ec898ef221128a4904b2c0b06fdd3ed6bfb2bb
5
5
  SHA512:
6
- metadata.gz: 0ec9946fec0b46010bd0fd34827585bdd665780d0f9d682abafa4eb696ba210e1389a3dd13f61ffc00fd6cee93f7f8d129052cb87843563577cca9b2b1bd09f2
7
- data.tar.gz: 75fe4f8ae4217839e0e0c202af4e5564eafa4f825b10044aa7d4dcddee5f7849a8b23c486a81433e83df84cada4da6e9ee5c22b768b97c736ff20191b4592690
6
+ metadata.gz: 03b4976064f75468c853a40ca407cc42d2bdec6fdea694667e1910ecd07da82eb8e53f0982bb2084e059442e698e7eff5e21cc90f38a36081817c66d4b42fe6c
7
+ data.tar.gz: c7b477829b1ba91ed43e9b5772cc753ea9ffa66d4182a87bb8c683923b776f3207fe50ed0e7cb1e94c710ef5e5c6f26591d1778ce84d38408a0301a4dafcc844
data/README.md CHANGED
@@ -1,13 +1,16 @@
1
1
  # rails-local-ci
2
2
 
3
- [![Gem Version](https://badge.fury.io/rb/rails-local-ci.svg)](https://rubygems.org/gems/rails-local-ci)
3
+ [![Gem version](https://img.shields.io/gem/v/rails-local-ci)](https://rubygems.org/gems/rails-local-ci)
4
+ [![Gem downloads](https://img.shields.io/gem/dt/rails-local-ci)](https://rubygems.org/gems/rails-local-ci)
4
5
  [![CI](https://github.com/its-magdy/rails-local-ci/actions/workflows/ci.yml/badge.svg)](https://github.com/its-magdy/rails-local-ci/actions/workflows/ci.yml)
5
6
 
6
- > Backport of Rails 8.1's `ActiveSupport::ContinuousIntegration` for Rails 5.2–7.x
7
+ > Backport of Rails' `ActiveSupport::ContinuousIntegration` (as on Rails `main`) for Rails 5.2–8.1
7
8
 
8
- Rails 8.1 introduced a standardized `bin/ci` script and `ActiveSupport::ContinuousIntegration` class ([PR #54693](https://github.com/rails/rails/pull/54693)) that runs the same CI steps locally and in the cloud. This gem ships that class for apps on Rails 5.2–7.x so you don't have to wait for an upgrade.
9
+ Rails 8.1 introduced a standardized `bin/ci` script and `ActiveSupport::ContinuousIntegration` class ([PR #54693](https://github.com/rails/rails/pull/54693)) that runs the same CI steps locally and in the cloud. This gem ships that class for apps on Rails 5.2–8.1 so you don't have to wait for an upgrade.
9
10
 
10
- When you do upgrade to Rails 8.1, remove the gem — `bin/ci` and `config/ci.rb` stay unchanged because Rails 8.1 provides the class at the same load path.
11
+ The gem tracks Rails `main`, so it also includes features that came after 8.1 shipped: parallel `group`s, fail-fast mode, and the end-of-run failure summary. Rails 8.1.x doesn't have them, so the gem is useful on 8.1 too.
12
+
13
+ Once you upgrade to Rails 8.2, remove the gem. `bin/ci` and `config/ci.rb` stay unchanged because Rails provides the class at the same load path.
11
14
 
12
15
  ---
13
16
 
@@ -22,7 +25,7 @@ When you do upgrade to Rails 8.1, remove the gem — `bin/ci` and `config/ci.rb`
22
25
  - [Commit Signoff](#commit-signoff)
23
26
  - [CI Integration](#ci-integration)
24
27
  - [Running Tests](#running-tests)
25
- - [Upgrading to Rails 8.1](#upgrading-to-rails-81)
28
+ - [Upgrading to Rails 8.2](#upgrading-to-rails-82)
26
29
  - [Compatibility](#compatibility)
27
30
  - [How It Works](#how-it-works)
28
31
  - [License](#license)
@@ -32,7 +35,7 @@ When you do upgrade to Rails 8.1, remove the gem — `bin/ci` and `config/ci.rb`
32
35
  ## Prerequisites
33
36
 
34
37
  - Ruby >= 2.4
35
- - Rails >= 5.2 and < 8.1
38
+ - Rails >= 5.2 and < 8.2
36
39
 
37
40
  ---
38
41
 
@@ -276,12 +279,18 @@ bundle exec ruby test/continuous_integration_test.rb
276
279
 
277
280
  ---
278
281
 
279
- ## Upgrading to Rails 8.1
282
+ ## Upgrading to Rails 8.2
280
283
 
281
284
  1. Remove `gem "rails-local-ci"` from your `Gemfile`
282
285
  2. Run `bundle install`
283
286
 
284
- `bin/ci` and `config/ci.rb` require no changes. Rails 8.1 ships `ActiveSupport::ContinuousIntegration` at the same load path this gem uses.
287
+ `bin/ci` and `config/ci.rb` require no changes. Rails 8.2 (in development on Rails `main` as of Nov 2026) ships `ActiveSupport::ContinuousIntegration` at the same load path this gem uses, with `group`, fail-fast, and the failure summary built in.
288
+
289
+ ### Rails 8.1
290
+
291
+ Keep the gem on Rails 8.1. Rails 8.1.x (checked through 8.1.4) only ships the original `step`, `success?`, `heading`, `echo`, and `failure` DSL. Without the gem, a `config/ci.rb` that uses `group` fails with `NoMethodError`, and `-f` / `--fail-fast` is silently ignored. With the gem installed, its copy of the class takes precedence over the Rails 8.1 built-in, because Bundler puts the gem's `lib` ahead of Active Support's on the load path. That holds for the normal boot order, where `bundler/setup` runs (via `config/boot`) before anything loads the class, as the generated `bin/ci` does. If something requires Rails' built-in copy first, or loads it by absolute path, the gem cannot replace it.
292
+
293
+ If you'd rather drop the gem on 8.1, replace each `group` block with the `step`s inside it, and stop relying on `-f`.
285
294
 
286
295
  ---
287
296
 
@@ -289,23 +298,24 @@ bundle exec ruby test/continuous_integration_test.rb
289
298
 
290
299
  | Rails | Ruby | Status |
291
300
  |-------|-------|--------|
301
+ | 8.1 | 3.2+ | Tested |
292
302
  | 7.2 | 3.1+ | Tested |
293
- | 7.1 | 3.0+ | Compatible |
303
+ | 7.1 | 3.0+ | Tested |
294
304
  | 7.0 | 2.7+ | Compatible |
295
305
  | 6.1 | 2.7+ | Compatible |
296
306
  | 6.0 | 2.7+ | Compatible |
297
307
  | 5.2 | 2.4+ | Compatible |
298
- | 8.1+ | — | Use built-in — remove this gem |
308
+ | 8.2+ | — | Use built-in — remove this gem |
299
309
 
300
310
  ---
301
311
 
302
312
  ## How It Works
303
313
 
304
- The gem places `ActiveSupport::ContinuousIntegration` at `lib/active_support/continuous_integration.rb` — the identical load path Rails 8.1 uses. The generated `bin/ci` does:
314
+ The gem places `ActiveSupport::ContinuousIntegration` at `lib/active_support/continuous_integration.rb` — the identical load path Rails uses. The generated `bin/ci` does:
305
315
 
306
316
  ```ruby
307
317
  require_relative "../config/boot"
308
- require "active_support/continuous_integration" # resolved by this gem, or Rails 8.1 built-in
318
+ require "active_support/continuous_integration" # resolved by this gem, or the Rails built-in once the gem is removed
309
319
 
310
320
  CI = ActiveSupport::ContinuousIntegration
311
321
  require_relative "../config/ci.rb"
@@ -79,7 +79,7 @@ module ActiveSupport
79
79
  def execute_task(type, title, payload)
80
80
  case type
81
81
  when :step then execute_step(title, payload)
82
- when :group then execute_group(title, payload)
82
+ when :group then execute_group(payload)
83
83
  end
84
84
  end
85
85
 
@@ -100,7 +100,7 @@ module ActiveSupport
100
100
  success
101
101
  end
102
102
 
103
- def execute_group(name, block)
103
+ def execute_group(block)
104
104
  all_success = true
105
105
  TaskCollector.new(&block).tasks.each do |type, title, payload|
106
106
  unless execute_task(type, title, payload)
@@ -33,7 +33,7 @@ module ActiveSupport
33
33
  error: "\033[1;31m", # Red
34
34
  success: "\033[1;32m", # Green
35
35
  progress: "\033[1;36m" # Cyan
36
- }
36
+ }.freeze
37
37
 
38
38
  attr_reader :results
39
39
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails-local-ci
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mohamed Magdy Omar
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-03-30 00:00:00.000000000 Z
11
+ date: 2026-11-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -19,7 +19,7 @@ dependencies:
19
19
  version: '5.2'
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: '8.1'
22
+ version: '8.2'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,11 +29,11 @@ dependencies:
29
29
  version: '5.2'
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '8.1'
32
+ version: '8.2'
33
33
  description: Ships ActiveSupport::ContinuousIntegration and a generator that installs
34
- bin/ci + config/ci.rb. Any Rails 6/7 app can `gem 'rails-local-ci'` and get the
35
- same Local CI DX as Rails 8.1 built-in. Upgrading to Rails 8.1 later = just remove
36
- the gem, zero code changes.
34
+ bin/ci + config/ci.rb. Any Rails 5.2–8.1 app can `gem 'rails-local-ci'` and get
35
+ the full Local CI DX from Rails main (parallel groups, fail-fast, failure summary).
36
+ Upgrading to Rails 8.2 later = just remove the gem, zero code changes.
37
37
  email:
38
38
  - mm.medany96@gmail.com
39
39
  executables: []
@@ -52,7 +52,11 @@ files:
52
52
  homepage: https://github.com/its-magdy/rails-local-ci
53
53
  licenses:
54
54
  - MIT
55
- metadata: {}
55
+ metadata:
56
+ rubygems_mfa_required: 'true'
57
+ source_code_uri: https://github.com/its-magdy/rails-local-ci
58
+ changelog_uri: https://github.com/its-magdy/rails-local-ci/blob/main/CHANGELOG.md
59
+ bug_tracker_uri: https://github.com/its-magdy/rails-local-ci/issues
56
60
  post_install_message:
57
61
  rdoc_options: []
58
62
  require_paths:
@@ -71,6 +75,6 @@ requirements: []
71
75
  rubygems_version: 3.5.22
72
76
  signing_key:
73
77
  specification_version: 4
74
- summary: Backport of Rails 8.1 Local CI (ActiveSupport::ContinuousIntegration) for
75
- Rails 5.2–7.x
78
+ summary: Backport of Rails Local CI (ActiveSupport::ContinuousIntegration, as on Rails
79
+ main) for Rails 5.2–8.1
76
80
  test_files: []