activerecord-pg_enum 1.2.0 → 2.0.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.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +95 -0
  3. data/Appraisals +4 -0
  4. data/CHANGELOG.md +20 -0
  5. data/README.md +10 -2
  6. data/Rakefile +0 -3
  7. data/gemfiles/4.1.gemfile.lock +5 -5
  8. data/gemfiles/4.2.gemfile.lock +11 -11
  9. data/gemfiles/5.0.gemfile.lock +11 -11
  10. data/gemfiles/5.1.gemfile.lock +12 -12
  11. data/gemfiles/5.2.gemfile.lock +12 -12
  12. data/gemfiles/6.0.gemfile +1 -1
  13. data/gemfiles/6.0.gemfile.lock +3 -3
  14. data/gemfiles/6.1.gemfile.lock +1 -1
  15. data/gemfiles/7.0.gemfile +7 -0
  16. data/gemfiles/7.0.gemfile.lock +68 -0
  17. data/gemfiles/edge.gemfile.lock +1 -1
  18. data/lib/active_record/pg_enum/4.1/create_enum.rb +1 -0
  19. data/lib/active_record/pg_enum/4.1/postgresql_adapter.rb +1 -0
  20. data/lib/active_record/pg_enum/4.2/create_enum.rb +1 -0
  21. data/lib/active_record/pg_enum/4.2/postgresql_adapter.rb +1 -0
  22. data/lib/active_record/pg_enum/5.0/create_enum.rb +1 -0
  23. data/lib/active_record/pg_enum/5.0/postgresql_adapter.rb +1 -0
  24. data/lib/active_record/pg_enum/5.1/create_enum.rb +1 -0
  25. data/lib/active_record/pg_enum/5.1/postgresql_adapter.rb +1 -0
  26. data/lib/active_record/pg_enum/5.2/create_enum.rb +1 -0
  27. data/lib/active_record/pg_enum/5.2/postgresql_adapter.rb +1 -0
  28. data/lib/active_record/pg_enum/6.0/create_enum.rb +1 -0
  29. data/lib/active_record/pg_enum/6.0/postgresql_adapter.rb +1 -0
  30. data/lib/active_record/pg_enum/6.0/table_definition.rb +17 -0
  31. data/lib/active_record/pg_enum/6.1/create_enum.rb +21 -0
  32. data/lib/active_record/pg_enum/{postgresql_adapter.rb → 6.1/postgresql_adapter.rb} +1 -1
  33. data/lib/active_record/pg_enum/6.1/table_definition.rb +1 -1
  34. data/lib/active_record/pg_enum/schema_statements.rb +1 -12
  35. data/lib/active_record/pg_enum/version.rb +1 -1
  36. data/lib/active_record/pg_enum.rb +2 -3
  37. metadata +20 -5
  38. data/.travis.yml +0 -33
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 85cd85e713014a5ff4908c18f1fce5ca4ac095f8a96e920f9d88c6ce2ba98d56
4
- data.tar.gz: 1cccaa9ca8d9159026f9481f2ea4140cae92d512e319a63a57d61c4df89cebd4
3
+ metadata.gz: e90a1c4526f10cabb98bec7d1800ac564c00ade2847cca560ee9ecbb3b471ffb
4
+ data.tar.gz: a4741cc472ad80350fc69f13ab846b1e5cecaa4484ae353b0d9cbc6af8da041b
5
5
  SHA512:
6
- metadata.gz: ea13c3305043508405f0884c2a7af0debd0a226284975a1c2459dd641316de2b3f44b74b45d10164c11a74035be6abad5587314e9a5ccf62052f62398923cf4c
7
- data.tar.gz: 65e9812276e32202570e1eb1b8d997d327b3bfbaf68fb883aa127e13747cbda0cb570384ec375ed5ee8320cf9df89dffb59fbc533bd432b769185f54cd947d9c
6
+ metadata.gz: 83969dc1fdba6d8f1e0ca382ee34564797ae20d2c941ab98900d0a9574977994fae4b6f465a1e8966ebaf3058680df3c3f66f37a8bae0f86053a2423f7b29524
7
+ data.tar.gz: 5c21046467a8adcbcba29b90090e8b5472a3c8e337250782ea2b68b0c76e5600ea5bf33bb89a4f4f44b220ea538051ed116228422e33968c1ff60951e2a997bf
@@ -0,0 +1,95 @@
1
+ version: 2.1
2
+
3
+ jobs:
4
+ test:
5
+ parameters:
6
+ image:
7
+ type: string
8
+ gemfile:
9
+ type: string
10
+ docker:
11
+ - image: '<< parameters.image >>'
12
+ auth:
13
+ username: alassek
14
+ password: $DOCKERHUB_TOKEN
15
+ - image: circleci/postgres:10
16
+ auth:
17
+ username: alassek
18
+ password: $DOCKERHUB_TOKEN
19
+ environment:
20
+ POSTGRES_USER: postgres
21
+ POSTGRES_PASSWORD: ""
22
+ POSTGRES_HOST_AUTH_METHOD: trust
23
+ environment:
24
+ BUNDLER_VERSION: "1.17.3"
25
+ BUNDLE_GEMFILE: '<< parameters.gemfile >>'
26
+ BUNDLE_JOBS: "3"
27
+ BUNDLE_RETRY: "3"
28
+ PGHOST: 127.0.0.1
29
+ PGUSER: postgres
30
+ PGPASSWORD: ""
31
+ TEST_USER: postgres
32
+ steps:
33
+ - checkout
34
+ - run:
35
+ name: Generate checksums
36
+ command: |
37
+ mkdir -p tmp
38
+ shasum gemfiles/*.lock > tmp/checksum.txt
39
+ - restore_cache:
40
+ key: v1-gem-cache-{{ checksum "tmp/checksum.txt" }}
41
+ - run:
42
+ name: Install Dependencies
43
+ command: |
44
+ gem install bundler:$BUNDLER_VERSION
45
+ bundle check --path ./vendor/bundle || bundle install --deployment
46
+ - run:
47
+ name: Wait for DB
48
+ command: dockerize -wait tcp://localhost:5432 -timeout 1m
49
+ - run:
50
+ name: Run RSpec Tests
51
+ command: bundle exec rake spec
52
+
53
+ workflows:
54
+ rails_4_1:
55
+ jobs:
56
+ - test:
57
+ name: Rails 4.1
58
+ image: 'circleci/ruby:2.2.6'
59
+ gemfile: 'gemfiles/4.1.gemfile'
60
+ rails_4_2:
61
+ jobs:
62
+ - test:
63
+ name: Rails 4.2
64
+ image: 'circleci/ruby:2.2.10'
65
+ gemfile: 'gemfiles/4.2.gemfile'
66
+ rails_5_0:
67
+ jobs:
68
+ - test:
69
+ name: Rails 5.0
70
+ image: 'circleci/ruby:2.3.8'
71
+ gemfile: 'gemfiles/5.0.gemfile'
72
+ rails_5_1:
73
+ jobs:
74
+ - test:
75
+ name: Rails 5.1
76
+ image: 'circleci/ruby:2.4.4'
77
+ gemfile: 'gemfiles/5.1.gemfile'
78
+ rails_6_0:
79
+ jobs:
80
+ - test:
81
+ name: Rails 6.0
82
+ image: 'circleci/ruby:2.6.0'
83
+ gemfile: 'gemfiles/6.0.gemfile'
84
+ rails_6_1:
85
+ jobs:
86
+ - test:
87
+ name: Rails 6.1
88
+ image: 'circleci/ruby:3.0.1'
89
+ gemfile: 'gemfiles/6.1.gemfile'
90
+ rails_7_0:
91
+ jobs:
92
+ - test:
93
+ name: Rails 7.0
94
+ image: 'cimg/ruby:2.7.6'
95
+ gemfile: 'gemfiles/7.0.gemfile'
data/Appraisals CHANGED
@@ -1,3 +1,7 @@
1
+ appraise "7.0" do
2
+ gem "activerecord", "~> 7.0"
3
+ end
4
+
1
5
  appraise "6.1" do
2
6
  gem "activerecord", "~> 6.1"
3
7
  end
data/CHANGELOG.md CHANGED
@@ -6,6 +6,26 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [2.0.0] - 2022-07-17
10
+ ### Added
11
+ - Support for 7.0
12
+
13
+ ### Changed
14
+ - ActiveRecord added `enum_types` interface so monkeypatch has been removed. **Note:** output format has changed.
15
+ - `create_enum` uses framework interface, replacing `:as` kwarg with `:enum_type`
16
+
17
+ ## [1.2.2] - 2021-01-07
18
+ ### Fixed
19
+ - Don't mutate `Gem::Version#canonical_segments` (@agrobbin)
20
+
21
+ ## [1.2.1] - 2021-01-05
22
+ ### Fixed
23
+ - Argument bug that surfaced in Ruby 3.0
24
+
25
+ ## [1.2.0] - 2020-12-09
26
+ ### Added
27
+ - Support for 6.1
28
+
9
29
  ## [1.1.0] - 2020-01-18
10
30
  ### Added
11
31
  - `rename_enum` command for changing the type name
data/README.md CHANGED
@@ -1,4 +1,7 @@
1
- # ActiveRecord::PGEnum [![Build Status](https://travis-ci.com/alassek/activerecord-pg_enum.svg?branch=master)](https://travis-ci.com/alassek/activerecord-pg_enum)
1
+ # ActiveRecord::PGEnum [![Build Status](https://circleci.com/gh/alassek/activerecord-pg_enum.svg?style=shield)](https://app.circleci.com/pipelines/github/alassek/activerecord-pg_enum)
2
+
3
+ **Note**: This was originally written before Rails added support for native enums. See the comments in [version
4
+ support](#version-support).
2
5
 
3
6
  The `enum` feature in Rails has bad developer ergonomics. It uses integer types at the DB layer, which means trying to understand SQL output is a pain.
4
7
 
@@ -61,6 +64,9 @@ The monkeypatches in this library are extremely narrow and contained; the dirty
61
64
 
62
65
  Monkeypatching Rails internals is **scary**. So this library has a comprehensive test suite that runs against every known minor version.
63
66
 
67
+ Rails 7 added support for native enums, but they have so far neglected to support altering or dropping enums in the API,
68
+ so this gem remains to fill in the gaps. I expect to slowly deprecate this over time.
69
+
64
70
  ## Installation
65
71
 
66
72
  Add this line to your application's Gemfile:
@@ -91,10 +97,12 @@ class AddContactMethodType < ActiveRecord::Migration[5.2]
91
97
  end
92
98
  ```
93
99
 
94
- Adding a value to an existing ENUM
100
+ Adding a value to an existing ENUM (you must disable the wrapping transaction on PostgreSQL versions older than 12)
95
101
 
96
102
  ```ruby
97
103
  class AddSMSToContactMethodType < ActiveRecord::Migration[5.2]
104
+ disable_ddl_transaction!
105
+
98
106
  def up
99
107
  add_enum_value "contact_method_type", "SMS", before: "Phone"
100
108
  end
data/Rakefile CHANGED
@@ -1,7 +1,4 @@
1
1
  require "bundler/gem_tasks"
2
- :q
3
- :q
4
-
5
2
  require "rspec/core/rake_task"
6
3
  require "appraisal"
7
4
  require "pry"
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- activerecord-pg_enum (1.1.0)
4
+ activerecord-pg_enum (1.2.2)
5
5
  activerecord (>= 4.1.0)
6
6
  activesupport
7
7
  pg
@@ -27,15 +27,15 @@ GEM
27
27
  rake
28
28
  thor (>= 0.14.0)
29
29
  arel (5.0.1.20140414130214)
30
- builder (3.2.3)
30
+ builder (3.2.4)
31
31
  coderay (1.1.2)
32
- concurrent-ruby (1.1.5)
32
+ concurrent-ruby (1.1.7)
33
33
  diff-lcs (1.3)
34
34
  i18n (0.9.5)
35
35
  concurrent-ruby (~> 1.0)
36
36
  json (1.8.6)
37
37
  method_source (0.9.2)
38
- minitest (5.11.3)
38
+ minitest (5.14.2)
39
39
  pg (0.21.0)
40
40
  pry (0.12.2)
41
41
  coderay (~> 1.1.0)
@@ -56,7 +56,7 @@ GEM
56
56
  rspec-support (3.8.2)
57
57
  thor (0.20.3)
58
58
  thread_safe (0.3.6)
59
- tzinfo (1.2.5)
59
+ tzinfo (1.2.8)
60
60
  thread_safe (~> 0.1)
61
61
 
62
62
  PLATFORMS
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- activerecord-pg_enum (1.1.0)
4
+ activerecord-pg_enum (1.2.2)
5
5
  activerecord (>= 4.1.0)
6
6
  activesupport
7
7
  pg
@@ -9,14 +9,14 @@ PATH
9
9
  GEM
10
10
  remote: https://rubygems.org/
11
11
  specs:
12
- activemodel (4.2.11.1)
13
- activesupport (= 4.2.11.1)
12
+ activemodel (4.2.11.3)
13
+ activesupport (= 4.2.11.3)
14
14
  builder (~> 3.1)
15
- activerecord (4.2.11.1)
16
- activemodel (= 4.2.11.1)
17
- activesupport (= 4.2.11.1)
15
+ activerecord (4.2.11.3)
16
+ activemodel (= 4.2.11.3)
17
+ activesupport (= 4.2.11.3)
18
18
  arel (~> 6.0)
19
- activesupport (4.2.11.1)
19
+ activesupport (4.2.11.3)
20
20
  i18n (~> 0.7)
21
21
  minitest (~> 5.1)
22
22
  thread_safe (~> 0.3, >= 0.3.4)
@@ -26,14 +26,14 @@ GEM
26
26
  rake
27
27
  thor (>= 0.14.0)
28
28
  arel (6.0.4)
29
- builder (3.2.3)
29
+ builder (3.2.4)
30
30
  coderay (1.1.2)
31
- concurrent-ruby (1.1.5)
31
+ concurrent-ruby (1.1.7)
32
32
  diff-lcs (1.3)
33
33
  i18n (0.9.5)
34
34
  concurrent-ruby (~> 1.0)
35
35
  method_source (0.9.2)
36
- minitest (5.11.3)
36
+ minitest (5.14.2)
37
37
  pg (0.21.0)
38
38
  pry (0.12.2)
39
39
  coderay (~> 1.1.0)
@@ -54,7 +54,7 @@ GEM
54
54
  rspec-support (3.8.2)
55
55
  thor (0.20.3)
56
56
  thread_safe (0.3.6)
57
- tzinfo (1.2.5)
57
+ tzinfo (1.2.8)
58
58
  thread_safe (~> 0.1)
59
59
 
60
60
  PLATFORMS
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- activerecord-pg_enum (1.1.0)
4
+ activerecord-pg_enum (1.2.2)
5
5
  activerecord (>= 4.1.0)
6
6
  activesupport
7
7
  pg
@@ -9,13 +9,13 @@ PATH
9
9
  GEM
10
10
  remote: https://rubygems.org/
11
11
  specs:
12
- activemodel (5.0.7.1)
13
- activesupport (= 5.0.7.1)
14
- activerecord (5.0.7.1)
15
- activemodel (= 5.0.7.1)
16
- activesupport (= 5.0.7.1)
12
+ activemodel (5.0.7.2)
13
+ activesupport (= 5.0.7.2)
14
+ activerecord (5.0.7.2)
15
+ activemodel (= 5.0.7.2)
16
+ activesupport (= 5.0.7.2)
17
17
  arel (~> 7.0)
18
- activesupport (5.0.7.1)
18
+ activesupport (5.0.7.2)
19
19
  concurrent-ruby (~> 1.0, >= 1.0.2)
20
20
  i18n (>= 0.7, < 2)
21
21
  minitest (~> 5.1)
@@ -26,13 +26,13 @@ GEM
26
26
  thor (>= 0.14.0)
27
27
  arel (7.1.4)
28
28
  coderay (1.1.2)
29
- concurrent-ruby (1.1.4)
29
+ concurrent-ruby (1.1.7)
30
30
  diff-lcs (1.3)
31
31
  i18n (1.5.1)
32
32
  concurrent-ruby (~> 1.0)
33
33
  method_source (0.9.2)
34
- minitest (5.11.3)
35
- pg (1.2.2)
34
+ minitest (5.14.2)
35
+ pg (1.2.3)
36
36
  pry (0.12.2)
37
37
  coderay (~> 1.1.0)
38
38
  method_source (~> 0.9.0)
@@ -52,7 +52,7 @@ GEM
52
52
  rspec-support (3.8.0)
53
53
  thor (0.20.3)
54
54
  thread_safe (0.3.6)
55
- tzinfo (1.2.5)
55
+ tzinfo (1.2.8)
56
56
  thread_safe (~> 0.1)
57
57
 
58
58
  PLATFORMS
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- activerecord-pg_enum (1.1.0)
4
+ activerecord-pg_enum (1.2.2)
5
5
  activerecord (>= 4.1.0)
6
6
  activesupport
7
7
  pg
@@ -9,13 +9,13 @@ PATH
9
9
  GEM
10
10
  remote: https://rubygems.org/
11
11
  specs:
12
- activemodel (5.1.6)
13
- activesupport (= 5.1.6)
14
- activerecord (5.1.6)
15
- activemodel (= 5.1.6)
16
- activesupport (= 5.1.6)
12
+ activemodel (5.1.7)
13
+ activesupport (= 5.1.7)
14
+ activerecord (5.1.7)
15
+ activemodel (= 5.1.7)
16
+ activesupport (= 5.1.7)
17
17
  arel (~> 8.0)
18
- activesupport (5.1.6)
18
+ activesupport (5.1.7)
19
19
  concurrent-ruby (~> 1.0, >= 1.0.2)
20
20
  i18n (>= 0.7, < 2)
21
21
  minitest (~> 5.1)
@@ -26,13 +26,13 @@ GEM
26
26
  thor (>= 0.14.0)
27
27
  arel (8.0.0)
28
28
  coderay (1.1.2)
29
- concurrent-ruby (1.0.5)
29
+ concurrent-ruby (1.1.7)
30
30
  diff-lcs (1.3)
31
- i18n (1.1.0)
31
+ i18n (1.8.5)
32
32
  concurrent-ruby (~> 1.0)
33
33
  method_source (0.9.0)
34
- minitest (5.11.3)
35
- pg (1.2.2)
34
+ minitest (5.14.2)
35
+ pg (1.2.3)
36
36
  pry (0.11.3)
37
37
  coderay (~> 1.1.0)
38
38
  method_source (~> 0.9.0)
@@ -52,7 +52,7 @@ GEM
52
52
  rspec-support (3.8.0)
53
53
  thor (0.20.0)
54
54
  thread_safe (0.3.6)
55
- tzinfo (1.2.5)
55
+ tzinfo (1.2.8)
56
56
  thread_safe (~> 0.1)
57
57
 
58
58
  PLATFORMS
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- activerecord-pg_enum (1.1.0)
4
+ activerecord-pg_enum (1.2.2)
5
5
  activerecord (>= 4.1.0)
6
6
  activesupport
7
7
  pg
@@ -9,13 +9,13 @@ PATH
9
9
  GEM
10
10
  remote: https://rubygems.org/
11
11
  specs:
12
- activemodel (5.2.1)
13
- activesupport (= 5.2.1)
14
- activerecord (5.2.1)
15
- activemodel (= 5.2.1)
16
- activesupport (= 5.2.1)
12
+ activemodel (5.2.4.4)
13
+ activesupport (= 5.2.4.4)
14
+ activerecord (5.2.4.4)
15
+ activemodel (= 5.2.4.4)
16
+ activesupport (= 5.2.4.4)
17
17
  arel (>= 9.0)
18
- activesupport (5.2.1)
18
+ activesupport (5.2.4.4)
19
19
  concurrent-ruby (~> 1.0, >= 1.0.2)
20
20
  i18n (>= 0.7, < 2)
21
21
  minitest (~> 5.1)
@@ -26,13 +26,13 @@ GEM
26
26
  thor (>= 0.14.0)
27
27
  arel (9.0.0)
28
28
  coderay (1.1.2)
29
- concurrent-ruby (1.0.5)
29
+ concurrent-ruby (1.1.7)
30
30
  diff-lcs (1.3)
31
- i18n (1.1.0)
31
+ i18n (1.8.5)
32
32
  concurrent-ruby (~> 1.0)
33
33
  method_source (0.9.0)
34
- minitest (5.11.3)
35
- pg (1.2.2)
34
+ minitest (5.14.2)
35
+ pg (1.2.3)
36
36
  pry (0.11.3)
37
37
  coderay (~> 1.1.0)
38
38
  method_source (~> 0.9.0)
@@ -52,7 +52,7 @@ GEM
52
52
  rspec-support (3.8.0)
53
53
  thor (0.20.0)
54
54
  thread_safe (0.3.6)
55
- tzinfo (1.2.5)
55
+ tzinfo (1.2.8)
56
56
  thread_safe (~> 0.1)
57
57
 
58
58
  PLATFORMS
data/gemfiles/6.0.gemfile CHANGED
@@ -2,6 +2,6 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "activerecord", "< 6.1"
5
+ gem "activerecord", "~> 6.0"
6
6
 
7
7
  gemspec path: "../"
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- activerecord-pg_enum (1.1.0)
4
+ activerecord-pg_enum (1.2.2)
5
5
  activerecord (>= 4.1.0)
6
6
  activesupport
7
7
  pg
@@ -31,7 +31,7 @@ GEM
31
31
  concurrent-ruby (~> 1.0)
32
32
  method_source (0.9.2)
33
33
  minitest (5.14.2)
34
- pg (1.2.2)
34
+ pg (1.2.3)
35
35
  pry (0.12.2)
36
36
  coderay (~> 1.1.0)
37
37
  method_source (~> 0.9.0)
@@ -59,7 +59,7 @@ PLATFORMS
59
59
  ruby
60
60
 
61
61
  DEPENDENCIES
62
- activerecord (< 6.1)
62
+ activerecord (~> 6.0)
63
63
  activerecord-pg_enum!
64
64
  appraisal
65
65
  bundler (~> 1.17)
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- activerecord-pg_enum (1.1.0)
4
+ activerecord-pg_enum (1.2.2)
5
5
  activerecord (>= 4.1.0)
6
6
  activesupport
7
7
  pg
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "activerecord", "~> 7.0"
6
+
7
+ gemspec path: "../"
@@ -0,0 +1,68 @@
1
+ PATH
2
+ remote: ..
3
+ specs:
4
+ activerecord-pg_enum (1.2.2)
5
+ activerecord (>= 4.1.0)
6
+ activesupport
7
+ pg
8
+
9
+ GEM
10
+ remote: https://rubygems.org/
11
+ specs:
12
+ activemodel (7.0.3.1)
13
+ activesupport (= 7.0.3.1)
14
+ activerecord (7.0.3.1)
15
+ activemodel (= 7.0.3.1)
16
+ activesupport (= 7.0.3.1)
17
+ activesupport (7.0.3.1)
18
+ concurrent-ruby (~> 1.0, >= 1.0.2)
19
+ i18n (>= 1.6, < 2)
20
+ minitest (>= 5.1)
21
+ tzinfo (~> 2.0)
22
+ appraisal (2.4.1)
23
+ bundler
24
+ rake
25
+ thor (>= 0.14.0)
26
+ coderay (1.1.3)
27
+ concurrent-ruby (1.1.10)
28
+ diff-lcs (1.5.0)
29
+ i18n (1.12.0)
30
+ concurrent-ruby (~> 1.0)
31
+ method_source (1.0.0)
32
+ minitest (5.16.2)
33
+ pg (1.4.1)
34
+ pry (0.14.1)
35
+ coderay (~> 1.1)
36
+ method_source (~> 1.0)
37
+ rake (10.5.0)
38
+ rspec (3.11.0)
39
+ rspec-core (~> 3.11.0)
40
+ rspec-expectations (~> 3.11.0)
41
+ rspec-mocks (~> 3.11.0)
42
+ rspec-core (3.11.0)
43
+ rspec-support (~> 3.11.0)
44
+ rspec-expectations (3.11.0)
45
+ diff-lcs (>= 1.2.0, < 2.0)
46
+ rspec-support (~> 3.11.0)
47
+ rspec-mocks (3.11.1)
48
+ diff-lcs (>= 1.2.0, < 2.0)
49
+ rspec-support (~> 3.11.0)
50
+ rspec-support (3.11.0)
51
+ thor (1.2.1)
52
+ tzinfo (2.0.4)
53
+ concurrent-ruby (~> 1.0)
54
+
55
+ PLATFORMS
56
+ ruby
57
+
58
+ DEPENDENCIES
59
+ activerecord (~> 7.0)
60
+ activerecord-pg_enum!
61
+ appraisal
62
+ bundler (~> 1.17)
63
+ pry
64
+ rake (~> 10.0)
65
+ rspec (~> 3.0)
66
+
67
+ BUNDLED WITH
68
+ 1.17.3
@@ -87,7 +87,7 @@ GIT
87
87
  PATH
88
88
  remote: ..
89
89
  specs:
90
- activerecord-pg_enum (1.1.0)
90
+ activerecord-pg_enum (1.2.2)
91
91
  activerecord (>= 4.1.0)
92
92
  activesupport
93
93
  pg
@@ -0,0 +1 @@
1
+ require "active_record/pg_enum/6.1/create_enum"
@@ -0,0 +1 @@
1
+ require "active_record/pg_enum/6.1/postgresql_adapter"
@@ -0,0 +1 @@
1
+ require "active_record/pg_enum/6.1/create_enum"
@@ -0,0 +1 @@
1
+ require "active_record/pg_enum/6.1/postgresql_adapter"
@@ -0,0 +1 @@
1
+ require "active_record/pg_enum/6.1/create_enum"
@@ -0,0 +1 @@
1
+ require "active_record/pg_enum/6.1/postgresql_adapter"
@@ -0,0 +1 @@
1
+ require "active_record/pg_enum/6.1/create_enum"
@@ -0,0 +1 @@
1
+ require "active_record/pg_enum/6.1/postgresql_adapter"
@@ -0,0 +1 @@
1
+ require "active_record/pg_enum/6.1/create_enum"
@@ -0,0 +1 @@
1
+ require "active_record/pg_enum/6.1/postgresql_adapter"
@@ -0,0 +1 @@
1
+ require "active_record/pg_enum/6.1/create_enum"
@@ -0,0 +1 @@
1
+ require "active_record/pg_enum/6.1/postgresql_adapter"
@@ -1 +1,18 @@
1
1
  require "active_record/pg_enum/4.2/table_definition"
2
+
3
+ module ActiveRecord
4
+ module PGEnum
5
+ module TableDefinition
6
+ # Create an enum column inside a TableDefinition
7
+ #
8
+ # Example:
9
+ #
10
+ # create_table :orders do |t|
11
+ # t.enum :status, as: "status_type"
12
+ # end
13
+ def enum(name, as:, **options)
14
+ column(name, as, **options)
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,21 @@
1
+ module ActiveRecord
2
+ module PGEnum
3
+ register :create_enum do
4
+ require "active_record/connection_adapters/postgresql_adapter"
5
+ ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.include CreateEnum
6
+ end
7
+
8
+ module CreateEnum
9
+ # Create a new ENUM type, with an arbitrary number of values.
10
+ #
11
+ # Example:
12
+ #
13
+ # create_enum("foo_type", "foo", "bar", "baz", "foo bar")
14
+ def create_enum(name, values)
15
+ execute("CREATE TYPE #{name} AS ENUM (#{Array(values).map { |v| "'#{v}'" }.join(", ")})").tap {
16
+ reload_type_map
17
+ }
18
+ end
19
+ end
20
+ end
21
+ end
@@ -2,7 +2,7 @@ module ActiveRecord
2
2
  module PGEnum
3
3
  register :postgresql_adapter do
4
4
  require "active_record/connection_adapters/postgresql_adapter"
5
- ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.include PostgreSQLAdapter
5
+ ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.include ::ActiveRecord::PGEnum::PostgreSQLAdapter
6
6
  ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::NATIVE_DATABASE_TYPES.merge!(enum: { name: "enum" })
7
7
  end
8
8
 
@@ -1 +1 @@
1
- require "active_record/pg_enum/4.2/table_definition"
1
+ require "active_record/pg_enum/6.0/table_definition"
@@ -1,22 +1,11 @@
1
1
  module ActiveRecord
2
2
  module PGEnum
3
3
  register :schema_statements do
4
- require "active_record/connection_adapters/postgresql/schema_statements"
4
+ require "active_record/connection_adapters/postgresql_adapter"
5
5
  ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.include SchemaStatements
6
6
  end
7
7
 
8
8
  module SchemaStatements
9
- # Create a new ENUM type, with an arbitrary number of values.
10
- #
11
- # Example:
12
- #
13
- # create_enum("foo_type", "foo", "bar", "baz", "foo bar")
14
- def create_enum(name, values)
15
- execute("CREATE TYPE #{name} AS ENUM (#{Array(values).map { |v| "'#{v}'" }.join(", ")})").tap {
16
- reload_type_map
17
- }
18
- end
19
-
20
9
  # Drop an ENUM type from the database.
21
10
  def drop_enum(name, values_for_revert = nil)
22
11
  execute("DROP TYPE #{name}").tap {
@@ -1,5 +1,5 @@
1
1
  module ActiveRecord
2
2
  module PGEnum
3
- VERSION = "1.2.0"
3
+ VERSION = "2.0.0"
4
4
  end
5
5
  end
@@ -3,7 +3,7 @@ require "active_support/lazy_load_hooks"
3
3
 
4
4
  module ActiveRecord
5
5
  module PGEnum
6
- KNOWN_VERSIONS = %w[4.1 4.2 5.0 5.1 5.2 6.0 6.1].map { |v| Gem::Version.new(v) }
6
+ KNOWN_VERSIONS = %w[4.1 4.2 5.0 5.1 5.2 6.0 6.1 7.0].map { |v| Gem::Version.new(v) }
7
7
 
8
8
  class << self
9
9
  attr_reader :enabled_version
@@ -37,7 +37,6 @@ module ActiveRecord
37
37
 
38
38
  def initialize!
39
39
  require "active_record/pg_enum/command_recorder"
40
- require "active_record/pg_enum/postgresql_adapter"
41
40
  require "active_record/pg_enum/schema_statements"
42
41
 
43
42
  Dir[File.join(__dir__, "pg_enum", enabled_version.to_s, "*.rb")].each { |file| require file }
@@ -45,7 +44,7 @@ module ActiveRecord
45
44
  end
46
45
 
47
46
  def approximate_version(version)
48
- segments = version.respond_to?(:canonical_segments) ? version.canonical_segments : version.segments
47
+ segments = version.respond_to?(:canonical_segments) ? version.canonical_segments.dup : version.segments
49
48
 
50
49
  segments.pop while segments.any? { |s| String === s }
51
50
  segments.pop while segments.size > 2
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-pg_enum
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Lassek
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-12-10 00:00:00.000000000 Z
11
+ date: 2022-07-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pg
@@ -129,10 +129,10 @@ executables: []
129
129
  extensions: []
130
130
  extra_rdoc_files: []
131
131
  files:
132
+ - ".circleci/config.yml"
132
133
  - ".gitignore"
133
134
  - ".rspec"
134
135
  - ".rubocop.yml"
135
- - ".travis.yml"
136
136
  - Appraisals
137
137
  - CHANGELOG.md
138
138
  - Gemfile
@@ -157,37 +157,52 @@ files:
157
157
  - gemfiles/6.0.gemfile.lock
158
158
  - gemfiles/6.1.gemfile
159
159
  - gemfiles/6.1.gemfile.lock
160
+ - gemfiles/7.0.gemfile
161
+ - gemfiles/7.0.gemfile.lock
160
162
  - gemfiles/edge.gemfile
161
163
  - gemfiles/edge.gemfile.lock
162
164
  - lib/active_record/pg_enum.rb
165
+ - lib/active_record/pg_enum/4.1/create_enum.rb
163
166
  - lib/active_record/pg_enum/4.1/initialize_type_map.rb
164
167
  - lib/active_record/pg_enum/4.1/migration_keys.rb
168
+ - lib/active_record/pg_enum/4.1/postgresql_adapter.rb
165
169
  - lib/active_record/pg_enum/4.1/prepare_column_options.rb
166
170
  - lib/active_record/pg_enum/4.1/schema_dumper.rb
167
171
  - lib/active_record/pg_enum/4.1/simplified_type.rb
168
172
  - lib/active_record/pg_enum/4.1/table_definition.rb
173
+ - lib/active_record/pg_enum/4.2/create_enum.rb
169
174
  - lib/active_record/pg_enum/4.2/migration_keys.rb
175
+ - lib/active_record/pg_enum/4.2/postgresql_adapter.rb
170
176
  - lib/active_record/pg_enum/4.2/prepare_column_options.rb
171
177
  - lib/active_record/pg_enum/4.2/schema_dumper.rb
172
178
  - lib/active_record/pg_enum/4.2/table_definition.rb
179
+ - lib/active_record/pg_enum/5.0/create_enum.rb
173
180
  - lib/active_record/pg_enum/5.0/migration_keys.rb
181
+ - lib/active_record/pg_enum/5.0/postgresql_adapter.rb
174
182
  - lib/active_record/pg_enum/5.0/prepare_column_options.rb
175
183
  - lib/active_record/pg_enum/5.0/schema_dumper.rb
176
184
  - lib/active_record/pg_enum/5.0/table_definition.rb
185
+ - lib/active_record/pg_enum/5.1/create_enum.rb
186
+ - lib/active_record/pg_enum/5.1/postgresql_adapter.rb
177
187
  - lib/active_record/pg_enum/5.1/prepare_column_options.rb
178
188
  - lib/active_record/pg_enum/5.1/schema_dumper.rb
179
189
  - lib/active_record/pg_enum/5.1/table_definition.rb
190
+ - lib/active_record/pg_enum/5.2/create_enum.rb
191
+ - lib/active_record/pg_enum/5.2/postgresql_adapter.rb
180
192
  - lib/active_record/pg_enum/5.2/prepare_column_options.rb
181
193
  - lib/active_record/pg_enum/5.2/schema_dumper.rb
182
194
  - lib/active_record/pg_enum/5.2/table_definition.rb
195
+ - lib/active_record/pg_enum/6.0/create_enum.rb
196
+ - lib/active_record/pg_enum/6.0/postgresql_adapter.rb
183
197
  - lib/active_record/pg_enum/6.0/prepare_column_options.rb
184
198
  - lib/active_record/pg_enum/6.0/schema_dumper.rb
185
199
  - lib/active_record/pg_enum/6.0/table_definition.rb
200
+ - lib/active_record/pg_enum/6.1/create_enum.rb
201
+ - lib/active_record/pg_enum/6.1/postgresql_adapter.rb
186
202
  - lib/active_record/pg_enum/6.1/prepare_column_options.rb
187
203
  - lib/active_record/pg_enum/6.1/schema_dumper.rb
188
204
  - lib/active_record/pg_enum/6.1/table_definition.rb
189
205
  - lib/active_record/pg_enum/command_recorder.rb
190
- - lib/active_record/pg_enum/postgresql_adapter.rb
191
206
  - lib/active_record/pg_enum/schema_statements.rb
192
207
  - lib/active_record/pg_enum/version.rb
193
208
  - lib/activerecord/pg_enum.rb
@@ -214,7 +229,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
214
229
  - !ruby/object:Gem::Version
215
230
  version: '0'
216
231
  requirements: []
217
- rubygems_version: 3.0.6
232
+ rubygems_version: 3.1.6
218
233
  signing_key:
219
234
  specification_version: 4
220
235
  summary: Integrate PostgreSQL's enumerated types with the Rails enum feature
data/.travis.yml DELETED
@@ -1,33 +0,0 @@
1
- sudo: false
2
- dist: xenial
3
- language: ruby
4
- matrix:
5
- include:
6
- - rvm: 2.2.4
7
- gemfile: gemfiles/4.1.gemfile
8
- - rvm: 2.2.10
9
- gemfile: gemfiles/4.2.gemfile
10
- - rvm: 2.3.8
11
- gemfile: gemfiles/5.0.gemfile
12
- - rvm: 2.4.4
13
- gemfile: gemfiles/5.1.gemfile
14
- - rvm: 2.5.1
15
- gemfile: gemfiles/5.2.gemfile
16
- - rvm: 2.6.0
17
- gemfile: gemfiles/6.0.gemfile
18
- - rvm: 2.7.0
19
- gemfile: gemfiles/6.1.gemfile
20
- - rvm: ruby-head
21
- gemfile: gemfiles/edge.gemfile
22
- allow_failures:
23
- - gemfile: gemfiles/edge.gemfile
24
- services:
25
- - postgresql
26
- addons:
27
- postgresql: "10"
28
- before_install: gem install bundler -v 1.17.3
29
- script: "bundle exec rake spec"
30
- env:
31
- global:
32
- - TEST_USER=postgres
33
- - PGPORT=5432