ridgepole 0.9.0.beta → 0.9.3
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/test.yml +24 -19
- data/.rubocop.yml +5 -4
- data/.simplecov +6 -0
- data/README.md +15 -30
- data/bin/ridgepole +0 -2
- data/lib/ridgepole/diff.rb +14 -14
- data/lib/ridgepole/dsl_parser/table_definition.rb +8 -1
- data/lib/ridgepole/version.rb +1 -1
- data/ridgepole.gemspec +3 -2
- data/spec/erb_helper.rb +1 -5
- data/spec/mysql/bigint_pk/int_pk_spec.rb +1 -1
- data/spec/mysql/collation/collation_spec.rb +14 -14
- data/spec/mysql/comment/comment_spec.rb +9 -9
- data/spec/mysql/diff/diff2_spec.rb +5 -5
- data/spec/mysql/diff/diff_spec.rb +3 -3
- data/spec/mysql/dump/dump_class_method_spec.rb +12 -12
- data/spec/mysql/dump/dump_some_tables_spec.rb +4 -4
- data/spec/mysql/dump/dump_spec.rb +12 -12
- data/spec/mysql/dump/dump_unknown_column_type_spec.rb +2 -2
- data/spec/mysql/dump/dump_without_table_options_spec.rb +1 -1
- data/spec/mysql/fk/migrate_change_fk2_spec.rb +2 -2
- data/spec/mysql/fk/migrate_change_fk_spec.rb +88 -20
- data/spec/mysql/fk/migrate_create_fk_spec.rb +73 -18
- data/spec/mysql/fk/migrate_drop_fk_spec.rb +81 -26
- data/spec/mysql/fk/migrate_fk_with_column_spec.rb +16 -16
- data/spec/mysql/fk/migrate_ignore_fk_spec.rb +6 -6
- data/spec/mysql/migrate/migrate_add_column_order_spec.rb +2 -2
- data/spec/mysql/migrate/migrate_add_column_spec.rb +18 -18
- data/spec/mysql/migrate/migrate_add_column_with_alter_extra_spec.rb +21 -21
- data/spec/mysql/migrate/migrate_add_column_with_script_spec.rb +18 -18
- data/spec/mysql/migrate/migrate_change_column2_spec.rb +5 -5
- data/spec/mysql/migrate/migrate_change_column3_spec.rb +10 -10
- data/spec/mysql/migrate/migrate_change_column5_spec.rb +3 -3
- data/spec/mysql/migrate/migrate_change_column6_spec.rb +7 -7
- data/spec/mysql/migrate/migrate_change_column7_spec.rb +11 -2
- data/spec/mysql/migrate/migrate_change_column_default_spec.rb +2 -14
- data/spec/mysql/migrate/migrate_change_column_spec.rb +21 -21
- data/spec/mysql/migrate/migrate_change_index2_spec.rb +5 -5
- data/spec/mysql/migrate/migrate_change_index3_spec.rb +7 -7
- data/spec/mysql/migrate/migrate_change_index4_spec.rb +6 -6
- data/spec/mysql/migrate/migrate_change_index5_spec.rb +4 -4
- data/spec/mysql/migrate/migrate_change_index6_spec.rb +27 -27
- data/spec/mysql/migrate/migrate_change_index7_spec.rb +4 -4
- data/spec/mysql/migrate/migrate_change_index8_spec.rb +4 -4
- data/spec/mysql/migrate/migrate_change_index_spec.rb +27 -27
- data/spec/mysql/migrate/migrate_check_relation_column_type_spec.rb +1 -1
- data/spec/mysql/migrate/migrate_create_index2_spec.rb +24 -24
- data/spec/mysql/migrate/migrate_create_index_spec.rb +78 -18
- data/spec/mysql/migrate/migrate_create_table_spec.rb +16 -16
- data/spec/mysql/migrate/migrate_create_table_with_ignore_spec.rb +4 -4
- data/spec/mysql/migrate/migrate_create_table_with_index_spec.rb +4 -4
- data/spec/mysql/migrate/migrate_create_table_with_script_spec.rb +16 -16
- data/spec/mysql/migrate/migrate_drop_column_and_index2_spec.rb +18 -18
- data/spec/mysql/migrate/migrate_drop_column_and_index_spec.rb +16 -16
- data/spec/mysql/migrate/migrate_drop_column_and_unique_index_spec.rb +1 -1
- data/spec/mysql/migrate/migrate_drop_column_spec.rb +18 -18
- data/spec/mysql/migrate/migrate_drop_index_spec.rb +15 -15
- data/spec/mysql/migrate/migrate_drop_table_spec.rb +16 -16
- data/spec/mysql/migrate/migrate_empty_spec.rb +9 -9
- data/spec/mysql/migrate/migrate_execute_spec.rb +32 -32
- data/spec/mysql/migrate/migrate_ignore_column_spec.rb +4 -4
- data/spec/mysql/migrate/migrate_ignore_index_spec.rb +5 -5
- data/spec/mysql/migrate/migrate_log_file_spec.rb +16 -16
- data/spec/mysql/migrate/migrate_merge_mode_spec.rb +18 -18
- data/spec/mysql/migrate/migrate_noop_spec.rb +12 -12
- data/spec/mysql/migrate/migrate_primary_key_spec.rb +1 -1
- data/spec/mysql/migrate/migrate_rename_column_spec.rb +18 -18
- data/spec/mysql/migrate/migrate_rename_table_spec.rb +22 -22
- data/spec/mysql/migrate/migrate_same_spec.rb +12 -12
- data/spec/mysql/migrate/migrate_skip_column_comment_change_spec.rb +2 -2
- data/spec/mysql/migrate/migrate_skip_drop_table_spec.rb +18 -18
- data/spec/mysql/migrate/migrate_skip_rename_column_spec.rb +18 -18
- data/spec/mysql/migrate/migrate_skip_rename_table_spec.rb +18 -18
- data/spec/mysql/migrate/migrate_with_pre_post_query_spec.rb +18 -18
- data/spec/mysql/text_blob_types/text_blob_types_spec.rb +1 -1
- data/spec/mysql/~default_name_fk/migrate_change_fk_spec.rb +6 -6
- data/spec/mysql/~default_name_fk/migrate_create_fk_spec.rb +9 -9
- data/spec/mysql/~default_name_fk/migrate_drop_fk_spec.rb +8 -8
- data/spec/mysql/~dump_auto_increment/migrate_create_table_with_index_spec.rb +5 -5
- data/spec/mysql57/json/add_json_column_spec.rb +2 -2
- data/spec/mysql57/json/change_json_column_spec.rb +6 -6
- data/spec/mysql57/json/drop_json_column_spec.rb +2 -2
- data/spec/mysql57/virtual/add_virtual_column_spec.rb +1 -1
- data/spec/mysql57/virtual/change_virtual_column_spec.rb +1 -1
- data/spec/mysql57/virtual/drop_virtual_column_spec.rb +1 -1
- data/spec/postgresql/dump/dump_spec.rb +12 -12
- data/spec/postgresql/fk/migrate_change_fk_spec.rb +6 -6
- data/spec/postgresql/fk/migrate_create_fk_spec.rb +5 -5
- data/spec/postgresql/fk/migrate_drop_fk_spec.rb +8 -8
- data/spec/postgresql/migrate/migrate_add_column_spec.rb +16 -16
- data/spec/postgresql/migrate/migrate_add_expression_index_spec.rb +1 -1
- data/spec/postgresql/migrate/migrate_change_column_spec.rb +16 -16
- data/spec/postgresql/migrate/migrate_change_index_spec.rb +18 -18
- data/spec/postgresql/migrate/migrate_check_relation_column_type_spec.rb +1 -1
- data/spec/postgresql/migrate/migrate_create_table_spec.rb +14 -14
- data/spec/postgresql/migrate/migrate_drop_column_spec.rb +18 -18
- data/spec/postgresql/migrate/migrate_drop_column_with_index_spec.rb +17 -17
- data/spec/postgresql/migrate/migrate_drop_expression_index_spec.rb +3 -3
- data/spec/postgresql/migrate/migrate_drop_index_spec.rb +15 -15
- data/spec/postgresql/migrate/migrate_drop_table_spec.rb +16 -16
- data/spec/postgresql/migrate/migrate_primary_key2_spec.rb +1 -1
- data/spec/postgresql/migrate/migrate_primary_key_spec.rb +1 -1
- data/spec/postgresql/migrate/migrate_references_spec.rb +6 -6
- data/spec/postgresql/migrate/migrate_rename_column_spec.rb +18 -18
- data/spec/postgresql/migrate/migrate_rename_table_spec.rb +20 -20
- data/spec/postgresql/migrate/migrate_same_spec.rb +12 -12
- data/spec/postgresql/~default_name_fk/migrate_change_fk_spec.rb +3 -3
- data/spec/postgresql/~default_name_fk/migrate_create_fk_spec.rb +4 -4
- data/spec/postgresql/~default_name_fk/migrate_drop_fk_spec.rb +4 -4
- data/spec/processing_for_ci.rb +13 -0
- data/spec/spec_const.rb +1 -1
- data/spec/spec_helper.rb +2 -1
- metadata +39 -37
- data/omnibus-ridgepole/.gitignore +0 -10
- data/omnibus-ridgepole/Dockerfile.centos +0 -25
- data/omnibus-ridgepole/Dockerfile.ubuntu +0 -21
- data/omnibus-ridgepole/Gemfile +0 -24
- data/omnibus-ridgepole/README.md +0 -15
- data/omnibus-ridgepole/Rakefile +0 -38
- data/omnibus-ridgepole/config/projects/ridgepole.rb +0 -27
- data/omnibus-ridgepole/config/software/ridgepole.rb +0 -13
- data/omnibus-ridgepole/omnibus.rb +0 -54
- data/omnibus-ridgepole/package-scripts/ridgepole/postinst +0 -1
- data/omnibus-ridgepole/package-scripts/ridgepole/postrm +0 -1
- data/spec/mysql/bigint_pk/bigint_pk_spec.rb +0 -47
- data/spec/processing_for_travis.rb +0 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3453e48af2d76cbb35301fcc70d7177f0016c47f4279593b6adbf269190d0b01
|
4
|
+
data.tar.gz: e4e61ed5bbbfae92a0660244a4e021fc387d945ccd5e85971d20c1ff184dc79f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aa213105207d7a0a73adae7254885966fb06b0e0cc22cec7e2e44f7bd2082f7a6b10b2e7d8b5c5822c57b333447cd8ebb591db691b95a541f1493adcf3d46153
|
7
|
+
data.tar.gz: 3e1a1c8bbcde1f7d313df1a151d5ca3096e1bba911a099cc4e8969b877941dd85061d2c3d18c17afff976c5119d3cc00f9c9966f9037af5365d8d5b0c87243c0
|
data/.github/workflows/test.yml
CHANGED
@@ -29,37 +29,42 @@ jobs:
|
|
29
29
|
gemfile: gemfiles/activerecord_6.0.gemfile
|
30
30
|
- ruby: 2.4
|
31
31
|
gemfile: gemfiles/activerecord_6.1.gemfile
|
32
|
-
|
32
|
+
env:
|
33
|
+
BUNDLE_GEMFILE: ${{ matrix.gemfile }}
|
33
34
|
steps:
|
34
35
|
- uses: actions/checkout@v2
|
35
|
-
- uses:
|
36
|
+
- uses: ruby/setup-ruby@v1
|
36
37
|
with:
|
37
38
|
ruby-version: ${{ matrix.ruby }}
|
38
|
-
|
39
|
-
with:
|
40
|
-
path: gemfiles/vendor/bundle
|
41
|
-
key: ${{ runner.os }}-gems-${{ matrix.ruby }}-${{ matrix.gemfile }}-${{ hashFiles('ridgepole.gemspec', '**/Gemfile', '${{ matrix.gemfile }}') }}
|
42
|
-
restore-keys: |
|
43
|
-
${{ runner.os }}-gems-${{ matrix.ruby }}-${{ matrix.gemfile }}-
|
44
|
-
|
39
|
+
bundler-cache: true
|
45
40
|
- name: Setup dependencies
|
46
41
|
run: |
|
47
42
|
for i in {1..60}; do docker-compose up -d && break; sleep 1; done
|
48
|
-
|
49
|
-
gem install bundler
|
50
|
-
bundle config path vendor/bundle
|
51
|
-
bundle install --jobs 4 --retry 3
|
52
|
-
|
53
43
|
# Wait until database servers start
|
54
|
-
function mysql_ping { mysqladmin -u root -h 127.0.0.1 -P 13316 -
|
55
|
-
function mysql57_ping { mysqladmin -u root -h 127.0.0.1 -P 13317 -
|
44
|
+
function mysql_ping { mysqladmin -u root -h 127.0.0.1 -P 13316 ping --ssl-mode=DISABLED; }
|
45
|
+
function mysql57_ping { mysqladmin -u root -h 127.0.0.1 -P 13317 ping --ssl-mode=DISABLED; }
|
56
46
|
function pg_ping { PGPASSWORD=password pg_isready -U postgres -h 127.0.0.1 -p 15442; }
|
57
47
|
for i in {1..60}; do mysql_ping && break; sleep 1; done
|
58
48
|
for i in {1..60}; do mysql57_ping && break; sleep 1; done
|
59
49
|
for i in {1..60}; do pg_ping && break; sleep 1; done
|
60
50
|
env:
|
61
|
-
|
62
|
-
|
63
|
-
|
51
|
+
MYSQL_PWD: password
|
52
|
+
- name: Run tests
|
53
|
+
run: ${{ matrix.env }} bundle exec rake
|
64
54
|
env:
|
65
55
|
BUNDLE_GEMFILE: ${{ matrix.gemfile }}
|
56
|
+
- name: Coveralls Parallel
|
57
|
+
uses: coverallsapp/github-action@v1.1.2
|
58
|
+
with:
|
59
|
+
github-token: ${{ secrets.GITHUB_TOKEN }}
|
60
|
+
flag-name: run-${{ matrix.ruby }}-${{ matrix.env }}-${{ matrix.gemfile }}
|
61
|
+
parallel: true
|
62
|
+
finish:
|
63
|
+
needs: build
|
64
|
+
runs-on: ubuntu-latest
|
65
|
+
steps:
|
66
|
+
- name: Coveralls Finished
|
67
|
+
uses: coverallsapp/github-action@v1.1.2
|
68
|
+
with:
|
69
|
+
github-token: ${{ secrets.GITHUB_TOKEN }}
|
70
|
+
parallel-finished: true
|
data/.rubocop.yml
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
AllCops:
|
2
2
|
Exclude:
|
3
|
-
-
|
4
|
-
-
|
3
|
+
- "gemfiles/**/*"
|
4
|
+
- "omnibus-ridgepole/**/*"
|
5
|
+
- "vendor/bundle/**/*"
|
5
6
|
TargetRubyVersion: 2.4
|
6
7
|
NewCops: enable
|
7
8
|
Bundler/OrderedGems:
|
8
9
|
Include:
|
9
|
-
-
|
10
|
+
- "Appraisals"
|
10
11
|
Layout/HeredocIndentation:
|
11
12
|
Enabled: false
|
12
13
|
Metrics/AbcSize:
|
@@ -33,7 +34,7 @@ Style/GuardClause:
|
|
33
34
|
Enabled: false
|
34
35
|
Style/MixinUsage:
|
35
36
|
Exclude:
|
36
|
-
-
|
37
|
+
- "spec/**/*"
|
37
38
|
Style/TrailingCommaInHashLiteral:
|
38
39
|
EnforcedStyleForMultiline: consistent_comma
|
39
40
|
Layout/ClosingHeredocIndentation:
|
data/.simplecov
ADDED
data/README.md
CHANGED
@@ -7,7 +7,7 @@ It defines DB schema using [Rails DSL](http://guides.rubyonrails.org/migrations.
|
|
7
7
|
|
8
8
|
[](http://badge.fury.io/rb/ridgepole)
|
9
9
|
[](https://github.com/winebarrel/ridgepole/actions)
|
10
|
-
[](https://coveralls.io/github/winebarrel/ridgepole?branch=0.
|
10
|
+
[](https://coveralls.io/github/winebarrel/ridgepole?branch=0.9)
|
11
11
|
|
12
12
|
<details><summary>ChangeLog</summary>
|
13
13
|
|
@@ -127,12 +127,20 @@ It defines DB schema using [Rails DSL](http://guides.rubyonrails.org/migrations.
|
|
127
127
|
* Support t.reference() foreign_key option ([pull#316](https://github.com/winebarrel/ridgepole/pull/316))
|
128
128
|
* `>= 0.8.12`
|
129
129
|
* Pluralize column specified by `references` ([pull#317](https://github.com/winebarrel/ridgepole/pull/317))
|
130
|
+
* `>= 0.8.13`
|
131
|
+
* Support `serial` and `bigserial` column types ([pull#321](https://github.com/winebarrel/ridgepole/pull/321))
|
130
132
|
* `>= 0.9.0`
|
131
|
-
* Remove `--mysql-alter
|
133
|
+
* Remove `--mysql-use-alter` option ([pull#330](https://github.com/winebarrel/ridgepole/pull/330))
|
132
134
|
* Add `--table-hash-options` option ([pull#331](https://github.com/winebarrel/ridgepole/pull/331))
|
133
135
|
* Support Rails 6.1 ([pull#323](https://github.com/winebarrel/ridgepole/pull/323))
|
134
|
-
* Disable Rails 5.0 support([pull#335](https://github.com/winebarrel/ridgepole/pull/335))
|
135
|
-
* Fix PK AUTO_INCREMENT change bug([pull#334](https://github.com/winebarrel/ridgepole/pull/334))
|
136
|
+
* Disable Rails 5.0 support ([pull#335](https://github.com/winebarrel/ridgepole/pull/335))
|
137
|
+
* Fix PK AUTO_INCREMENT change bug ([pull#334](https://github.com/winebarrel/ridgepole/pull/334))
|
138
|
+
* `>= 0.9.1`
|
139
|
+
* Support `t.foreign_key` ([pull#348](https://github.com/winebarrel/ridgepole/pull/348))
|
140
|
+
* `>= 0.9.2`
|
141
|
+
* Support `t.column index option` ([pull#353](https://github.com/winebarrel/ridgepole/pull/353))
|
142
|
+
* `>= 0.9.3`
|
143
|
+
* Fix `limit` option for `t.integer` ([pull#354](https://github.com/winebarrel/ridgepole/pull/453))
|
136
144
|
</details>
|
137
145
|
|
138
146
|
**Notice**
|
@@ -157,26 +165,6 @@ Or install it yourself as:
|
|
157
165
|
|
158
166
|
$ gem install ridgepole
|
159
167
|
|
160
|
-
## Omnibus Package (deb/rpm)
|
161
|
-
|
162
|
-
see https://github.com/winebarrel/ridgepole/releases.
|
163
|
-
|
164
|
-
### Install from deb
|
165
|
-
|
166
|
-
```sh
|
167
|
-
sudo dpkg -i ridgepole_x.x.x+xxx-x_amd64.deb
|
168
|
-
sudo apt install build-essential libmysqlclient-dev
|
169
|
-
sudo /opt/ridgepole/embedded/bin/gem install mysql2
|
170
|
-
```
|
171
|
-
|
172
|
-
### Install from rpm
|
173
|
-
|
174
|
-
```sh
|
175
|
-
sudo yum install ridgepole-x.x.x+xxx-x.el7.x86_64.rpm
|
176
|
-
sudo yum install make gcc mariadb-devel
|
177
|
-
sudo /opt/ridgepole/embedded/bin/gem install mysql2
|
178
|
-
```
|
179
|
-
|
180
168
|
## Help
|
181
169
|
```
|
182
170
|
Usage: ridgepole [options]
|
@@ -314,8 +302,8 @@ create_table "parent", force: :cascade do |t|
|
|
314
302
|
end
|
315
303
|
|
316
304
|
create_table "child", id: false, force: :cascade do |t|
|
317
|
-
t.
|
318
|
-
t.
|
305
|
+
t.bigint "id"
|
306
|
+
t.bigint "parent_id"
|
319
307
|
end
|
320
308
|
|
321
309
|
add_index "child", ["parent_id"], name: "par_ind", using: :btree
|
@@ -367,7 +355,7 @@ add_index "books", ["author_id"], name: "idx_author_id", using: :btree
|
|
367
355
|
|
368
356
|
execute("ALTER TABLE books ADD CONSTRAINT fk_author FOREIGN KEY (author_id) REFERENCES authors (id)") do |c|
|
369
357
|
# Execute SQL only if there is no foreign key
|
370
|
-
c.raw_connection.query(<<-SQL).each.
|
358
|
+
c.raw_connection.query(<<-SQL).each.size.zero?
|
371
359
|
SELECT 1 FROM information_schema.key_column_usage
|
372
360
|
WHERE TABLE_SCHEMA = 'bookshelf'
|
373
361
|
AND CONSTRAINT_NAME = 'fk_author' LIMIT 1
|
@@ -466,6 +454,3 @@ bundle exec appraisal activerecord-5.1 rake
|
|
466
454
|
* https://github.com/winebarrel/ridgepole-example
|
467
455
|
* https://github.com/winebarrel/ridgepole-example/pull/1
|
468
456
|
* https://github.com/winebarrel/ridgepole-example/pull/2
|
469
|
-
|
470
|
-
## Similar tools
|
471
|
-
* [Codenize.tools](http://codenize.tools/)
|
data/bin/ridgepole
CHANGED
@@ -147,8 +147,6 @@ ARGV.options do |opt|
|
|
147
147
|
opt.on('', '--create-table-with-index') { options[:create_table_with_index] = true }
|
148
148
|
|
149
149
|
opt.on('', '--mysql-dump-auto-increment') do
|
150
|
-
raise OptionParser::InvalidOption, '`mysql-dump-auto-increment` is not available in `activerecord < 5.1`' if Gem::Version.new(ActiveRecord::VERSION::STRING) < Gem::Version.new('5.1')
|
151
|
-
|
152
150
|
options[:mysql_dump_auto_increment] = true
|
153
151
|
end
|
154
152
|
|
data/lib/ridgepole/diff.rb
CHANGED
@@ -159,7 +159,7 @@ module Ridgepole
|
|
159
159
|
to.delete(:collation)
|
160
160
|
end
|
161
161
|
|
162
|
-
pk_attrs = build_primary_key_attrs_if_changed(from, to
|
162
|
+
pk_attrs = build_primary_key_attrs_if_changed(from, to)
|
163
163
|
if pk_attrs
|
164
164
|
if @options[:allow_pk_change]
|
165
165
|
if from[:id] == false
|
@@ -207,20 +207,20 @@ module Ridgepole
|
|
207
207
|
{ type: type, options: options }
|
208
208
|
end
|
209
209
|
|
210
|
-
def build_attrs_if_changed(to_attrs, from_attrs,
|
210
|
+
def build_attrs_if_changed(to_attrs, from_attrs, primary_key: false)
|
211
211
|
normalize_column_options!(from_attrs, primary_key)
|
212
212
|
normalize_column_options!(to_attrs, primary_key)
|
213
213
|
|
214
|
-
new_to_attrs = fix_change_column_options(
|
214
|
+
new_to_attrs = fix_change_column_options(from_attrs, to_attrs) unless compare_column_attrs(from_attrs, to_attrs)
|
215
215
|
new_to_attrs
|
216
216
|
end
|
217
217
|
|
218
|
-
def build_primary_key_attrs_if_changed(from, to
|
218
|
+
def build_primary_key_attrs_if_changed(from, to)
|
219
219
|
from_column_attrs = convert_to_primary_key_attrs(from.slice(*PRIMARY_KEY_OPTIONS))
|
220
220
|
to_column_attrs = convert_to_primary_key_attrs(to.slice(*PRIMARY_KEY_OPTIONS))
|
221
221
|
return if from_column_attrs == to_column_attrs
|
222
222
|
|
223
|
-
build_attrs_if_changed(to_column_attrs, from_column_attrs,
|
223
|
+
build_attrs_if_changed(to_column_attrs, from_column_attrs, primary_key: true)
|
224
224
|
end
|
225
225
|
|
226
226
|
def scan_definition_change(from, to, from_indices, table_name, table_options, table_delta)
|
@@ -242,7 +242,7 @@ module Ridgepole
|
|
242
242
|
next if ignore_column
|
243
243
|
|
244
244
|
if from_attrs
|
245
|
-
to_attrs = build_attrs_if_changed(to_attrs, from_attrs
|
245
|
+
to_attrs = build_attrs_if_changed(to_attrs, from_attrs)
|
246
246
|
if to_attrs
|
247
247
|
definition_delta[:change] ||= {}
|
248
248
|
definition_delta[:change][column_name] = to_attrs
|
@@ -399,9 +399,13 @@ module Ridgepole
|
|
399
399
|
if Ridgepole::ConnectionAdapters.mysql?
|
400
400
|
opts[:unsigned] = false unless opts.key?(:unsigned)
|
401
401
|
|
402
|
-
if
|
403
|
-
|
404
|
-
|
402
|
+
if attrs[:type] == :integer && opts[:limit]
|
403
|
+
min = Ridgepole::DefaultsLimit.default_limit(:integer, @options)
|
404
|
+
max = Ridgepole::DefaultsLimit.default_limit(:bigint, @options)
|
405
|
+
if min < opts[:limit] && opts[:limit] <= max
|
406
|
+
attrs[:type] = :bigint
|
407
|
+
opts.delete(:limit)
|
408
|
+
end
|
405
409
|
end
|
406
410
|
|
407
411
|
if opts[:size] && (attrs[:type] == :text || attrs[:type] == :blob || attrs[:type] == :binary)
|
@@ -471,7 +475,7 @@ module Ridgepole
|
|
471
475
|
# XXX: MySQL only?
|
472
476
|
# https://github.com/rails/rails/blob/v4.2.1/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb#L760
|
473
477
|
# https://github.com/rails/rails/blob/v4.2.1/activerecord/lib/active_record/connection_adapters/abstract/schema_creation.rb#L102
|
474
|
-
def fix_change_column_options(
|
478
|
+
def fix_change_column_options(from_attrs, to_attrs)
|
475
479
|
# default: 0, null: false -> default: nil, null: false | default: nil
|
476
480
|
# default: 0, null: false -> null: false | default: nil
|
477
481
|
# default: 0, null: false -> default: nil, null: true | default: nil, null: true
|
@@ -486,10 +490,6 @@ module Ridgepole
|
|
486
490
|
to_attrs[:options].delete(:null)
|
487
491
|
end
|
488
492
|
|
489
|
-
if Ridgepole::ConnectionAdapters.mysql? && ActiveRecord::VERSION::STRING.start_with?('5.0.')
|
490
|
-
Ridgepole::Logger.instance.warn("[WARNING] Table `#{table_name}`: `default: nil` is ignored when `null: false`. Please apply twice") if to_attrs[:options][:default].nil? && (to_attrs[:options][:null] == false)
|
491
|
-
end
|
492
|
-
|
493
493
|
to_attrs
|
494
494
|
end
|
495
495
|
|
@@ -13,14 +13,17 @@ module Ridgepole
|
|
13
13
|
|
14
14
|
def column(name, type, options = {})
|
15
15
|
name = name.to_s
|
16
|
+
index_options = options.key?(:index) ? options.delete(:index) : false
|
16
17
|
|
17
18
|
@__definition[name] = {
|
18
19
|
type: type,
|
19
20
|
options: options,
|
20
21
|
}
|
22
|
+
|
23
|
+
index(name, index_options.is_a?(Hash) ? index_options : {}) if index_options
|
21
24
|
end
|
22
25
|
|
23
|
-
DEFAULT_PRIMARY_KEY_TYPE =
|
26
|
+
DEFAULT_PRIMARY_KEY_TYPE = :bigint
|
24
27
|
|
25
28
|
TYPES = {
|
26
29
|
# https://github.com/rails/rails/blob/v4.2.1/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb#L274
|
@@ -120,6 +123,10 @@ module Ridgepole
|
|
120
123
|
@base.add_index(@table_name, name, options)
|
121
124
|
end
|
122
125
|
|
126
|
+
def foreign_key(name, options = {})
|
127
|
+
@base.add_foreign_key(@table_name, name, options)
|
128
|
+
end
|
129
|
+
|
123
130
|
def timestamps(*args)
|
124
131
|
options = { null: false }.merge(args.extract_options!)
|
125
132
|
column(:created_at, :datetime, options)
|
data/lib/ridgepole/version.rb
CHANGED
data/ridgepole.gemspec
CHANGED
@@ -26,7 +26,6 @@ Gem::Specification.new do |spec|
|
|
26
26
|
|
27
27
|
spec.add_development_dependency 'appraisal', '>= 2.2.0'
|
28
28
|
spec.add_development_dependency 'bundler'
|
29
|
-
spec.add_development_dependency 'coveralls'
|
30
29
|
spec.add_development_dependency 'erbh', '>= 0.1.2'
|
31
30
|
spec.add_development_dependency 'hash_modern_inspect', '>= 0.1.1'
|
32
31
|
spec.add_development_dependency 'hash_order_helper', '>= 0.1.6'
|
@@ -36,7 +35,9 @@ Gem::Specification.new do |spec|
|
|
36
35
|
spec.add_development_dependency 'rspec', '>= 3.0.0'
|
37
36
|
spec.add_development_dependency 'rspec-match_fuzzy', '>= 0.1.3'
|
38
37
|
spec.add_development_dependency 'rspec-match_ruby', '>= 0.1.3'
|
39
|
-
spec.add_development_dependency 'rubocop', '
|
38
|
+
spec.add_development_dependency 'rubocop', '1.9.1'
|
40
39
|
spec.add_development_dependency 'rubocop-rake', '>= 0.5.1'
|
41
40
|
spec.add_development_dependency 'rubocop-rspec', '>= 2.1.0'
|
41
|
+
spec.add_development_dependency 'simplecov'
|
42
|
+
spec.add_development_dependency 'simplecov-lcov'
|
42
43
|
end
|
data/spec/erb_helper.rb
CHANGED
@@ -14,11 +14,7 @@ ERBh.define_method(:i) do |obj|
|
|
14
14
|
end
|
15
15
|
|
16
16
|
ERBh.define_method(:cond) do |conds, m, e = nil|
|
17
|
-
if conds
|
18
|
-
conds.find do |c, _|
|
19
|
-
condition(c)
|
20
|
-
end&.last || m
|
21
|
-
elsif condition(conds)
|
17
|
+
if condition(conds)
|
22
18
|
m
|
23
19
|
else
|
24
20
|
e || (begin
|
@@ -4,22 +4,22 @@ describe 'Ridgepole::Client#diff -> migrate' do
|
|
4
4
|
context 'when change column (add collation)' do
|
5
5
|
let(:actual_dsl) do
|
6
6
|
erbh(<<-ERB)
|
7
|
-
create_table "employee_clubs", <%= i cond(
|
7
|
+
create_table "employee_clubs", <%= i cond("< 6.1", { id: :bigint, unsigned: true }, { id: { type: :bigint, unsigned: true } }) %>, force: :cascade do |t|
|
8
8
|
t.integer "emp_no", null: false
|
9
9
|
t.integer "club_id", null: false, unsigned: true
|
10
10
|
t.string "string", null: false, collation: "ascii_bin"
|
11
|
-
t.text "text",
|
11
|
+
t.text "text", null: false
|
12
12
|
end
|
13
13
|
ERB
|
14
14
|
end
|
15
15
|
|
16
16
|
let(:expected_dsl) do
|
17
17
|
erbh(<<-ERB)
|
18
|
-
create_table "employee_clubs", <%= i cond(
|
18
|
+
create_table "employee_clubs", <%= i cond("< 6.1", { id: :bigint, unsigned: true }, { id: { type: :bigint, unsigned: true } }) %>, force: :cascade do |t|
|
19
19
|
t.integer "emp_no", null: false
|
20
20
|
t.integer "club_id", null: false, unsigned: true
|
21
21
|
t.string "string", null: false, collation: "ascii_bin"
|
22
|
-
t.text "text",
|
22
|
+
t.text "text", null: false, collation: "utf8mb4_bin"
|
23
23
|
end
|
24
24
|
ERB
|
25
25
|
end
|
@@ -39,22 +39,22 @@ describe 'Ridgepole::Client#diff -> migrate' do
|
|
39
39
|
context 'when change column (delete collation)' do
|
40
40
|
let(:actual_dsl) do
|
41
41
|
erbh(<<-ERB)
|
42
|
-
create_table "employee_clubs", <%= i cond(
|
42
|
+
create_table "employee_clubs", <%= i cond("< 6.1", { id: :bigint, unsigned: true }, { id: { type: :bigint, unsigned: true } }) %>, force: :cascade do |t|
|
43
43
|
t.integer "emp_no", null: false
|
44
44
|
t.integer "club_id", null: false, unsigned: true
|
45
45
|
t.string "string", null: false, collation: "ascii_bin"
|
46
|
-
t.text "text",
|
46
|
+
t.text "text", null: false, collation: "utf8mb4_bin"
|
47
47
|
end
|
48
48
|
ERB
|
49
49
|
end
|
50
50
|
|
51
51
|
let(:expected_dsl) do
|
52
52
|
erbh(<<-ERB)
|
53
|
-
create_table "employee_clubs", <%= i cond(
|
53
|
+
create_table "employee_clubs", <%= i cond("< 6.1", { id: :bigint, unsigned: true }, { id: { type: :bigint, unsigned: true } }) %>, force: :cascade do |t|
|
54
54
|
t.integer "emp_no", null: false
|
55
55
|
t.integer "club_id", null: false, unsigned: true
|
56
56
|
t.string "string", null: false, collation: "ascii_bin"
|
57
|
-
t.text "text",
|
57
|
+
t.text "text", null: false
|
58
58
|
end
|
59
59
|
ERB
|
60
60
|
end
|
@@ -74,22 +74,22 @@ describe 'Ridgepole::Client#diff -> migrate' do
|
|
74
74
|
context 'when change column (change collation)' do
|
75
75
|
let(:actual_dsl) do
|
76
76
|
erbh(<<-ERB)
|
77
|
-
create_table "employee_clubs", <%= i cond(
|
77
|
+
create_table "employee_clubs", <%= i cond("< 6.1", { id: :bigint, unsigned: true }, { id: { type: :bigint, unsigned: true } }) %>, force: :cascade do |t|
|
78
78
|
t.integer "emp_no", null: false
|
79
79
|
t.integer "club_id", null: false, unsigned: true
|
80
80
|
t.string "string", null: false, collation: "ascii_bin"
|
81
|
-
t.text "text",
|
81
|
+
t.text "text", null: false, collation: "utf8mb4_bin"
|
82
82
|
end
|
83
83
|
ERB
|
84
84
|
end
|
85
85
|
|
86
86
|
let(:expected_dsl) do
|
87
87
|
erbh(<<-ERB)
|
88
|
-
create_table "employee_clubs", <%= i cond(
|
88
|
+
create_table "employee_clubs", <%= i cond("< 6.1", { id: :bigint, unsigned: true }, { id: { type: :bigint, unsigned: true } }) %>, force: :cascade do |t|
|
89
89
|
t.integer "emp_no", null: false
|
90
90
|
t.integer "club_id", null: false, unsigned: true
|
91
91
|
t.string "string", null: false, collation: "utf8mb4_bin"
|
92
|
-
t.text "text",
|
92
|
+
t.text "text", null: false, collation: "ascii_bin"
|
93
93
|
end
|
94
94
|
ERB
|
95
95
|
end
|
@@ -109,11 +109,11 @@ describe 'Ridgepole::Client#diff -> migrate' do
|
|
109
109
|
context 'when change column (no change collation)' do
|
110
110
|
let(:actual_dsl) do
|
111
111
|
erbh(<<-ERB)
|
112
|
-
create_table "employee_clubs", <%= i cond(
|
112
|
+
create_table "employee_clubs", <%= i cond("< 6.1", { id: :bigint, unsigned: true }, { id: { type: :bigint, unsigned: true } }) %>, force: :cascade do |t|
|
113
113
|
t.integer "emp_no", null: false
|
114
114
|
t.integer "club_id", null: false, unsigned: true
|
115
115
|
t.string "string", null: false, collation: "ascii_bin"
|
116
|
-
t.text "text",
|
116
|
+
t.text "text", null: false, collation: "utf8mb4_bin"
|
117
117
|
end
|
118
118
|
ERB
|
119
119
|
end
|