stepper_motor 0.1.8 → 0.1.10

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: 90e48cc6e234e073f0582319748da22480e8c3fa2bb81b8217faea879ce542c5
4
- data.tar.gz: 02d2e302fa8238a3c32130e02a79d8f9b2b16b15c59713f996e57ebe03efee2c
3
+ metadata.gz: 649ad16d1e0831632a111b96f7435d66e2f601f6c301631252420876f6d2045a
4
+ data.tar.gz: 6f09feace77d276184ad9e43e466c11aaf2b3df9fa295d11cf934d1ae719742f
5
5
  SHA512:
6
- metadata.gz: 1378f0b6baccf36921501e68e6c24fb26fe62ab13c07098e2af2333bf811b2306a3de3e77c707fef3b7656b7740836e07079f93b48bca873906d62e87a576b5e
7
- data.tar.gz: 72f06897646794459f789d51bed060472158755445216df2b9dea8d25a835eaad5692946f77fa366754a9b14382958b2497f018739fe0bd69104bb0fee766797
6
+ metadata.gz: 265c265164a0330f2de6f75012146dbe179147d7b808c2003b00aced6f9599709648384104fb8cd3a3f41d3211320e871dcc29b34f0faba07867296c8beda561
7
+ data.tar.gz: 8275f9be10d01974d1aa9541d5d3784a056785c9e4412dbec74edbd95cfd4aa9fffad4d9fa08fc60f4621e75d81fc90af4e2893c8a944c7d4a6d399ab5e069d5
data/CHANGELOG.md CHANGED
@@ -1,12 +1,21 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.1.10] - 2025-05-28
4
+
5
+ - Remove `algorithm: :concurrently` from migrations. If a user needs to conform with strong_migrations
6
+ they can always edit the migration themselves.
7
+
8
+ ## [0.1.9] - 2025-05-25
9
+
10
+ - Repair bodged migration from the previous release
11
+
3
12
  ## [0.1.8] - 2025-05-25
4
13
 
5
- - Add ability to pause and resume journeys (#24)
6
- - Add basic exception rescue during steps (#23)
7
- - Add idempotency keys when performing steps (#21)
8
- - Add support for blockless step definitions (#22)
9
- - Migrate from RSpec to Minitest (#19)
14
+ - Add ability to pause and resume journeys (https://github.com/stepper-motor/stepper_motor/pull/24)
15
+ - Add basic exception rescue during steps (https://github.com/stepper-motor/stepper_motor/pull/23)
16
+ - Add idempotency keys when performing steps (https://github.com/stepper-motor/stepper_motor/pull/21)
17
+ - Add support for blockless step definitions (https://github.com/stepper-motor/stepper_motor/pull/22)
18
+ - Migrate from RSpec to Minitest (https://github.com/stepper-motor/stepper_motor/pull/19)
10
19
  - Add Rake task for recovery
11
20
  - Add proper Rails engine tests
12
21
  - Improve test organization and coverage
@@ -37,7 +46,6 @@
37
46
  - Refactor PerformStepJob to use Journey class in job arguments
38
47
  - Remove GlobalID dependency
39
48
  - Add ability to resolve Journey from base class using `find()`
40
- - Prepare groundwork for future improvements (#12)
41
49
 
42
50
  ## [0.1.4] - 2025-03-11
43
51
 
data/README.md CHANGED
@@ -24,7 +24,7 @@ end
24
24
  SignupJourney.create!(hero: current_user)
25
25
  ```
26
26
 
27
- Want to know more? Dive into the [manual](file.MANUAL.html) we provide.
27
+ Want to know more? Dive into the [manual](/manual/MANUAL.md) we provide.
28
28
 
29
29
  ## Installation
30
30
 
@@ -47,9 +47,7 @@ Starting with versions 0.2.x and up, stepper_motor will make the best possible e
47
47
 
48
48
  ## Development
49
49
 
50
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
51
-
52
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and the created tag, and push the `.gem` file to [rubygems.org](https://rubygems.org).
50
+ After checking out the repo, run `bundle` to install dependencies. The development process from there on is like any other gem.
53
51
 
54
52
  ## Is it any good?
55
53
 
@@ -7,13 +7,11 @@ class StepperMotorMigration004 < ActiveRecord::Migration[<%= migration_version %
7
7
  name: :idx_journeys_one_per_hero_with_paused
8
8
 
9
9
  # Remove old indexes that only include 'ready' state
10
- remove_index :stepper_motor_journeys, [:next_step_to_be_performed_at], where: "state = 'ready'"
11
- remove_index :stepper_motor_journeys, [:type, :hero_id, :hero_type], name: :one_per_hero_index, where: "allow_multiple = '0' AND state IN ('ready', 'performing')"
10
+ remove_index :stepper_motor_journeys, [:type, :hero_id, :hero_type], name: :one_per_hero_index, where: "allow_multiple = '0' AND state IN ('ready', 'performing')"
12
11
  end
13
12
 
14
13
  def down
15
14
  # Recreate old indexes
16
- add_index :stepper_motor_journeys, [:next_step_to_be_performed_at], where: "state = 'ready'"
17
15
  quoted_false = connection.quote(false)
18
16
  add_index :stepper_motor_journeys, [:type, :hero_id, :hero_type],
19
17
  where: "allow_multiple = '#{quoted_false}' AND state IN ('ready', 'performing')",
@@ -23,4 +21,4 @@ class StepperMotorMigration004 < ActiveRecord::Migration[<%= migration_version %
23
21
  # Remove new indexes
24
22
  remove_index :stepper_motor_journeys, name: :idx_journeys_one_per_hero_with_paused
25
23
  end
26
- end
24
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module StepperMotor
4
- VERSION = "0.1.8"
4
+ VERSION = "0.1.10"
5
5
  end
data/manual/MANUAL.md CHANGED
@@ -1,14 +1,3 @@
1
-
2
- ## Installation
3
-
4
- Add the gem to the application's Gemfile, and then generate and run the migration
5
-
6
- $ bundle add stepper_motor
7
- $ bundle install
8
- $ bin/rails g stepper_motor:install --uuid # Pass "uuid" if you are using UUID for your primary and foreign keys
9
- $ bin/rails db:migrate
10
-
11
-
12
1
  ## Intro
13
2
 
14
3
  `stepper_motor` solves a real, tangible problem in Rails apps - tracking activities over long periods of time. It does so in a durable, reentrant and consistent manner, utilizing the guarantees provided by your relational database you already have.
@@ -2,7 +2,7 @@
2
2
  # StepperMotor is a module for building multi-step flows where steps are sequential and only
3
3
  # ever progress forward. The building block of StepperMotor is StepperMotor::Journey
4
4
  module StepperMotor
5
- VERSION = T.let("0.1.8", T.untyped)
5
+ VERSION = T.let("0.1.10", T.untyped)
6
6
 
7
7
  class Error < StandardError
8
8
  end
@@ -33,14 +33,11 @@ Gem::Specification.new do |spec|
33
33
  spec.add_dependency "activerecord", ">= 7"
34
34
  spec.add_dependency "activejob"
35
35
  spec.add_dependency "railties"
36
- spec.add_dependency "globalid"
37
36
 
38
37
  spec.add_development_dependency "minitest"
39
38
  spec.add_development_dependency "rails", "~> 7.0"
40
39
  spec.add_development_dependency "sqlite3"
41
40
  spec.add_development_dependency "rake", "~> 13.0"
42
- spec.add_development_dependency "rspec", "~> 3.0"
43
- spec.add_development_dependency "rspec-rails"
44
41
  spec.add_development_dependency "standard"
45
42
  spec.add_development_dependency "magic_frozen_string_literal"
46
43
  spec.add_development_dependency "yard"
@@ -1,3 +1 @@
1
- # frozen_string_literal: true
2
-
3
1
  StepperMotor.scheduler = StepperMotor::ForwardScheduler.new
@@ -1,14 +1,14 @@
1
- # frozen_string_literal: true
2
-
3
1
  class StepperMotorMigration001 < ActiveRecord::Migration[7.2]
4
2
  def change
3
+
5
4
  create_table :stepper_motor_journeys do |t|
5
+
6
6
  t.string :type, null: false, index: true
7
7
  t.string :state, default: "ready"
8
8
  t.string :hero_type, null: true
9
-
9
+
10
10
  t.bigint :hero_id
11
-
11
+
12
12
  t.boolean :allow_multiple, default: false
13
13
  t.string :previous_step_name
14
14
  t.string :next_step_name
@@ -1,5 +1,3 @@
1
- # frozen_string_literal: true
2
-
3
1
  class StepperMotorMigration002 < ActiveRecord::Migration[7.2]
4
2
  def change
5
3
  # An index is needed to recover stuck journeys
@@ -1,7 +1,6 @@
1
- # frozen_string_literal: true
2
-
3
1
  class StepperMotorMigration003 < ActiveRecord::Migration[7.2]
4
2
  def change
5
3
  add_column :stepper_motor_journeys, :idempotency_key, :string, null: true
6
4
  end
7
5
  end
6
+
@@ -1,26 +1,22 @@
1
- # frozen_string_literal: true
2
-
3
1
  class StepperMotorMigration004 < ActiveRecord::Migration[7.2]
4
2
  def up
5
3
  quoted_false = connection.quote(false)
6
- add_index :stepper_motor_journeys, [:type, :hero_id, :hero_type],
7
- where: "allow_multiple = '#{quoted_false}' AND state IN ('ready', 'performing', 'paused')",
8
- unique: true,
9
- name: :idx_journeys_one_per_hero_with_paused
4
+ add_index :stepper_motor_journeys, [:type, :hero_id, :hero_type],
5
+ where: "allow_multiple = '#{quoted_false}' AND state IN ('ready', 'performing', 'paused')",
6
+ unique: true,
7
+ name: :idx_journeys_one_per_hero_with_paused
10
8
 
11
9
  # Remove old indexes that only include 'ready' state
12
- remove_index :stepper_motor_journeys, [:next_step_to_be_performed_at], where: "state = 'ready'"
13
- remove_index :stepper_motor_journeys, [:type, :hero_id, :hero_type], name: :one_per_hero_index, where: "allow_multiple = '0' AND state IN ('ready', 'performing')"
10
+ remove_index :stepper_motor_journeys, [:type, :hero_id, :hero_type], name: :one_per_hero_index, where: "allow_multiple = '0' AND state IN ('ready', 'performing')"
14
11
  end
15
12
 
16
13
  def down
17
14
  # Recreate old indexes
18
- add_index :stepper_motor_journeys, [:next_step_to_be_performed_at], where: "state = 'ready'"
19
15
  quoted_false = connection.quote(false)
20
- add_index :stepper_motor_journeys, [:type, :hero_id, :hero_type],
21
- where: "allow_multiple = '#{quoted_false}' AND state IN ('ready', 'performing')",
22
- unique: true,
23
- name: :one_per_hero_index
16
+ add_index :stepper_motor_journeys, [:type, :hero_id, :hero_type],
17
+ where: "allow_multiple = '#{quoted_false}' AND state IN ('ready', 'performing')",
18
+ unique: true,
19
+ name: :one_per_hero_index
24
20
 
25
21
  # Remove new indexes
26
22
  remove_index :stepper_motor_journeys, name: :idx_journeys_one_per_hero_with_paused
@@ -1,5 +1,3 @@
1
- # frozen_string_literal: true
2
-
3
1
  # This file is auto-generated from the current state of the database. Instead
4
2
  # of editing this file, please use the migrations feature of Active Record to
5
3
  # incrementally modify your database, and then regenerate this schema definition.
@@ -12,7 +10,7 @@
12
10
  #
13
11
  # It's strongly recommended that you check this file into your version control system.
14
12
 
15
- ActiveRecord::Schema[7.2].define(version: 2025_05_25_110812) do
13
+ ActiveRecord::Schema[7.2].define(version: 2025_05_28_141038) do
16
14
  create_table "stepper_motor_journeys", force: :cascade do |t|
17
15
  t.string "type", null: false
18
16
  t.string "state", default: "ready"
@@ -28,6 +26,7 @@ ActiveRecord::Schema[7.2].define(version: 2025_05_25_110812) do
28
26
  t.datetime "updated_at", null: false
29
27
  t.string "idempotency_key"
30
28
  t.index ["hero_type", "hero_id"], name: "index_stepper_motor_journeys_on_hero_type_and_hero_id"
29
+ t.index ["next_step_to_be_performed_at"], name: "index_stepper_motor_journeys_on_next_step_to_be_performed_at", where: "state = 'ready' /*application='Dummy'*/"
31
30
  t.index ["type", "hero_id", "hero_type"], name: "idx_journeys_one_per_hero_with_paused", unique: true, where: "allow_multiple = '0' AND state IN ('ready', 'performing', 'paused') /*application='Dummy'*/"
32
31
  t.index ["type", "hero_type", "hero_id"], name: "index_stepper_motor_journeys_on_type_and_hero_type_and_hero_id"
33
32
  t.index ["type"], name: "index_stepper_motor_journeys_on_type"
metadata CHANGED
@@ -1,13 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stepper_motor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.1.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Julik Tarkhanov
8
+ autorequire:
8
9
  bindir: exe
9
10
  cert_chain: []
10
- date: 2025-05-25 00:00:00.000000000 Z
11
+ date: 2025-05-28 00:00:00.000000000 Z
11
12
  dependencies:
12
13
  - !ruby/object:Gem::Dependency
13
14
  name: activerecord
@@ -51,20 +52,6 @@ dependencies:
51
52
  - - ">="
52
53
  - !ruby/object:Gem::Version
53
54
  version: '0'
54
- - !ruby/object:Gem::Dependency
55
- name: globalid
56
- requirement: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - ">="
59
- - !ruby/object:Gem::Version
60
- version: '0'
61
- type: :runtime
62
- prerelease: false
63
- version_requirements: !ruby/object:Gem::Requirement
64
- requirements:
65
- - - ">="
66
- - !ruby/object:Gem::Version
67
- version: '0'
68
55
  - !ruby/object:Gem::Dependency
69
56
  name: minitest
70
57
  requirement: !ruby/object:Gem::Requirement
@@ -121,34 +108,6 @@ dependencies:
121
108
  - - "~>"
122
109
  - !ruby/object:Gem::Version
123
110
  version: '13.0'
124
- - !ruby/object:Gem::Dependency
125
- name: rspec
126
- requirement: !ruby/object:Gem::Requirement
127
- requirements:
128
- - - "~>"
129
- - !ruby/object:Gem::Version
130
- version: '3.0'
131
- type: :development
132
- prerelease: false
133
- version_requirements: !ruby/object:Gem::Requirement
134
- requirements:
135
- - - "~>"
136
- - !ruby/object:Gem::Version
137
- version: '3.0'
138
- - !ruby/object:Gem::Dependency
139
- name: rspec-rails
140
- requirement: !ruby/object:Gem::Requirement
141
- requirements:
142
- - - ">="
143
- - !ruby/object:Gem::Version
144
- version: '0'
145
- type: :development
146
- prerelease: false
147
- version_requirements: !ruby/object:Gem::Requirement
148
- requirements:
149
- - - ">="
150
- - !ruby/object:Gem::Version
151
- version: '0'
152
111
  - !ruby/object:Gem::Dependency
153
112
  name: standard
154
113
  requirement: !ruby/object:Gem::Requirement
@@ -292,10 +251,10 @@ files:
292
251
  - test/dummy/config/puma.rb
293
252
  - test/dummy/config/routes.rb
294
253
  - test/dummy/config/storage.yml
295
- - test/dummy/db/migrate/20250520094921_stepper_motor_migration_001.rb
296
- - test/dummy/db/migrate/20250520094922_stepper_motor_migration_002.rb
297
- - test/dummy/db/migrate/20250522212312_stepper_motor_migration_003.rb
298
- - test/dummy/db/migrate/20250525110812_stepper_motor_migration_004.rb
254
+ - test/dummy/db/migrate/20250525132523_stepper_motor_migration_001.rb
255
+ - test/dummy/db/migrate/20250525132524_stepper_motor_migration_002.rb
256
+ - test/dummy/db/migrate/20250525132525_stepper_motor_migration_003.rb
257
+ - test/dummy/db/migrate/20250528141038_stepper_motor_migration_004.rb
299
258
  - test/dummy/db/schema.rb
300
259
  - test/dummy/public/400.html
301
260
  - test/dummy/public/404.html
@@ -326,6 +285,7 @@ metadata:
326
285
  homepage_uri: https://steppermotor.dev
327
286
  source_code_uri: https://github.com/stepper-motor/stepper_motor
328
287
  changelog_uri: https://github.com/stepper-motor/stepper_motor/blob/main/CHANGELOG.md
288
+ post_install_message:
329
289
  rdoc_options: []
330
290
  require_paths:
331
291
  - lib
@@ -340,7 +300,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
340
300
  - !ruby/object:Gem::Version
341
301
  version: '0'
342
302
  requirements: []
343
- rubygems_version: 3.6.6
303
+ rubygems_version: 3.4.10
304
+ signing_key:
344
305
  specification_version: 4
345
306
  summary: Effortless step workflows that embed nicely inside Rails
346
307
  test_files: []