activerecord-pg_enum 1.2.2 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 41d36c9e4ee304c95191b220c77fce35aefe35302947e35a37a5b7140d2464d1
4
- data.tar.gz: f0e1a8b1a8824df5b29e294f9cd35eb395712bf795d5a8b78bea9076a5986420
3
+ metadata.gz: e90a1c4526f10cabb98bec7d1800ac564c00ade2847cca560ee9ecbb3b471ffb
4
+ data.tar.gz: a4741cc472ad80350fc69f13ab846b1e5cecaa4484ae353b0d9cbc6af8da041b
5
5
  SHA512:
6
- metadata.gz: 9b2f8159361a471e78f894348d35e3cd4df4c5794afcbe10be6ceec198a9cc195a3898631699bbbcac630d480ba27bad7aa48481c02615dfd4787d52a985c38b
7
- data.tar.gz: afa8c39a24d7ff70b50d7c22b5fc98cca1ac7b3ac05a4f87b61da8ba38c2a60a5bfd43c914d02e415b6813a4bc1640589fa7f0964a4d1000966bf652f46ba07b
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,14 @@ 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
+
9
17
  ## [1.2.2] - 2021-01-07
10
18
  ### Fixed
11
19
  - Don't mutate `Gem::Version#canonical_segments` (@agrobbin)
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
@@ -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
@@ -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"
@@ -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,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.2"
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 }
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.2
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: 2021-01-07 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.3
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