declare_schema 0.14.1 → 1.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.
- checksums.yaml +4 -4
- 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 +3 -3
- 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 +1 -1
- 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 +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 65a5d6f6ca6a81d44fe5ff1d1fa0cc73249e2e20f02017e53c9dd3c6a03156b3
|
4
|
+
data.tar.gz: 167a53b05577190b8bb68b6871c41199ef4a2697fa2bc165fb4ed65355fecfeb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 11722905e9a2761a84124aadf10f20221eb8c5bab9aec35e65a2db216b14607f958db2fe2076920d4bcd6e537ca8dabad5c60ef514a5ff843e6675d4e042ac84
|
7
|
+
data.tar.gz: 103f1a41b5176b575b60141ed207c8e57d0c4ed8bc55a0235c318f928ff0a2dbf20bc2b889d8a6260c43fd0bcb1549a43581e594f1b2ebb70dc8312f68ab6476
|
@@ -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,13 +4,28 @@ 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.0] - 2022-03-28
|
8
|
+
### Added
|
9
|
+
- Added support for Ruby 3+
|
10
|
+
|
11
|
+
### Removed
|
12
|
+
- Removed deprecated `fields` block declaration
|
13
|
+
|
14
|
+
## [0.14.3] - 2021-09-01
|
15
|
+
### Fixed
|
16
|
+
- Fixed more Ruby 2.7 warnings about needing `**options` when calling a method that has `**options` in its signature.
|
17
|
+
|
18
|
+
## [0.14.2] - 2021-09-01
|
19
|
+
### Fixed
|
20
|
+
- Fixed another Ruby 2.7 warning about needing `**options` when calling a method that has `**options` in its signature.
|
21
|
+
|
7
22
|
## [0.14.1] - 2021-09-01
|
8
23
|
### Fixed
|
9
24
|
- Fixed Ruby 2.7 warning about needing `**options` when calling a method that has `**options` in its signature.
|
10
25
|
|
11
26
|
## [0.14.0] - 2021-08-10
|
12
27
|
### Removed
|
13
|
-
- Dropped support for Rails versions less than 5.
|
28
|
+
- Dropped support for Rails versions less than 5.
|
14
29
|
|
15
30
|
## [0.13.2] - 2021-08-04
|
16
31
|
### Fixed
|
@@ -47,7 +62,7 @@ Note: this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0
|
|
47
62
|
The migration will be run if `--migrate` is passed; otherwise, the migrate command will be displayed to be run later.
|
48
63
|
### Added
|
49
64
|
- Added the new configuration option `DeclareSchema.@db_migrate_command =`.
|
50
|
-
### Fixed
|
65
|
+
### Fixed
|
51
66
|
- Fixed bug where foreign key constraint names are not globally unique
|
52
67
|
|
53
68
|
## [0.10.1] - 2021-03-18
|
@@ -101,7 +116,7 @@ i.e. `declare schema { string :title }`. Otherwise, there is no difference betwe
|
|
101
116
|
### Fixed
|
102
117
|
- Fixed a bug in migration generation caused by `DeclareSchema::Migration#create_constraints`
|
103
118
|
calling `DeclareSchema::Model::ForeignKeyDefinition#to_add_statement` with unused parameters.
|
104
|
-
|
119
|
+
|
105
120
|
- Fixed a bug in `DeclareSchema::Migration#remove_foreign_key` where special characters would not be quoted properly.
|
106
121
|
|
107
122
|
## [0.6.2] - 2021-01-06
|
@@ -126,7 +141,7 @@ because all of the existing primary key columns are being removed.
|
|
126
141
|
- FieldSpec#initialize interface now includes `position` keyword argument and `**options` hash.
|
127
142
|
|
128
143
|
### Fixed
|
129
|
-
- Fixed cycle in which FieldSpec#initialize was calling `model.field_specs`
|
144
|
+
- Fixed cycle in which FieldSpec#initialize was calling `model.field_specs`
|
130
145
|
|
131
146
|
### Changed
|
132
147
|
- Changed ci support from Travis to Github Workflow
|
@@ -200,6 +215,9 @@ using the appropriate Rails configuration attributes.
|
|
200
215
|
### Added
|
201
216
|
- Initial version from https://github.com/Invoca/hobo_fields v4.1.0.
|
202
217
|
|
218
|
+
[1.0.0]: https://github.com/Invoca/declare_schema/compare/v0.14.3...v1.0.0
|
219
|
+
[0.14.3]: https://github.com/Invoca/declare_schema/compare/v0.14.2...v0.14.3
|
220
|
+
[0.14.2]: https://github.com/Invoca/declare_schema/compare/v0.14.1...v0.14.2
|
203
221
|
[0.14.1]: https://github.com/Invoca/declare_schema/compare/v0.14.0...v0.14.1
|
204
222
|
[0.14.0]: https://github.com/Invoca/declare_schema/compare/v0.13.1...v0.14.0
|
205
223
|
[0.13.1]: https://github.com/Invoca/declare_schema/compare/v0.13.0...v0.13.1
|
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.0)
|
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,14 +29,14 @@ 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'?
|
36
36
|
def method_missing(*args, **options)
|
37
37
|
args.count(&:itself) >= 2 or raise ::ArgumentError, "fields in declare_schema block must be declared as: type name, [:required], options (got #{args.inspect}, #{options.inspect})"
|
38
38
|
type, name, *required = args
|
39
|
-
field(name, type, *required, options)
|
39
|
+
field(name, type, *required, **options)
|
40
40
|
end
|
41
41
|
end
|
42
42
|
end
|
@@ -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
|