persistent_enum 1.2.5 → 1.2.7

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: d11d2cd28eb40b76c5f0a286ba1f382342beaa62a216905357860c02e4078579
4
- data.tar.gz: 031273743a7a2d2fa85c41c6bc0bd232e6741ac3ed96dc6cc70d2548fb5727fa
3
+ metadata.gz: c0456dff106c050a619565ac971ca85003b9e37cab527e92ff35e31d8022667a
4
+ data.tar.gz: 34773166cd40c345af7e1734c66a28d9418d264744da9e8937d0200a4de88c91
5
5
  SHA512:
6
- metadata.gz: b1b9f31ed175df65e7cd60783c4e8892e1c7d776972dbae259581912b266a4648f5926ef0e67500d8cceaaeba603cce5b770151b91cd0a0cf849710f57e3415a
7
- data.tar.gz: 2b1d79ba03dc20042189b6d76e785f7167b2345236b75a1ab59d66ec3c828cdba433d42d3bffbc4e6c0b3c5cb68f350510c26e63d727599df5a4f04e089b1b0f
6
+ metadata.gz: d847f2b807bc1179866bfbba7cc3498e07869f5c81255df7a78a9f76ed86ffa1ecf36f3ec56e0c39924bd923caac9d40f679cad1f01efbaca7c8b51dcfe45944
7
+ data.tar.gz: 9d1e4034c3917f8828c567ba458a5e9046ece0aa07e3608a5ed1d75fad2d725045450d2a5e3443dfc25a3ee78a0316459bd27149ff8a4cab8d8df541ac5e88c9
@@ -0,0 +1,31 @@
1
+ name: Publish Ruby Gem
2
+
3
+ on:
4
+ push:
5
+ branches: [ "master" ]
6
+
7
+ jobs:
8
+ build:
9
+ name: Build + Publish
10
+ runs-on: ubuntu-latest
11
+ permissions:
12
+ contents: read
13
+ packages: write
14
+
15
+ steps:
16
+ - uses: actions/checkout@v3
17
+ - name: Set up Ruby 2.7
18
+ uses: ruby/setup-ruby@v1
19
+ with:
20
+ ruby-version: 2.7
21
+
22
+ - name: Publish to RubyGems
23
+ run: |
24
+ mkdir -p $HOME/.gem
25
+ touch $HOME/.gem/credentials
26
+ chmod 0600 $HOME/.gem/credentials
27
+ printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
28
+ gem build *.gemspec
29
+ gem push *.gem
30
+ env:
31
+ GEM_HOST_API_KEY: "${{secrets.RUBYGEMS_AUTH_TOKEN}}"
@@ -0,0 +1,84 @@
1
+ name: Run Tests
2
+
3
+ on:
4
+ pull_request:
5
+ branches: "**"
6
+
7
+ permissions:
8
+ contents: read
9
+ checks: write
10
+ pull-requests: write
11
+
12
+ jobs:
13
+ test:
14
+ runs-on: ubuntu-latest
15
+
16
+ services:
17
+ mysql:
18
+ image: mysql:5.7
19
+ ports:
20
+ - "3306:3306"
21
+ env:
22
+ MYSQL_DATABASE: persistent_enum_test
23
+ MYSQL_USER: user
24
+ MYSQL_PASSWORD: password
25
+ MYSQL_ROOT_PASSWORD: rootpassword
26
+ options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
27
+ postgres:
28
+ image: postgres:13-alpine
29
+ ports:
30
+ - "5432:5432"
31
+ env:
32
+ POSTGRES_DB: persistent_enum_test
33
+ POSTGRES_USER: user
34
+ POSTGRES_PASSWORD: password
35
+
36
+ strategy:
37
+ fail-fast: false
38
+ matrix:
39
+ rails-version: ['5.2', '6.1', '7.0']
40
+ database: ['mysql', 'postgresql', 'sqlite']
41
+ include:
42
+ - database: mysql
43
+ database-url: "mysql2://user:password@127.0.0.1:3306/persistent_enum_test"
44
+ - database: postgresql
45
+ database-url: "postgres://user:password@localhost:5432/persistent_enum_test"
46
+ - database: sqlite
47
+ database-url: "sqlite3::memory:"
48
+ - rails-version: '5.2'
49
+ ruby-version: '2.7'
50
+ bundle-gemfile: gemfiles/rails_5_2.gemfile
51
+ - rails-version: '6.1'
52
+ ruby-version: '3.0'
53
+ bundle-gemfile: gemfiles/rails_6_1.gemfile
54
+ - rails-version: '7.0'
55
+ ruby-version: '3.2'
56
+ bundle-gemfile: gemfiles/rails_7_0.gemfile
57
+
58
+ env: # $BUNDLE_GEMFILE must be set at the job level, so it is set for all steps
59
+ BUNDLE_GEMFILE: ${{ github.workspace }}/${{ matrix.bundle-gemfile }}
60
+ DATABASE_URL: ${{ matrix.database-url }}
61
+ TEST_DATABASE_ENVIRONMENT: ${{ matrix.database }}
62
+
63
+ steps:
64
+ - uses: actions/checkout@v3
65
+ - name: Set up Ruby
66
+ uses: ruby/setup-ruby@v1
67
+ with:
68
+ ruby-version: ${{ matrix.ruby-version }}
69
+ bundler-cache: true # runs 'bundle install' and caches installed gems automatically
70
+ - name: Run tests
71
+ run: bundle exec rspec --profile 10 --format RspecJunitFormatter --out test_results/rspec.xml --format progress
72
+ - name: Upload result
73
+ uses: actions/upload-artifact@v3
74
+ if: always()
75
+ with:
76
+ name: rspec_{{ matrix.rails-version }}-${{ matrix.database }}.xml
77
+ path: test_results/rspec.xml
78
+ - name: Test Report
79
+ uses: dorny/test-reporter@v1
80
+ if: always()
81
+ with:
82
+ name: Rspec Tests - Rails ${{ matrix.rails-version }} - ${{ matrix.database }}
83
+ path: test_results/rspec.xml
84
+ reporter: java-junit
data/Appraisals CHANGED
@@ -2,6 +2,10 @@ appraise "rails-5-2" do
2
2
  gem "rails", "~> 5.2.0"
3
3
  end
4
4
 
5
- appraise "rails-6-0-beta" do
6
- gem "rails", "~> 6.0.0.beta"
5
+ appraise "rails-6-1" do
6
+ gem "rails", "~> 6.1.0"
7
+ end
8
+
9
+ appraise "rails-7-0" do
10
+ gem "rails", "~> 7.0.0"
7
11
  end
@@ -3,6 +3,6 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "rspec_junit_formatter"
6
- gem "rails", "~> 6.0.0.beta"
6
+ gem "rails", "~> 6.1.0"
7
7
 
8
8
  gemspec path: "../"
@@ -0,0 +1,8 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rspec_junit_formatter"
6
+ gem "rails", "~> 7.0.0"
7
+
8
+ gemspec path: "../"
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PersistentEnum
4
- VERSION = '1.2.5'
4
+ VERSION = '1.2.7'
5
5
  end
@@ -16,6 +16,14 @@ module PersistentEnum
16
16
  class EnumTableInvalid < RuntimeError; end
17
17
  class MissingEnumTypeError < RuntimeError; end
18
18
 
19
+ MISSING_DATABASE_ERRORS =
20
+ begin
21
+ errs = [ActiveRecord::NoDatabaseError]
22
+ # Added with Rails 7
23
+ errs << ActiveRecord::DatabaseConnectionError if ActiveRecord.const_defined?(:DatabaseConnectionError)
24
+ errs.freeze
25
+ end
26
+
19
27
  module ClassMethods
20
28
  def acts_as_enum(required_constants, name_attr: :name, sql_enum_type: nil, &constant_init_block)
21
29
  include ActsAsEnum
@@ -156,7 +164,7 @@ module PersistentEnum
156
164
  else
157
165
  puts "Database table for model #{model.name} doesn't exist, no constants cached."
158
166
  end
159
- rescue ActiveRecord::NoDatabaseError
167
+ rescue *MISSING_DATABASE_ERRORS
160
168
  puts "Database for model #{model.name} doesn't exist, no constants cached."
161
169
  end
162
170
 
@@ -180,7 +188,7 @@ module PersistentEnum
180
188
  unless model.table_exists?
181
189
  raise EnumTableInvalid.new("Database table for model #{model.name} doesn't exist")
182
190
  end
183
- rescue ActiveRecord::NoDatabaseError
191
+ rescue *MISSING_DATABASE_ERRORS
184
192
  raise EnumTableInvalid.new("Database for model #{model.name} doesn't exist")
185
193
  end
186
194
 
@@ -18,8 +18,8 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ['lib']
20
20
 
21
- spec.add_dependency 'activerecord', '>= 5.0', '< 7'
22
- spec.add_dependency 'activesupport', '>= 5.0', '< 7'
21
+ spec.add_dependency 'activerecord', '>= 5.0', '< 8'
22
+ spec.add_dependency 'activesupport', '>= 5.0', '< 8'
23
23
 
24
24
  spec.add_dependency 'activerecord-import'
25
25
 
@@ -9,13 +9,19 @@ module DatabaseHelper
9
9
  end
10
10
 
11
11
  def self.initialize_database
12
- db_config_path = File.join(File.dirname(__FILE__), '../config/database.yml')
13
- db_config_data = File.read(db_config_path)
14
- db_config_data = ERB.new(db_config_data).result
15
- db_config = YAML.safe_load(db_config_data)
16
- raise 'Test database configuration missing' unless db_config[db_env]
12
+ if (url = ENV['DATABASE_URL'])
13
+ db_config = url
14
+ else
15
+ db_config_path = File.join(File.dirname(__FILE__), '../config/database.yml')
16
+ db_config_data = File.read(db_config_path)
17
+ db_config_data = ERB.new(db_config_data).result
18
+ db_config = YAML.safe_load(db_config_data)
19
+ raise 'Test database configuration missing' unless db_config[db_env]
17
20
 
18
- ActiveRecord::Base.establish_connection(db_config[db_env])
21
+ db_config = db_config[db_env]
22
+ end
23
+
24
+ ActiveRecord::Base.establish_connection(db_config)
19
25
 
20
26
  if ENV['DEBUG']
21
27
  ActiveRecord::Base.logger = Logger.new(STDERR)
@@ -62,6 +68,8 @@ module DatabaseHelper
62
68
  clazz.connection.drop_table(table_name, force: :cascade)
63
69
  end
64
70
 
65
- ActiveSupport::Dependencies::Reference.clear!
71
+ if ActiveSupport::VERSION::MAJOR < 7
72
+ ActiveSupport::Dependencies::Reference.clear!
73
+ end
66
74
  end
67
75
  end
@@ -149,7 +149,6 @@ RSpec.describe PersistentEnum, :database do
149
149
  context 'with a validation on the model' do
150
150
  let(:model) do
151
151
  create_test_model(:with_table, ->(t) { t.string :name; t.index [:name], unique: true }) do
152
- yield if block_given?
153
152
  validates :name, exclusion: { in: [CONSTANTS.first.to_s] }
154
153
  acts_as_enum(CONSTANTS)
155
154
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: persistent_enum
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.5
4
+ version: 1.2.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - iKnow
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-08-31 00:00:00.000000000 Z
11
+ date: 2024-01-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -19,7 +19,7 @@ dependencies:
19
19
  version: '5.0'
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: '7'
22
+ version: '8'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,7 +29,7 @@ dependencies:
29
29
  version: '5.0'
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '7'
32
+ version: '8'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: activesupport
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -39,7 +39,7 @@ dependencies:
39
39
  version: '5.0'
40
40
  - - "<"
41
41
  - !ruby/object:Gem::Version
42
- version: '7'
42
+ version: '8'
43
43
  type: :runtime
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
@@ -49,7 +49,7 @@ dependencies:
49
49
  version: '5.0'
50
50
  - - "<"
51
51
  - !ruby/object:Gem::Version
52
- version: '7'
52
+ version: '8'
53
53
  - !ruby/object:Gem::Dependency
54
54
  name: activerecord-import
55
55
  requirement: !ruby/object:Gem::Requirement
@@ -185,10 +185,10 @@ executables: []
185
185
  extensions: []
186
186
  extra_rdoc_files: []
187
187
  files:
188
- - ".circleci/config.yml"
188
+ - ".github/workflows/gem-push.yml"
189
+ - ".github/workflows/test.yml"
189
190
  - ".gitignore"
190
191
  - ".rspec"
191
- - ".travis.yml"
192
192
  - Appraisals
193
193
  - Gemfile
194
194
  - LICENSE.txt
@@ -197,7 +197,8 @@ files:
197
197
  - gemfiles/rails_5_0.gemfile
198
198
  - gemfiles/rails_5_1.gemfile
199
199
  - gemfiles/rails_5_2.gemfile
200
- - gemfiles/rails_6_0_beta.gemfile
200
+ - gemfiles/rails_6_1.gemfile
201
+ - gemfiles/rails_7_0.gemfile
201
202
  - lib/persistent_enum.rb
202
203
  - lib/persistent_enum/acts_as_enum.rb
203
204
  - lib/persistent_enum/railtie.rb
@@ -226,7 +227,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
226
227
  - !ruby/object:Gem::Version
227
228
  version: '0'
228
229
  requirements: []
229
- rubygems_version: 3.0.3.1
230
+ rubygems_version: 3.1.6
230
231
  signing_key:
231
232
  specification_version: 4
232
233
  summary: Database-backed enums for Rails
data/.circleci/config.yml DELETED
@@ -1,173 +0,0 @@
1
- version: 2.1
2
-
3
- executors:
4
- ruby-sqlite: &ruby
5
- parameters: &ruby_params
6
- ruby-version:
7
- type: string
8
- default: "2.6"
9
- gemfile:
10
- type: string
11
- default: "Gemfile"
12
- environment:
13
- TEST_DATABASE_ENVIRONMENT: sqlite3
14
- docker:
15
- - &ruby_docker_ruby
16
- image: circleci/ruby:<< parameters.ruby-version >>
17
- environment:
18
- BUNDLE_JOBS: 3
19
- BUNDLE_RETRY: 3
20
- BUNDLE_PATH: vendor/bundle
21
- RAILS_ENV: test
22
- BUNDLE_GEMFILE: << parameters.gemfile >>
23
- ruby-pg:
24
- <<: *ruby
25
- parameters:
26
- <<: *ruby_params
27
- pg-version:
28
- type: string
29
- default: "11"
30
- environment:
31
- TEST_DATABASE_ENVIRONMENT: postgresql
32
- PGHOST: 127.0.0.1
33
- PGUSER: eikaiwa
34
- docker:
35
- - *ruby_docker_ruby
36
- - image: circleci/postgres:<< parameters.pg-version >>-alpine
37
- environment:
38
- POSTGRES_USER: eikaiwa
39
- POSTGRES_DB: persistent_enum_test
40
- POSTGRES_PASSWORD: ""
41
- ruby-mysql:
42
- <<: *ruby
43
- parameters:
44
- <<: *ruby_params
45
- mysql-version:
46
- type: string
47
- default: "5.6"
48
- environment:
49
- TEST_DATABASE_ENVIRONMENT: mysql2
50
- MYSQL_HOST: 127.0.0.1
51
- MYSQL_USER: root
52
- docker:
53
- - *ruby_docker_ruby
54
- - image: circleci/mysql:<< parameters.mysql-version >>
55
- environment:
56
- MYSQL_ALLOW_EMPTY_PASSWORD: yes
57
- MYSQL_ROOT_PASSWORD: ''
58
- MYSQL_DATABASE: persistent_enum_test
59
-
60
- jobs:
61
- test:
62
- parameters:
63
- executor-name:
64
- type: string
65
- ruby-version:
66
- type: string
67
- gemfile:
68
- type: string
69
- database-steps:
70
- type: steps
71
- default: []
72
- executor:
73
- name: << parameters.executor-name >>
74
- ruby-version: << parameters.ruby-version >>
75
- gemfile: << parameters.gemfile >>
76
- parallelism: 1
77
- steps:
78
- - checkout
79
-
80
- - run:
81
- # Remove the non-appraisal gemfile for safety: we never want to use it.
82
- name: Prepare bundler
83
- command: bundle -v && rm Gemfile
84
-
85
- - run:
86
- name: Compute a gemfile lock
87
- command: bundle lock && cp "${BUNDLE_GEMFILE}.lock" /tmp/gem-lock
88
-
89
- - restore_cache:
90
- keys:
91
- - persistent_enum-<< parameters.ruby-version >>-{{ checksum "/tmp/gem-lock" }}
92
- - persistent_enum-
93
-
94
- - run:
95
- name: Bundle Install
96
- command: bundle check || bundle install
97
-
98
- - save_cache:
99
- key: persistent_enum-<< parameters.ruby-version >>-{{ checksum "/tmp/gem-lock" }}
100
- paths:
101
- - vendor/bundle
102
-
103
- - steps: << parameters.database-steps >>
104
-
105
- - run:
106
- name: Run rspec
107
- command: bundle exec rspec --profile 10 --format RspecJunitFormatter --out test_results/rspec.xml --format progress
108
-
109
- - store_test_results:
110
- path: test_results
111
-
112
- publish:
113
- executor: ruby-sqlite
114
- steps:
115
- - checkout
116
- - run:
117
- name: Setup Rubygems
118
- command: |
119
- mkdir ~/.gem &&
120
- echo -e "---\r\n:rubygems_api_key: $RUBYGEMS_API_KEY" > ~/.gem/credentials &&
121
- chmod 0600 ~/.gem/credentials
122
- - run:
123
- name: Publish to Rubygems
124
- command: |
125
- gem build persistent_enum.gemspec
126
- gem push persistent_enum-*.gem
127
-
128
- workflows:
129
- version: 2
130
- build:
131
- jobs:
132
- - test:
133
- name: 'ruby 2.6 rails 5.2 sqlite'
134
- executor-name: ruby-sqlite
135
- ruby-version: "2.6"
136
- gemfile: gemfiles/rails_5_2.gemfile
137
- - test:
138
- name: 'ruby 2.6 rails 6.0 sqlite'
139
- executor-name: ruby-sqlite
140
- ruby-version: "2.6"
141
- gemfile: gemfiles/rails_6_0_beta.gemfile
142
- - test:
143
- name: 'ruby 2.6 rails 5.2 pg'
144
- executor-name: ruby-pg
145
- ruby-version: "2.6"
146
- gemfile: gemfiles/rails_5_2.gemfile
147
- database-steps: &pg_wait
148
- - run: dockerize -wait tcp://localhost:5432 -timeout 1m
149
- - test:
150
- name: 'ruby 2.6 rails 6.0 pg'
151
- executor-name: ruby-pg
152
- ruby-version: "2.6"
153
- gemfile: gemfiles/rails_6_0_beta.gemfile
154
- database-steps: *pg_wait
155
- - test:
156
- name: 'ruby 2.6 rails 5.2 mysql'
157
- executor-name: ruby-mysql
158
- ruby-version: "2.6"
159
- gemfile: gemfiles/rails_5_2.gemfile
160
- database-steps: &mysql_wait
161
- - run: dockerize -wait tcp://localhost:3306 -timeout 1m
162
- - test:
163
- name: 'ruby 2.6 rails 6.0 mysql'
164
- executor-name: ruby-mysql
165
- ruby-version: "2.6"
166
- gemfile: gemfiles/rails_6_0_beta.gemfile
167
- database-steps: *mysql_wait
168
- - publish:
169
- filters:
170
- branches:
171
- only: master
172
- tags:
173
- ignore: /.*/
data/.travis.yml DELETED
@@ -1,39 +0,0 @@
1
- dist: trusty
2
- sudo: false
3
- language: ruby
4
- cache: bundler
5
-
6
- rvm:
7
- - 2.5
8
-
9
- gemfile:
10
- - gemfiles/rails_5_2.gemfile
11
-
12
- services:
13
- - mysql
14
-
15
- addons:
16
- postgresql: "10"
17
- apt:
18
- packages:
19
- - postgresql-10
20
- - postgresql-client-10
21
- - postgresql-server-dev-10
22
- env:
23
- global:
24
- - PGPORT=5433
25
- matrix:
26
- - TEST_DATABASE_ENVIRONMENT=postgresql
27
- - TEST_DATABASE_ENVIRONMENT=mysql2
28
- - TEST_DATABASE_ENVIRONMENT=sqlite3
29
-
30
- before_install:
31
- # Travis' Ruby 2.5.0 ships broken rubygems, won't run rake.
32
- # Workaround: update rubygems. See travis-ci issue 8978
33
- - gem install bundler
34
- before_script:
35
- - psql -c 'CREATE DATABASE persistent_enum_test;'
36
- - mysql -e 'CREATE DATABASE persistent_enum_test;'
37
-
38
- notifications:
39
- email: false