ridgepole 0.0.1 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.rspec +2 -0
- data/README.md +1 -0
- data/Rakefile +5 -1
- data/bin/ridgepole +49 -14
- data/lib/ridgepole/client.rb +8 -4
- data/lib/ridgepole/diff.rb +32 -13
- data/lib/ridgepole/dsl_parser.rb +18 -5
- data/lib/ridgepole/dumper.rb +43 -1
- data/lib/ridgepole/version.rb +1 -1
- data/ridgepole.gemspec +2 -1
- data/spec/dump/dump_spec.rb +75 -0
- data/spec/migrate/migrate_add_column_spec.rb +155 -0
- data/spec/migrate/migrate_change_column_spec.rb +152 -0
- data/spec/migrate/migrate_create_index_spec.rb +91 -0
- data/spec/migrate/migrate_create_table_spec.rb +91 -0
- data/spec/migrate/migrate_drop_column_spec.rb +145 -0
- data/spec/migrate/migrate_drop_index.rb +91 -0
- data/spec/migrate/migrate_drop_table.rb +91 -0
- data/spec/migrate/migrate_empty_spec.rb +83 -0
- data/spec/migrate/migrate_merge_mode_spec.rb +157 -0
- data/spec/migrate/migrate_rename_column_spec.rb +152 -0
- data/spec/migrate/migrate_rename_table_spec.rb +152 -0
- data/spec/migrate/migrate_same_spec.rb +83 -0
- data/spec/ridgepole_test_database.sql +2 -0
- data/spec/ridgepole_test_tables.sql +79 -0
- data/spec/spec_helper.rb +31 -0
- data/spec/string_ext.rb +61 -0
- metadata +54 -5
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
$: << File.expand_path('..', __FILE__)
|
2
|
+
require 'ridgepole'
|
3
|
+
require 'string_ext'
|
4
|
+
|
5
|
+
RSpec.configure do |config|
|
6
|
+
config.before(:each) do
|
7
|
+
restore_database
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def restore_database
|
12
|
+
sql_file = File.expand_path('../ridgepole_test_database.sql', __FILE__)
|
13
|
+
system("mysql -uroot < #{sql_file}")
|
14
|
+
end
|
15
|
+
|
16
|
+
def restore_tables
|
17
|
+
sql_file = File.expand_path('../ridgepole_test_tables.sql', __FILE__)
|
18
|
+
system("mysql -uroot < #{sql_file}")
|
19
|
+
end
|
20
|
+
|
21
|
+
def client(options = {}, config = {})
|
22
|
+
config = {
|
23
|
+
adapter: 'mysql2',
|
24
|
+
database: 'ridgepole_test',
|
25
|
+
}.merge(config)
|
26
|
+
|
27
|
+
options = {
|
28
|
+
}.merge(options)
|
29
|
+
|
30
|
+
Ridgepole::Client.new(config, options)
|
31
|
+
end
|
data/spec/string_ext.rb
ADDED
@@ -0,0 +1,61 @@
|
|
1
|
+
class String
|
2
|
+
def undent
|
3
|
+
min_space_num = self.split("\n").delete_if {|s| s =~ /^\s*$/ }.map {|s| (s[/^\s+/] || '').length }.min
|
4
|
+
|
5
|
+
if min_space_num and min_space_num > 0
|
6
|
+
gsub(/^[ \t]{,#{min_space_num}}/, '')
|
7
|
+
else
|
8
|
+
self
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def delete_create_table(name)
|
13
|
+
new_def = []
|
14
|
+
in_block = false
|
15
|
+
|
16
|
+
self.each_line do |line|
|
17
|
+
if line =~ /\A\s*create_table\s+"#{name}"/
|
18
|
+
in_block = true
|
19
|
+
elsif in_block and line =~ /\A\s*end\s*\Z/
|
20
|
+
in_block = false
|
21
|
+
elsif not in_block
|
22
|
+
new_def << line
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
new_def = new_def.join
|
27
|
+
raise 'must not happen' if new_def =~ /^\s*create_table\s+"#{name}"/m
|
28
|
+
new_def.delete_add_index(name)
|
29
|
+
end
|
30
|
+
|
31
|
+
def delete_add_index(name, columns = nil)
|
32
|
+
new_def = []
|
33
|
+
in_block = false
|
34
|
+
|
35
|
+
args = name.inspect
|
36
|
+
args << ',\\s*\\[' + columns.map {|i| i.inspect }.join(',\\s*') + '\\]' if columns
|
37
|
+
|
38
|
+
self.each_line do |line|
|
39
|
+
if line !~ /\A\s*add_index\s+#{args}/
|
40
|
+
new_def << line
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
new_def = new_def.join
|
45
|
+
raise 'must not happen' if new_def =~ /^\s*add_index\s+#{args}/m
|
46
|
+
new_def
|
47
|
+
end
|
48
|
+
|
49
|
+
def gsub_surely(pattern, replace)
|
50
|
+
old_str = self.dup
|
51
|
+
new_str = self.gsub(pattern, replace)
|
52
|
+
raise 'must not happen' if old_str == new_str
|
53
|
+
new_str
|
54
|
+
end
|
55
|
+
|
56
|
+
def delete_empty_lines
|
57
|
+
self.each_line.select {|line|
|
58
|
+
line !~ /\A\s*\Z/
|
59
|
+
}.join
|
60
|
+
end
|
61
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ridgepole
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Genki Sugawara
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-06-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - '>='
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: activerecord-mysql-unsigned
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: bundler
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -56,14 +70,14 @@ dependencies:
|
|
56
70
|
name: rspec
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
58
72
|
requirements:
|
59
|
-
- -
|
73
|
+
- - ~>
|
60
74
|
- !ruby/object:Gem::Version
|
61
75
|
version: 2.14.1
|
62
76
|
type: :development
|
63
77
|
prerelease: false
|
64
78
|
version_requirements: !ruby/object:Gem::Requirement
|
65
79
|
requirements:
|
66
|
-
- -
|
80
|
+
- - ~>
|
67
81
|
- !ruby/object:Gem::Version
|
68
82
|
version: 2.14.1
|
69
83
|
- !ruby/object:Gem::Dependency
|
@@ -90,6 +104,7 @@ extensions: []
|
|
90
104
|
extra_rdoc_files: []
|
91
105
|
files:
|
92
106
|
- .gitignore
|
107
|
+
- .rspec
|
93
108
|
- Gemfile
|
94
109
|
- LICENSE.txt
|
95
110
|
- README.md
|
@@ -105,6 +120,23 @@ files:
|
|
105
120
|
- lib/ridgepole/string_ext.rb
|
106
121
|
- lib/ridgepole/version.rb
|
107
122
|
- ridgepole.gemspec
|
123
|
+
- spec/dump/dump_spec.rb
|
124
|
+
- spec/migrate/migrate_add_column_spec.rb
|
125
|
+
- spec/migrate/migrate_change_column_spec.rb
|
126
|
+
- spec/migrate/migrate_create_index_spec.rb
|
127
|
+
- spec/migrate/migrate_create_table_spec.rb
|
128
|
+
- spec/migrate/migrate_drop_column_spec.rb
|
129
|
+
- spec/migrate/migrate_drop_index.rb
|
130
|
+
- spec/migrate/migrate_drop_table.rb
|
131
|
+
- spec/migrate/migrate_empty_spec.rb
|
132
|
+
- spec/migrate/migrate_merge_mode_spec.rb
|
133
|
+
- spec/migrate/migrate_rename_column_spec.rb
|
134
|
+
- spec/migrate/migrate_rename_table_spec.rb
|
135
|
+
- spec/migrate/migrate_same_spec.rb
|
136
|
+
- spec/ridgepole_test_database.sql
|
137
|
+
- spec/ridgepole_test_tables.sql
|
138
|
+
- spec/spec_helper.rb
|
139
|
+
- spec/string_ext.rb
|
108
140
|
homepage: https://bitbucket.org/winebarrel/ridgepole
|
109
141
|
licenses:
|
110
142
|
- MIT
|
@@ -129,4 +161,21 @@ rubygems_version: 2.0.14
|
|
129
161
|
signing_key:
|
130
162
|
specification_version: 4
|
131
163
|
summary: Ridgepole is a tool to DB schema.
|
132
|
-
test_files:
|
164
|
+
test_files:
|
165
|
+
- spec/dump/dump_spec.rb
|
166
|
+
- spec/migrate/migrate_add_column_spec.rb
|
167
|
+
- spec/migrate/migrate_change_column_spec.rb
|
168
|
+
- spec/migrate/migrate_create_index_spec.rb
|
169
|
+
- spec/migrate/migrate_create_table_spec.rb
|
170
|
+
- spec/migrate/migrate_drop_column_spec.rb
|
171
|
+
- spec/migrate/migrate_drop_index.rb
|
172
|
+
- spec/migrate/migrate_drop_table.rb
|
173
|
+
- spec/migrate/migrate_empty_spec.rb
|
174
|
+
- spec/migrate/migrate_merge_mode_spec.rb
|
175
|
+
- spec/migrate/migrate_rename_column_spec.rb
|
176
|
+
- spec/migrate/migrate_rename_table_spec.rb
|
177
|
+
- spec/migrate/migrate_same_spec.rb
|
178
|
+
- spec/ridgepole_test_database.sql
|
179
|
+
- spec/ridgepole_test_tables.sql
|
180
|
+
- spec/spec_helper.rb
|
181
|
+
- spec/string_ext.rb
|