Skip to content

Commit 9a4e17d

Browse files
authored
Merge pull request #520 from gocardless/joesouthan-rails-71
Fixup deprecation in Rails 7.2
2 parents a45a827 + 517b352 commit 9a4e17d

File tree

14 files changed

+57
-61
lines changed

14 files changed

+57
-61
lines changed

.github/workflows/tests.yml

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,15 +24,16 @@ jobs:
2424
strategy:
2525
fail-fast: false
2626
matrix:
27-
ruby-version: ["2.7", "3.0", "3.1", "3.2"]
27+
ruby-version: ["3.0", "3.1", "3.2"]
2828
rails-version:
29-
- "6.1.5"
30-
- "7.0.4"
29+
- "6.1.7.6"
30+
- "7.0.8"
31+
- "7.1.1"
3132
- "main"
32-
postgres-version: ["9.6", "11", "14"]
33+
postgres-version: ["12", "13", "14", "15", "16"]
3334
exclude:
3435
- ruby-version: "3.2"
35-
rails-version: "6.1.5"
36+
rails-version: "6.1.7.6"
3637
runs-on: ubuntu-latest
3738
services:
3839
postgres:
@@ -66,15 +67,16 @@ jobs:
6667
strategy:
6768
fail-fast: false
6869
matrix:
69-
ruby-version: ["2.7", "3.0", "3.1", "3.2"]
70+
ruby-version: ["3.0", "3.1", "3.2"]
7071
rails-version:
71-
- "6.1.5"
72-
- "7.0.4"
72+
- "6.1.7.6"
73+
- "7.0.8"
74+
- "7.1.1"
7375
- "main"
74-
mysql-version: ["5.7", "8.0"]
76+
mysql-version: ["8.0", "8.2"]
7577
exclude:
7678
- ruby-version: 3.2
77-
rails-version: "6.1.5"
79+
rails-version: "6.1.7.6"
7880
runs-on: ubuntu-latest
7981
services:
8082
mysql:

.ruby-version

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
3.2.0
1+
3.2.2

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,12 @@
1+
## v11.0.0 3rd November 2023
2+
3+
### Changed
4+
- Updated to support ActiveRecord > 7.2
5+
- Remove support for:
6+
- Ruby; 2.7
7+
- Postgres; 9.6, 10, 11
8+
- MySQL; 5.7
9+
110
## v10.2.3 2nd Aug 2023
211

312
### Changed

Gemfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ if ENV['RAILS_VERSION'] == 'main'
99
elsif ENV['RAILS_VERSION']
1010
gem "rails", "~> #{ENV['RAILS_VERSION']}"
1111
end
12+
1213
group :development do
13-
# test/unit is no longer bundled with Ruby 2.2, but required by Rails
1414
gem "pry"
15-
gem "test-unit", "~> 3.3" if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("2.2.0")
15+
gem "test-unit", "~> 3.3"
1616
end

lib/statesman/adapters/active_record.rb

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -246,13 +246,8 @@ def next_sort_key
246246
end
247247

248248
def serialized?(transition_class)
249-
if ::ActiveRecord.respond_to?(:gem_version) &&
250-
::ActiveRecord.gem_version >= Gem::Version.new("4.2.0.a")
251-
transition_class.type_for_attribute("metadata").
252-
is_a?(::ActiveRecord::Type::Serialized)
253-
else
254-
transition_class.serialized_attributes.include?("metadata")
255-
end
249+
transition_class.type_for_attribute("metadata").
250+
is_a?(::ActiveRecord::Type::Serialized)
256251
end
257252

258253
def transition_conflict_error?(err)

lib/statesman/adapters/active_record_transition.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,11 @@ module ActiveRecordTransition
1010
extend ActiveSupport::Concern
1111

1212
included do
13-
serialize :metadata, JSON
13+
if ::ActiveRecord.gem_version >= Gem::Version.new("7.1")
14+
serialize :metadata, coder: JSON
15+
else
16+
serialize :metadata, JSON
17+
end
1418

1519
class_attribute :updated_timestamp_column
1620
self.updated_timestamp_column = DEFAULT_UPDATED_TIMESTAMP_COLUMN

lib/statesman/version.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# frozen_string_literal: true
22

33
module Statesman
4-
VERSION = "10.2.3"
4+
VERSION = "11.0.0"
55
end

spec/spec_helper.rb

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ def connection_failure
4040
ActiveRecord::Migration.verbose = false
4141
end
4242

43-
config.before(:each, active_record: true) do
43+
config.before(:each, :active_record) do
4444
tables = %w[
4545
my_active_record_models
4646
my_active_record_model_transitions
@@ -82,7 +82,5 @@ def prepare_sti_transitions_table
8282
CreateStiActiveRecordModelTransitionMigration.migrate(:up)
8383
StiActiveRecordModelTransition.reset_column_information
8484
end
85-
86-
MyNamespace::MyActiveRecordModelTransition.serialize(:metadata, JSON)
8785
end
8886
end

spec/statesman/adapters/active_record_queries_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
require "spec_helper"
44

5-
describe Statesman::Adapters::ActiveRecordQueries, active_record: true do
5+
describe Statesman::Adapters::ActiveRecordQueries, :active_record do
66
def configure_old(klass, transition_class)
77
klass.define_singleton_method(:transition_class) { transition_class }
88
klass.define_singleton_method(:initial_state) { :initial }

spec/statesman/adapters/active_record_spec.rb

Lines changed: 11 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@
55
require "statesman/adapters/shared_examples"
66
require "statesman/exceptions"
77

8-
describe Statesman::Adapters::ActiveRecord, active_record: true do
8+
describe Statesman::Adapters::ActiveRecord, :active_record do
99
before do
1010
prepare_model_table
1111
prepare_transitions_table
1212

13-
MyActiveRecordModelTransition.serialize(:metadata, JSON)
13+
# MyActiveRecordModelTransition.serialize(:metadata, JSON)
1414

1515
prepare_sti_model_table
1616
prepare_sti_transitions_table
@@ -38,15 +38,9 @@
3838
allow(metadata_column).to receive_messages(sql_type: "")
3939
allow(MyActiveRecordModelTransition).to receive_messages(columns_hash:
4040
{ "metadata" => metadata_column })
41-
if ActiveRecord.respond_to?(:gem_version) &&
42-
ActiveRecord.gem_version >= Gem::Version.new("4.2.0.a")
43-
expect(MyActiveRecordModelTransition).
44-
to receive(:type_for_attribute).with("metadata").
45-
and_return(ActiveRecord::Type::Value.new)
46-
else
47-
expect(MyActiveRecordModelTransition).
48-
to receive_messages(serialized_attributes: {})
49-
end
41+
expect(MyActiveRecordModelTransition).
42+
to receive(:type_for_attribute).with("metadata").
43+
and_return(ActiveRecord::Type::Value.new)
5044
end
5145

5246
it "raises an exception" do
@@ -91,18 +85,12 @@
9185
allow(metadata_column).to receive_messages(sql_type: "jsonb")
9286
allow(MyActiveRecordModelTransition).to receive_messages(columns_hash:
9387
{ "metadata" => metadata_column })
94-
if ActiveRecord.respond_to?(:gem_version) &&
95-
ActiveRecord.gem_version >= Gem::Version.new("4.2.0.a")
96-
serialized_type = ActiveRecord::Type::Serialized.new(
97-
"", ActiveRecord::Coders::JSON
98-
)
99-
expect(MyActiveRecordModelTransition).
100-
to receive(:type_for_attribute).with("metadata").
101-
and_return(serialized_type)
102-
else
103-
expect(MyActiveRecordModelTransition).
104-
to receive_messages(serialized_attributes: { "metadata" => "" })
105-
end
88+
serialized_type = ActiveRecord::Type::Serialized.new(
89+
"", ActiveRecord::Coders::JSON
90+
)
91+
expect(MyActiveRecordModelTransition).
92+
to receive(:type_for_attribute).with("metadata").
93+
and_return(serialized_type)
10694
end
10795

10896
it "raises an exception" do
@@ -467,10 +455,6 @@
467455
CreateNamespacedARModelTransitionMigration.migrate(:up)
468456
end
469457

470-
before do
471-
MyNamespace::MyActiveRecordModelTransition.serialize(:metadata, JSON)
472-
end
473-
474458
let(:observer) { double(Statesman::Machine, execute: nil) }
475459
let(:model) do
476460
MyNamespace::MyActiveRecordModel.create(current_state: :pending)

0 commit comments

Comments
 (0)