Skip to content

Commit e9adc5d

Browse files
committed
add in AR 6.1 and 7.0 support, also Ruby 3.1
1 parent 67687cf commit e9adc5d

18 files changed

+213
-47
lines changed

.github/workflows/prs.yml

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,12 @@ jobs:
2222
- '2.5'
2323
- '2.7'
2424
- '3.0'
25+
- '3.1'
2526
activerecord:
2627
- '5.2'
2728
- '6.0'
29+
- '6.1'
30+
- '7.0'
2831
db:
2932
- mysql2
3033
- sqlite3
@@ -34,6 +37,10 @@ jobs:
3437
exclude:
3538
- ruby: '3.0'
3639
activerecord: '5.2'
40+
- ruby: '3.1'
41+
activerecord: '5.2'
42+
- ruby: '2.5'
43+
activerecord: '7.0'
3744
- db: skip
3845
dbversion: skip
3946
include:
@@ -45,6 +52,10 @@ jobs:
4552
activerecord: '6.0'
4653
db: postgresql
4754
dbversion: '9.6'
55+
- ruby: '2.5'
56+
activerecord: '6.1'
57+
db: postgresql
58+
dbversion: '9.6'
4859
- ruby: '2.7'
4960
activerecord: '5.2'
5061
db: postgresql
@@ -53,10 +64,38 @@ jobs:
5364
activerecord: '6.0'
5465
db: postgresql
5566
dbversion: '9.6'
67+
- ruby: '2.7'
68+
activerecord: '6.1'
69+
db: postgresql
70+
dbversion: '9.6'
71+
- ruby: '2.7'
72+
activerecord: '7.0'
73+
db: postgresql
74+
dbversion: '9.6'
75+
- ruby: '3.0'
76+
activerecord: '6.0'
77+
db: postgresql
78+
dbversion: '9.6'
79+
- ruby: '3.0'
80+
activerecord: '6.1'
81+
db: postgresql
82+
dbversion: '9.6'
5683
- ruby: '3.0'
84+
activerecord: '7.0'
85+
db: postgresql
86+
dbversion: '9.6'
87+
- ruby: '3.1'
5788
activerecord: '6.0'
5889
db: postgresql
5990
dbversion: '9.6'
91+
- ruby: '3.1'
92+
activerecord: '6.1'
93+
db: postgresql
94+
dbversion: '9.6'
95+
- ruby: '3.1'
96+
activerecord: '7.0'
97+
db: postgresql
98+
dbversion: '9.6'
6099
env:
61100
BUNDLE_GEMFILE: "${{ github.workspace }}/gemfiles/activerecord-${{ matrix.activerecord }}/Gemfile.${{ matrix.db }}"
62101
MYSQL_DB_HOST: 127.0.0.1

README.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,9 +107,17 @@ schema_plus_indexes is tested on
107107
<!-- These lines are auto-generated by schema_dev based on schema_dev.yml -->
108108
* ruby **2.5** with activerecord **5.2**, using **mysql2**, **sqlite3** or **postgresql:9.6**
109109
* ruby **2.5** with activerecord **6.0**, using **mysql2**, **sqlite3** or **postgresql:9.6**
110+
* ruby **2.5** with activerecord **6.1**, using **mysql2**, **sqlite3** or **postgresql:9.6**
110111
* ruby **2.7** with activerecord **5.2**, using **mysql2**, **sqlite3** or **postgresql:9.6**
111112
* ruby **2.7** with activerecord **6.0**, using **mysql2**, **sqlite3** or **postgresql:9.6**
113+
* ruby **2.7** with activerecord **6.1**, using **mysql2**, **sqlite3** or **postgresql:9.6**
114+
* ruby **2.7** with activerecord **7.0**, using **mysql2**, **sqlite3** or **postgresql:9.6**
112115
* ruby **3.0** with activerecord **6.0**, using **mysql2**, **sqlite3** or **postgresql:9.6**
116+
* ruby **3.0** with activerecord **6.1**, using **mysql2**, **sqlite3** or **postgresql:9.6**
117+
* ruby **3.0** with activerecord **7.0**, using **mysql2**, **sqlite3** or **postgresql:9.6**
118+
* ruby **3.1** with activerecord **6.0**, using **mysql2**, **sqlite3** or **postgresql:9.6**
119+
* ruby **3.1** with activerecord **6.1**, using **mysql2**, **sqlite3** or **postgresql:9.6**
120+
* ruby **3.1** with activerecord **7.0**, using **mysql2**, **sqlite3** or **postgresql:9.6**
113121

114122
<!-- SCHEMA_DEV: MATRIX - end -->
115123

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
base_gemfile = File.expand_path('../../Gemfile.base', __FILE__)
2+
eval File.read(base_gemfile)
3+
4+
gem "activerecord", ">= 6.1", "< 6.2"
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
base_gemfile = File.expand_path('../Gemfile.base', __FILE__)
2+
eval File.read(base_gemfile), binding, base_gemfile
3+
4+
platform :ruby do
5+
gem "mysql2"
6+
end
7+
8+
platform :jruby do
9+
gem 'activerecord-jdbcmysql-adapter'
10+
end
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
base_gemfile = File.expand_path('../Gemfile.base', __FILE__)
2+
eval File.read(base_gemfile), binding, base_gemfile
3+
4+
platform :ruby do
5+
gem "pg"
6+
end
7+
8+
platform :jruby do
9+
gem 'activerecord-jdbcpostgresql-adapter'
10+
end
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
base_gemfile = File.expand_path('../Gemfile.base', __FILE__)
2+
eval File.read(base_gemfile), binding, base_gemfile
3+
4+
platform :ruby do
5+
gem "sqlite3"
6+
end
7+
8+
platform :jruby do
9+
gem 'activerecord-jdbcsqlite3-adapter', '>=1.3.0.beta2'
10+
end
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
base_gemfile = File.expand_path('../../Gemfile.base', __FILE__)
2+
eval File.read(base_gemfile)
3+
4+
gem "activerecord", ">= 7.0", "< 7.1"
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
base_gemfile = File.expand_path('../Gemfile.base', __FILE__)
2+
eval File.read(base_gemfile), binding, base_gemfile
3+
4+
platform :ruby do
5+
gem "mysql2"
6+
end
7+
8+
platform :jruby do
9+
gem 'activerecord-jdbcmysql-adapter'
10+
end
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
base_gemfile = File.expand_path('../Gemfile.base', __FILE__)
2+
eval File.read(base_gemfile), binding, base_gemfile
3+
4+
platform :ruby do
5+
gem "pg"
6+
end
7+
8+
platform :jruby do
9+
gem 'activerecord-jdbcpostgresql-adapter'
10+
end
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
base_gemfile = File.expand_path('../Gemfile.base', __FILE__)
2+
eval File.read(base_gemfile), binding, base_gemfile
3+
4+
platform :ruby do
5+
gem "sqlite3"
6+
end
7+
8+
platform :jruby do
9+
gem 'activerecord-jdbcsqlite3-adapter', '>=1.3.0.beta2'
10+
end

lib/schema_plus/indexes/active_record/migration/command_recorder.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ module CommandRecorder
88
# inversion of add_index will be remove_index. add if_exists
99
# option for cases where the index doesn't actually exist
1010
def invert_add_index(args)
11-
super.tap { |(command, (arg, options))|
11+
super.tap { |(_, args)|
12+
options = args[-1]
1213
options[:if_exists] = true
1314
}
1415
end

lib/schema_plus/indexes/middleware/migration.rb

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,23 @@ def before(env)
1414
end
1515
end
1616

17-
# Support :index option in Migration.add_column
18-
def after(env)
19-
return unless env.options[:index]
20-
case env.operation
21-
when :add, :record
22-
env.caller.add_index(env.table_name, env.column_name, env.options[:index])
17+
if Gem::Version.new(::ActiveRecord::VERSION::STRING) < Gem::Version.new('6.1')
18+
# Support :index option in Migration.add_column
19+
def after(env)
20+
return unless env.options[:index]
21+
case env.operation
22+
when :add, :record
23+
env.caller.add_index(env.table_name, env.column_name, env.options[:index])
24+
end
25+
end
26+
else
27+
# Support :index option in Migration.add_column
28+
def after(env)
29+
return unless env.options[:index]
30+
case env.operation
31+
when :add, :record
32+
env.caller.add_index(env.table_name, env.column_name, **env.options[:index])
33+
end
2334
end
2435
end
2536
end

lib/schema_plus/indexes/remove_if_exists.rb

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,24 @@
22

33
module SchemaPlus::Indexes
44
module RemoveIfExists
5-
# Extends rails' remove_index to include this options:
6-
# :if_exists
7-
def remove_index(table_name, *args)
8-
options = args.extract_options!
9-
if_exists = options.delete(:if_exists)
10-
args << options if options.any?
11-
return if if_exists && !index_name_exists?(table_name, options[:name] || index_name(table_name, *args))
12-
super table_name, *args
5+
if Gem::Version.new(::ActiveRecord::VERSION::STRING) < Gem::Version.new('6.1')
6+
# Extends rails' remove_index to include this options:
7+
# :if_exists
8+
def remove_index(table_name, *args)
9+
options = args.extract_options!
10+
if_exists = options.delete(:if_exists)
11+
args << options if options.any?
12+
return if if_exists && !index_name_exists?(table_name, options[:name] || index_name(table_name, *args))
13+
super table_name, *args
14+
end
15+
else
16+
# Extends rails' remove_index to include this options:
17+
# :if_exists
18+
def remove_index(table_name, column_name = nil, other = nil, **options)
19+
if_exists = options.delete(:if_exists)
20+
return if if_exists && !index_name_exists?(table_name, options[:name] || index_name(table_name, column_name || options))
21+
super table_name, column_name, **options
22+
end
1323
end
1424
end
1525
end

schema_dev.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,12 @@ ruby:
22
- 2.5
33
- 2.7
44
- 3.0
5+
- 3.1
56
activerecord:
67
- 5.2
78
- 6.0
9+
- 6.1
10+
- 7.0
811
db:
912
- mysql2
1013
- sqlite3

schema_plus_indexes.gemspec

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,11 @@ Gem::Specification.new do |gem|
2020

2121
gem.required_ruby_version = ">= 2.5.0"
2222

23-
gem.add_dependency "activerecord", ">= 5.2", "< 6.1"
24-
gem.add_dependency "schema_plus_core", "~> 3.0"
23+
gem.add_dependency "activerecord", ">= 5.2", "< 7.1"
24+
gem.add_dependency "schema_plus_core", "~> 3.1.0"
2525

2626
gem.add_development_dependency "bundler"
2727
gem.add_development_dependency "rake", "~> 13.0"
2828
gem.add_development_dependency "rspec", "~> 3.0"
29-
gem.add_development_dependency "schema_dev", "~> 4.1"
29+
gem.add_development_dependency "schema_dev", "~> 4.2.0"
3030
end

0 commit comments

Comments
 (0)