ridgepole 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
@@ -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.1
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-05-06 00:00:00.000000000 Z
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