persistent_enum 1.2.6 → 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: 43af91376432fdb9069eb460824095c391b0c330e821537c017f44cb0d628daa
4
- data.tar.gz: a2e0469deab13c86005154eba56a34f9e41c7b22dc542e8b50d5968948a374a4
3
+ metadata.gz: c0456dff106c050a619565ac971ca85003b9e37cab527e92ff35e31d8022667a
4
+ data.tar.gz: 34773166cd40c345af7e1734c66a28d9418d264744da9e8937d0200a4de88c91
5
5
  SHA512:
6
- metadata.gz: 27c2c22957c0826fac547739fd4743979f1c181628a88aebbd24532dda539087c319e0c9b58d63f44c2c07fa6a4806871d22b6c243a1cb586e605b2eecbf4ded
7
- data.tar.gz: ff7807323596732f989757c2393729370f1b7e7669d13198060451920413c9c074a3277bf3942bbb506f142ca0b4d54d53c2e37e13ae9743350cd76a8d97ab88
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PersistentEnum
4
- VERSION = '1.2.6'
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
 
@@ -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)
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.6
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: 2022-01-12 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
@@ -185,7 +185,8 @@ 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
192
  - Appraisals
data/.circleci/config.yml DELETED
@@ -1,190 +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.7"
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: "12"
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.7"
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.7 rails 5.2 sqlite'
134
- executor-name: ruby-sqlite
135
- ruby-version: "2.7"
136
- gemfile: gemfiles/rails_5_2.gemfile
137
- - test:
138
- name: 'ruby 3.0 rails 6.1 sqlite'
139
- executor-name: ruby-sqlite
140
- ruby-version: "3.0"
141
- gemfile: gemfiles/rails_6_1.gemfile
142
- - test:
143
- name: 'ruby 3.0 rails 7.0 sqlite'
144
- executor-name: ruby-sqlite
145
- ruby-version: "3.0"
146
- gemfile: gemfiles/rails_7_0.gemfile
147
- - test:
148
- name: 'ruby 2.7 rails 5.2 pg'
149
- executor-name: ruby-pg
150
- ruby-version: "2.7"
151
- gemfile: gemfiles/rails_5_2.gemfile
152
- database-steps: &pg_wait
153
- - run: dockerize -wait tcp://localhost:5432 -timeout 1m
154
- - test:
155
- name: 'ruby 3.0 rails 6.1 pg'
156
- executor-name: ruby-pg
157
- ruby-version: "3.0"
158
- gemfile: gemfiles/rails_6_1.gemfile
159
- database-steps: *pg_wait
160
- - test:
161
- name: 'ruby 3.0 rails 7.0 pg'
162
- executor-name: ruby-pg
163
- ruby-version: "3.0"
164
- gemfile: gemfiles/rails_7_0.gemfile
165
- database-steps: *pg_wait
166
- - test:
167
- name: 'ruby 2.7 rails 5.2 mysql'
168
- executor-name: ruby-mysql
169
- ruby-version: "2.7"
170
- gemfile: gemfiles/rails_5_2.gemfile
171
- database-steps: &mysql_wait
172
- - run: dockerize -wait tcp://localhost:3306 -timeout 1m
173
- - test:
174
- name: 'ruby 3.0 rails 6.1 mysql'
175
- executor-name: ruby-mysql
176
- ruby-version: "3.0"
177
- gemfile: gemfiles/rails_6_1.gemfile
178
- database-steps: *mysql_wait
179
- - test:
180
- name: 'ruby 3.0 rails 7.0 mysql'
181
- executor-name: ruby-mysql
182
- ruby-version: "3.0"
183
- gemfile: gemfiles/rails_7_0.gemfile
184
- database-steps: *mysql_wait
185
- - publish:
186
- filters:
187
- branches:
188
- only: master
189
- tags:
190
- ignore: /.*/