declare_schema 0.14.2 → 1.0.1
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 +4 -4
- data/.github/CODEOWNERS +1 -0
- data/.github/workflows/declare_schema_build.yml +22 -23
- data/.ruby-version +1 -1
- data/Appraisals +8 -0
- data/CHANGELOG.md +22 -4
- data/Gemfile +3 -2
- data/Gemfile.lock +107 -77
- data/README.md +18 -8
- data/Rakefile +1 -1
- data/gemfiles/rails_5_mysql.gemfile +0 -1
- data/gemfiles/rails_5_sqlite.gemfile +0 -1
- data/gemfiles/rails_6_mysql.gemfile +2 -1
- data/gemfiles/rails_6_sqlite.gemfile +2 -1
- data/lib/declare_schema/command.rb +1 -1
- data/lib/declare_schema/dsl.rb +2 -2
- data/lib/declare_schema/extensions/active_record/fields_declaration.rb +0 -18
- data/lib/declare_schema/field_declaration_dsl.rb +4 -4
- data/lib/declare_schema/model/foreign_key_definition.rb +2 -2
- data/lib/declare_schema/model/index_definition.rb +2 -2
- data/lib/declare_schema/model/table_options_definition.rb +2 -2
- data/lib/declare_schema/model.rb +9 -9
- data/lib/declare_schema/version.rb +1 -1
- data/lib/generators/declare_schema/migration/migrator.rb +6 -6
- data/spec/lib/declare_schema/field_declaration_dsl_spec.rb +0 -24
- data/spec/lib/declare_schema/field_spec_spec.rb +2 -2
- data/spec/lib/declare_schema/interactive_primary_key_spec.rb +0 -67
- data/spec/lib/declare_schema/migration_generator_spec.rb +11 -1176
- data/spec/lib/declare_schema/model/column_spec.rb +1 -28
- data/spec/lib/declare_schema/model/foreign_key_definition_spec.rb +1 -94
- data/spec/lib/declare_schema/model/index_definition_spec.rb +0 -109
- data/spec/lib/declare_schema/model/table_options_definition_spec.rb +2 -65
- data/spec/lib/declare_schema/schema_change/column_add_spec.rb +1 -1
- data/spec/lib/declare_schema/schema_change/column_remove_spec.rb +1 -1
- data/spec/spec_helper.rb +1 -1
- metadata +7 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 165053edc0bb071619bb898609cd3e8d489589509de8a386e3cfe97c63efd372
|
4
|
+
data.tar.gz: '05338b95ee665d86973b61aa36c35189f531660f325c3849890ae38cc356c5b8'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f84b58499f9d1e5b4e5d5c74af3c4e3cedbbc839076f09d128be9f92df7f7a61354d5de0531804ce3d2a3b6ec8c437a35c5d777cb44b5c1c2eb7d8a28f310095
|
7
|
+
data.tar.gz: 0b2403c1d17d52cecc73ab7be84729cba4979c34c9e48d1099f0ffaf4c97721f698dbced48e7f70571c476e3139829183fcac6b2957a5cea103b9cd8f49ba845
|
data/.github/CODEOWNERS
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
* @Invoca/octothorpe
|
@@ -8,18 +8,29 @@ jobs:
|
|
8
8
|
name: DeclareSchema Build
|
9
9
|
runs-on: ubuntu-latest
|
10
10
|
strategy:
|
11
|
+
fail-fast: false
|
11
12
|
matrix:
|
12
|
-
ruby: [
|
13
|
+
ruby: [2.6, 2.7, '3.0', 3.1]
|
13
14
|
gemfile:
|
14
15
|
- gemfiles/rails_5_mysql.gemfile
|
15
16
|
- gemfiles/rails_5_sqlite.gemfile
|
16
17
|
- gemfiles/rails_6_mysql.gemfile
|
17
18
|
- gemfiles/rails_6_sqlite.gemfile
|
19
|
+
include:
|
20
|
+
- gemfile: gemfiles/rails_5_mysql.gemfile
|
21
|
+
ruby: 2.5
|
22
|
+
- gemfile: gemfiles/rails_5_sqlite.gemfile
|
23
|
+
ruby: 2.5
|
18
24
|
exclude:
|
19
|
-
-
|
20
|
-
|
21
|
-
-
|
22
|
-
|
25
|
+
- ruby: '3.0'
|
26
|
+
gemfile: gemfiles/rails_5_mysql.gemfile
|
27
|
+
- ruby: 3.1
|
28
|
+
gemfile: gemfiles/rails_5_mysql.gemfile
|
29
|
+
- ruby: '3.0'
|
30
|
+
gemfile: gemfiles/rails_5_sqlite.gemfile
|
31
|
+
- ruby: 3.1
|
32
|
+
gemfile: gemfiles/rails_5_sqlite.gemfile
|
33
|
+
|
23
34
|
env:
|
24
35
|
BUNDLE_GEMFILE: "${{ matrix.gemfile }}"
|
25
36
|
services:
|
@@ -30,27 +41,15 @@ jobs:
|
|
30
41
|
ports:
|
31
42
|
- 3306:3306
|
32
43
|
steps:
|
33
|
-
-
|
34
|
-
|
35
|
-
uses: actions/checkout@v2
|
36
|
-
- name: Setup Ruby
|
37
|
-
id: setup_ruby
|
38
|
-
uses: ruby/setup-ruby@v1
|
44
|
+
- uses: actions/checkout@v2
|
45
|
+
- uses: ruby/setup-ruby@v1
|
39
46
|
with:
|
40
|
-
bundler: 1.17.3
|
41
47
|
ruby-version: ${{matrix.ruby}}
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
run: |
|
46
|
-
rm -f /opt/hostedtoolcache/Ruby/2.*/x64/lib/ruby/gems/2.*/specifications/default/bundler-2.*.gemspec
|
47
|
-
gem install bundler:1.17.3 --force --default
|
48
|
-
gem install bundler -v 1.17.3
|
49
|
-
- name: Appraisals
|
50
|
-
id: appraisals
|
48
|
+
bundler: 2.2.29
|
49
|
+
bundler-cache: true
|
50
|
+
- name: Setup
|
51
51
|
run: |
|
52
|
-
bundle install --jobs=3 --retry=3 --path=${BUNDLE_PATH:-vendor/bundle} --gemfile=${{ matrix.gemfile }}
|
53
52
|
git config --global user.email "dummy@example.com"
|
54
53
|
git config --global user.name "dummy"
|
55
54
|
MYSQL_PORT=3306 bundle exec rake test:prepare_testapp[force]
|
56
|
-
|
55
|
+
- run: bundle exec rake test:all
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.7.
|
1
|
+
2.7.5
|
data/Appraisals
CHANGED
@@ -3,11 +3,18 @@
|
|
3
3
|
appraise 'rails-5-sqlite' do
|
4
4
|
gem 'rails', '~> 5.2'
|
5
5
|
gem 'sqlite3'
|
6
|
+
|
7
|
+
remove_gem 'mail'
|
8
|
+
remove_gem 'net-smtp'
|
6
9
|
end
|
7
10
|
|
8
11
|
appraise 'rails-5-mysql' do
|
9
12
|
gem 'rails', '~> 5.2'
|
10
13
|
gem 'mysql2'
|
14
|
+
|
15
|
+
remove_gem 'mail'
|
16
|
+
remove_gem 'net-smtp'
|
17
|
+
remove_gem 'sqlite3'
|
11
18
|
end
|
12
19
|
|
13
20
|
appraise 'rails-6-sqlite' do
|
@@ -18,4 +25,5 @@ end
|
|
18
25
|
appraise 'rails-6-mysql' do
|
19
26
|
gem 'rails', '~> 6.1'
|
20
27
|
gem 'mysql2'
|
28
|
+
remove_gem 'sqlite3'
|
21
29
|
end
|
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,21 @@ Inspired by [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
|
4
4
|
|
5
5
|
Note: this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
6
6
|
|
7
|
+
## [1.0.1] - 2022-07-12
|
8
|
+
### Fixed
|
9
|
+
- Remove lingering usage of `fallback_find_primary_key` method that was removed in `0.14.0`
|
10
|
+
|
11
|
+
## [1.0.0] - 2022-03-28
|
12
|
+
### Added
|
13
|
+
- Added support for Ruby 3+
|
14
|
+
|
15
|
+
### Removed
|
16
|
+
- Removed deprecated `fields` block declaration
|
17
|
+
|
18
|
+
## [0.14.3] - 2021-09-01
|
19
|
+
### Fixed
|
20
|
+
- Fixed more Ruby 2.7 warnings about needing `**options` when calling a method that has `**options` in its signature.
|
21
|
+
|
7
22
|
## [0.14.2] - 2021-09-01
|
8
23
|
### Fixed
|
9
24
|
- Fixed another Ruby 2.7 warning about needing `**options` when calling a method that has `**options` in its signature.
|
@@ -14,7 +29,7 @@ Note: this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0
|
|
14
29
|
|
15
30
|
## [0.14.0] - 2021-08-10
|
16
31
|
### Removed
|
17
|
-
- Dropped support for Rails versions less than 5.
|
32
|
+
- Dropped support for Rails versions less than 5.
|
18
33
|
|
19
34
|
## [0.13.2] - 2021-08-04
|
20
35
|
### Fixed
|
@@ -51,7 +66,7 @@ Note: this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0
|
|
51
66
|
The migration will be run if `--migrate` is passed; otherwise, the migrate command will be displayed to be run later.
|
52
67
|
### Added
|
53
68
|
- Added the new configuration option `DeclareSchema.@db_migrate_command =`.
|
54
|
-
### Fixed
|
69
|
+
### Fixed
|
55
70
|
- Fixed bug where foreign key constraint names are not globally unique
|
56
71
|
|
57
72
|
## [0.10.1] - 2021-03-18
|
@@ -105,7 +120,7 @@ i.e. `declare schema { string :title }`. Otherwise, there is no difference betwe
|
|
105
120
|
### Fixed
|
106
121
|
- Fixed a bug in migration generation caused by `DeclareSchema::Migration#create_constraints`
|
107
122
|
calling `DeclareSchema::Model::ForeignKeyDefinition#to_add_statement` with unused parameters.
|
108
|
-
|
123
|
+
|
109
124
|
- Fixed a bug in `DeclareSchema::Migration#remove_foreign_key` where special characters would not be quoted properly.
|
110
125
|
|
111
126
|
## [0.6.2] - 2021-01-06
|
@@ -130,7 +145,7 @@ because all of the existing primary key columns are being removed.
|
|
130
145
|
- FieldSpec#initialize interface now includes `position` keyword argument and `**options` hash.
|
131
146
|
|
132
147
|
### Fixed
|
133
|
-
- Fixed cycle in which FieldSpec#initialize was calling `model.field_specs`
|
148
|
+
- Fixed cycle in which FieldSpec#initialize was calling `model.field_specs`
|
134
149
|
|
135
150
|
### Changed
|
136
151
|
- Changed ci support from Travis to Github Workflow
|
@@ -204,6 +219,9 @@ using the appropriate Rails configuration attributes.
|
|
204
219
|
### Added
|
205
220
|
- Initial version from https://github.com/Invoca/hobo_fields v4.1.0.
|
206
221
|
|
222
|
+
[1.0.1]: https://github.com/Invoca/declare_schema/compare/v1.0.0...v1.0.1
|
223
|
+
[1.0.0]: https://github.com/Invoca/declare_schema/compare/v0.14.3...v1.0.0
|
224
|
+
[0.14.3]: https://github.com/Invoca/declare_schema/compare/v0.14.2...v0.14.3
|
207
225
|
[0.14.2]: https://github.com/Invoca/declare_schema/compare/v0.14.1...v0.14.2
|
208
226
|
[0.14.1]: https://github.com/Invoca/declare_schema/compare/v0.14.0...v0.14.1
|
209
227
|
[0.14.0]: https://github.com/Invoca/declare_schema/compare/v0.13.1...v0.14.0
|
data/Gemfile
CHANGED
@@ -10,11 +10,12 @@ group :testapp do
|
|
10
10
|
end
|
11
11
|
|
12
12
|
gem 'appraisal'
|
13
|
-
gem 'bundler', '< 2'
|
14
13
|
gem "climate_control", '~> 0.2'
|
14
|
+
gem 'mail'
|
15
|
+
gem 'net-smtp'
|
15
16
|
gem 'pry'
|
16
17
|
gem 'pry-byebug'
|
17
|
-
gem 'rails', '~>
|
18
|
+
gem 'rails', '~> 6.0'
|
18
19
|
gem 'responders'
|
19
20
|
gem 'rspec'
|
20
21
|
gem 'rubocop'
|
data/Gemfile.lock
CHANGED
@@ -1,58 +1,75 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
declare_schema (0.
|
4
|
+
declare_schema (1.0.1)
|
5
5
|
rails (>= 5.0)
|
6
6
|
|
7
7
|
GEM
|
8
8
|
remote: https://rubygems.org/
|
9
9
|
specs:
|
10
|
-
actioncable (
|
11
|
-
actionpack (=
|
10
|
+
actioncable (6.1.5)
|
11
|
+
actionpack (= 6.1.5)
|
12
|
+
activesupport (= 6.1.5)
|
12
13
|
nio4r (~> 2.0)
|
13
14
|
websocket-driver (>= 0.6.1)
|
14
|
-
|
15
|
-
actionpack (=
|
16
|
-
|
17
|
-
|
15
|
+
actionmailbox (6.1.5)
|
16
|
+
actionpack (= 6.1.5)
|
17
|
+
activejob (= 6.1.5)
|
18
|
+
activerecord (= 6.1.5)
|
19
|
+
activestorage (= 6.1.5)
|
20
|
+
activesupport (= 6.1.5)
|
21
|
+
mail (>= 2.7.1)
|
22
|
+
actionmailer (6.1.5)
|
23
|
+
actionpack (= 6.1.5)
|
24
|
+
actionview (= 6.1.5)
|
25
|
+
activejob (= 6.1.5)
|
26
|
+
activesupport (= 6.1.5)
|
18
27
|
mail (~> 2.5, >= 2.5.4)
|
19
28
|
rails-dom-testing (~> 2.0)
|
20
|
-
actionpack (
|
21
|
-
actionview (=
|
22
|
-
activesupport (=
|
23
|
-
rack (~> 2.0, >= 2.0.
|
29
|
+
actionpack (6.1.5)
|
30
|
+
actionview (= 6.1.5)
|
31
|
+
activesupport (= 6.1.5)
|
32
|
+
rack (~> 2.0, >= 2.0.9)
|
24
33
|
rack-test (>= 0.6.3)
|
25
34
|
rails-dom-testing (~> 2.0)
|
26
|
-
rails-html-sanitizer (~> 1.0, >= 1.0
|
27
|
-
|
28
|
-
|
35
|
+
rails-html-sanitizer (~> 1.0, >= 1.2.0)
|
36
|
+
actiontext (6.1.5)
|
37
|
+
actionpack (= 6.1.5)
|
38
|
+
activerecord (= 6.1.5)
|
39
|
+
activestorage (= 6.1.5)
|
40
|
+
activesupport (= 6.1.5)
|
41
|
+
nokogiri (>= 1.8.5)
|
42
|
+
actionview (6.1.5)
|
43
|
+
activesupport (= 6.1.5)
|
29
44
|
builder (~> 3.1)
|
30
45
|
erubi (~> 1.4)
|
31
46
|
rails-dom-testing (~> 2.0)
|
32
|
-
rails-html-sanitizer (~> 1.
|
33
|
-
activejob (
|
34
|
-
activesupport (=
|
47
|
+
rails-html-sanitizer (~> 1.1, >= 1.2.0)
|
48
|
+
activejob (6.1.5)
|
49
|
+
activesupport (= 6.1.5)
|
35
50
|
globalid (>= 0.3.6)
|
36
|
-
activemodel (
|
37
|
-
activesupport (=
|
38
|
-
activerecord (
|
39
|
-
activemodel (=
|
40
|
-
activesupport (=
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
activerecord (=
|
45
|
-
|
46
|
-
|
51
|
+
activemodel (6.1.5)
|
52
|
+
activesupport (= 6.1.5)
|
53
|
+
activerecord (6.1.5)
|
54
|
+
activemodel (= 6.1.5)
|
55
|
+
activesupport (= 6.1.5)
|
56
|
+
activestorage (6.1.5)
|
57
|
+
actionpack (= 6.1.5)
|
58
|
+
activejob (= 6.1.5)
|
59
|
+
activerecord (= 6.1.5)
|
60
|
+
activesupport (= 6.1.5)
|
61
|
+
marcel (~> 1.0)
|
62
|
+
mini_mime (>= 1.1.0)
|
63
|
+
activesupport (6.1.5)
|
47
64
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
48
|
-
i18n (>=
|
49
|
-
minitest (
|
50
|
-
tzinfo (~>
|
51
|
-
|
65
|
+
i18n (>= 1.6, < 2)
|
66
|
+
minitest (>= 5.1)
|
67
|
+
tzinfo (~> 2.0)
|
68
|
+
zeitwerk (~> 2.3)
|
69
|
+
appraisal (2.4.1)
|
52
70
|
bundler
|
53
71
|
rake
|
54
72
|
thor (>= 0.14.0)
|
55
|
-
arel (9.0.0)
|
56
73
|
ast (2.4.1)
|
57
74
|
bootsnap (1.7.2)
|
58
75
|
msgpack (~> 1.0)
|
@@ -60,32 +77,41 @@ GEM
|
|
60
77
|
byebug (11.1.3)
|
61
78
|
climate_control (0.2.0)
|
62
79
|
coderay (1.1.3)
|
63
|
-
concurrent-ruby (1.1.
|
80
|
+
concurrent-ruby (1.1.10)
|
64
81
|
crass (1.0.6)
|
65
82
|
diff-lcs (1.4.4)
|
83
|
+
digest (3.1.0)
|
66
84
|
erubi (1.10.0)
|
67
85
|
ffi (1.15.1)
|
68
|
-
globalid (0.
|
69
|
-
activesupport (>=
|
70
|
-
i18n (1.
|
86
|
+
globalid (1.0.0)
|
87
|
+
activesupport (>= 5.0)
|
88
|
+
i18n (1.10.0)
|
71
89
|
concurrent-ruby (~> 1.0)
|
90
|
+
io-wait (0.2.1)
|
72
91
|
listen (3.5.1)
|
73
92
|
rb-fsevent (~> 0.10, >= 0.10.3)
|
74
93
|
rb-inotify (~> 0.9, >= 0.9.10)
|
75
|
-
loofah (2.
|
94
|
+
loofah (2.15.0)
|
76
95
|
crass (~> 1.0.2)
|
77
96
|
nokogiri (>= 1.5.9)
|
78
97
|
mail (2.7.1)
|
79
98
|
mini_mime (>= 0.1.1)
|
80
|
-
marcel (1.0.
|
99
|
+
marcel (1.0.2)
|
81
100
|
method_source (1.0.0)
|
82
|
-
mini_mime (1.1.
|
83
|
-
mini_portile2 (2.
|
84
|
-
minitest (5.
|
101
|
+
mini_mime (1.1.2)
|
102
|
+
mini_portile2 (2.8.0)
|
103
|
+
minitest (5.15.0)
|
85
104
|
msgpack (1.4.2)
|
86
|
-
|
87
|
-
|
88
|
-
|
105
|
+
net-protocol (0.1.2)
|
106
|
+
io-wait
|
107
|
+
timeout
|
108
|
+
net-smtp (0.3.1)
|
109
|
+
digest
|
110
|
+
net-protocol
|
111
|
+
timeout
|
112
|
+
nio4r (2.5.8)
|
113
|
+
nokogiri (1.13.3)
|
114
|
+
mini_portile2 (~> 2.8.0)
|
89
115
|
racc (~> 1.4)
|
90
116
|
parallel (1.19.2)
|
91
117
|
parser (2.7.1.4)
|
@@ -96,36 +122,38 @@ GEM
|
|
96
122
|
pry-byebug (3.9.0)
|
97
123
|
byebug (~> 11.0)
|
98
124
|
pry (~> 0.13.0)
|
99
|
-
racc (1.
|
125
|
+
racc (1.6.0)
|
100
126
|
rack (2.2.3)
|
101
127
|
rack-test (1.1.0)
|
102
128
|
rack (>= 1.0, < 3)
|
103
|
-
rails (
|
104
|
-
actioncable (=
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
129
|
+
rails (6.1.5)
|
130
|
+
actioncable (= 6.1.5)
|
131
|
+
actionmailbox (= 6.1.5)
|
132
|
+
actionmailer (= 6.1.5)
|
133
|
+
actionpack (= 6.1.5)
|
134
|
+
actiontext (= 6.1.5)
|
135
|
+
actionview (= 6.1.5)
|
136
|
+
activejob (= 6.1.5)
|
137
|
+
activemodel (= 6.1.5)
|
138
|
+
activerecord (= 6.1.5)
|
139
|
+
activestorage (= 6.1.5)
|
140
|
+
activesupport (= 6.1.5)
|
141
|
+
bundler (>= 1.15.0)
|
142
|
+
railties (= 6.1.5)
|
115
143
|
sprockets-rails (>= 2.0.0)
|
116
144
|
rails-dom-testing (2.0.3)
|
117
145
|
activesupport (>= 4.2.0)
|
118
146
|
nokogiri (>= 1.6)
|
119
|
-
rails-html-sanitizer (1.
|
147
|
+
rails-html-sanitizer (1.4.2)
|
120
148
|
loofah (~> 2.3)
|
121
|
-
railties (
|
122
|
-
actionpack (=
|
123
|
-
activesupport (=
|
149
|
+
railties (6.1.5)
|
150
|
+
actionpack (= 6.1.5)
|
151
|
+
activesupport (= 6.1.5)
|
124
152
|
method_source
|
125
|
-
rake (>=
|
126
|
-
thor (
|
153
|
+
rake (>= 12.2)
|
154
|
+
thor (~> 1.0)
|
127
155
|
rainbow (3.0.0)
|
128
|
-
rake (13.0.
|
156
|
+
rake (13.0.6)
|
129
157
|
rb-fsevent (0.11.0)
|
130
158
|
rb-inotify (0.10.1)
|
131
159
|
ffi (~> 1.0)
|
@@ -159,23 +187,24 @@ GEM
|
|
159
187
|
rubocop-ast (0.4.2)
|
160
188
|
parser (>= 2.7.1.4)
|
161
189
|
ruby-progressbar (1.10.1)
|
162
|
-
sprockets (4.0.
|
190
|
+
sprockets (4.0.3)
|
163
191
|
concurrent-ruby (~> 1.0)
|
164
192
|
rack (> 1, < 3)
|
165
|
-
sprockets-rails (3.
|
166
|
-
actionpack (>=
|
167
|
-
activesupport (>=
|
193
|
+
sprockets-rails (3.4.2)
|
194
|
+
actionpack (>= 5.2)
|
195
|
+
activesupport (>= 5.2)
|
168
196
|
sprockets (>= 3.0.0)
|
169
197
|
sqlite3 (1.4.2)
|
170
|
-
thor (1.1
|
171
|
-
|
172
|
-
tzinfo (
|
173
|
-
|
198
|
+
thor (1.2.1)
|
199
|
+
timeout (0.2.0)
|
200
|
+
tzinfo (2.0.4)
|
201
|
+
concurrent-ruby (~> 1.0)
|
174
202
|
unicode-display_width (1.7.0)
|
175
|
-
websocket-driver (0.7.
|
203
|
+
websocket-driver (0.7.5)
|
176
204
|
websocket-extensions (>= 0.1.0)
|
177
205
|
websocket-extensions (0.1.5)
|
178
206
|
yard (0.9.26)
|
207
|
+
zeitwerk (2.5.4)
|
179
208
|
|
180
209
|
PLATFORMS
|
181
210
|
ruby
|
@@ -183,13 +212,14 @@ PLATFORMS
|
|
183
212
|
DEPENDENCIES
|
184
213
|
appraisal
|
185
214
|
bootsnap (>= 1.1.0)
|
186
|
-
bundler (< 2)
|
187
215
|
climate_control (~> 0.2)
|
188
216
|
declare_schema!
|
189
217
|
listen
|
218
|
+
mail
|
219
|
+
net-smtp
|
190
220
|
pry
|
191
221
|
pry-byebug
|
192
|
-
rails (~>
|
222
|
+
rails (~> 6.0)
|
193
223
|
responders
|
194
224
|
rspec
|
195
225
|
rubocop
|
@@ -197,4 +227,4 @@ DEPENDENCIES
|
|
197
227
|
yard
|
198
228
|
|
199
229
|
BUNDLED WITH
|
200
|
-
|
230
|
+
2.2.29
|
data/README.md
CHANGED
@@ -8,10 +8,10 @@ Make a model and declare your schema within a `declare_schema do ... end` block:
|
|
8
8
|
```ruby
|
9
9
|
class Company < ActiveRecord::Base
|
10
10
|
declare_schema do
|
11
|
-
company_name
|
12
|
-
ticker_symbol
|
13
|
-
|
14
|
-
comments
|
11
|
+
string :company_name, limit: 100
|
12
|
+
string :ticker_symbol, limit: 4, null: true, index: true, unique: true
|
13
|
+
integer :employee_count
|
14
|
+
text :comments
|
15
15
|
|
16
16
|
timestamps
|
17
17
|
end
|
@@ -50,6 +50,16 @@ Migration filename: [<enter>=declare_schema_migration_1|<custom_name>]: add_comp
|
|
50
50
|
```
|
51
51
|
Note that the migration generator is interactive -- it can't tell the difference between renaming something vs. adding one thing and removing another, so sometimes it will ask you to clarify.
|
52
52
|
|
53
|
+
## declare_schema macro options
|
54
|
+
|
55
|
+
Any options provided to the `declare_schema` macro will be passed on to `create_table`. For example, to set the `id` column of the table explicitly to `:bigint`:
|
56
|
+
```
|
57
|
+
declare_schema id: :bigint do
|
58
|
+
string :company_name, limit: 100
|
59
|
+
...
|
60
|
+
end
|
61
|
+
```
|
62
|
+
|
53
63
|
## Migrator Configuration
|
54
64
|
|
55
65
|
The following configuration options are available for the gem and can be used
|
@@ -224,8 +234,8 @@ like the following:
|
|
224
234
|
|
225
235
|
class Comment < ActiveRecord::Base
|
226
236
|
declare_schema charset: "utf8mb4", collation: "utf8mb4_bin" do
|
227
|
-
|
228
|
-
content
|
237
|
+
string :subject, limit: 255
|
238
|
+
text :content, limit: 0xffff_ffff
|
229
239
|
end
|
230
240
|
end
|
231
241
|
```
|
@@ -244,8 +254,8 @@ look like the following:
|
|
244
254
|
|
245
255
|
class Comment < ActiveRecord::Base
|
246
256
|
declare_schema do
|
247
|
-
|
248
|
-
context
|
257
|
+
string :subject, limit: 255
|
258
|
+
text :context, limit: 0xffff_ffff, charset: "utf8mb4", collation: "utf8mb4_bin"
|
249
259
|
end
|
250
260
|
end
|
251
261
|
```
|
data/Rakefile
CHANGED
@@ -50,7 +50,7 @@ namespace "test" do
|
|
50
50
|
echo \"gem 'irb', :group => :development\") >> Gemfile"
|
51
51
|
sh "echo '' > app/models/.gitignore" # because git reset --hard would rm the dir
|
52
52
|
rm ".gitignore" # we need to reset everything in a testapp
|
53
|
-
sh "git init && git add . && git commit -
|
53
|
+
sh "git init && git add . && git commit -nm \"initial commit\""
|
54
54
|
sh "rake db:create"
|
55
55
|
puts "The testapp has been created in '#{TESTAPP_PATH}'"
|
56
56
|
else
|
data/lib/declare_schema/dsl.rb
CHANGED
@@ -12,7 +12,7 @@ module DeclareSchema
|
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
|
-
def initialize(model, options
|
15
|
+
def initialize(model, **options)
|
16
16
|
@model = model
|
17
17
|
@options = options
|
18
18
|
end
|
@@ -29,7 +29,7 @@ module DeclareSchema
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def field(name, type, *args, **options)
|
32
|
-
@model.declare_field(name, type, *
|
32
|
+
@model.declare_field(name, type, *args, **@options.merge(options))
|
33
33
|
end
|
34
34
|
|
35
35
|
# TODO: make [:required] just another option. Either 'required: true] or 'optional: false'?
|
@@ -9,24 +9,6 @@ module DeclareSchema
|
|
9
9
|
module Macros
|
10
10
|
attr_reader :_table_options
|
11
11
|
|
12
|
-
def fields(table_options = {}, &block)
|
13
|
-
# Any model that calls 'fields' gets DeclareSchema::Model behavior
|
14
|
-
DeclareSchema::Model.mix_in(self)
|
15
|
-
|
16
|
-
@include_in_migration = true
|
17
|
-
@_table_options = table_options
|
18
|
-
|
19
|
-
if block
|
20
|
-
dsl = DeclareSchema::FieldDeclarationDsl.new(self)
|
21
|
-
if block.arity == 1
|
22
|
-
yield dsl
|
23
|
-
else
|
24
|
-
dsl.instance_eval(&block)
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
deprecate :fields, deprecator: ActiveSupport::Deprecation.new('1.0', 'DeclareSchema')
|
29
|
-
|
30
12
|
def declare_schema(default_schema: true, **table_options, &block)
|
31
13
|
# Any model that calls 'fields' gets DeclareSchema::Model behavior
|
32
14
|
DeclareSchema::Model.mix_in(self)
|
@@ -12,7 +12,7 @@ module DeclareSchema
|
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
|
-
def initialize(model, options
|
15
|
+
def initialize(model, **options)
|
16
16
|
@model = model
|
17
17
|
@options = options
|
18
18
|
end
|
@@ -29,11 +29,11 @@ module DeclareSchema
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def field(name, type, *args, **options)
|
32
|
-
@model.declare_field(name, type, *
|
32
|
+
@model.declare_field(name, type, *args, **@options.merge(options))
|
33
33
|
end
|
34
34
|
|
35
|
-
def method_missing(name, *args)
|
36
|
-
field(name, *args)
|
35
|
+
def method_missing(name, *args, **options)
|
36
|
+
field(name, *args, **options)
|
37
37
|
end
|
38
38
|
end
|
39
39
|
end
|