ridgepole 0.3.6 → 0.3.7

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 84b1a22ee6618b697b68c9f0024f17fccf5087e0
4
- data.tar.gz: 668ee8448ee3b954de116a02b8749d05c7a57795
3
+ metadata.gz: 04ff9c0b5b25d5bed40e085992ae9f4a605381e6
4
+ data.tar.gz: 799269ed647277c33317a16596cbb068498592d6
5
5
  SHA512:
6
- metadata.gz: ad235b54d5770469f6e8111a81945b91d0c2ca305a28a4b998c29f4d7e43e27ec9d87b1fd59383f90af2db616a7010eab20e501d791490c9540da7299b9dada9
7
- data.tar.gz: eb29c85a720959fd535e035d35e9c27b66a715351e796ec5317c682680e78d57c6fa29382211bf6ab424f4443829cc3e724af3cb87ee2674579c00b0ef3d5028
6
+ metadata.gz: 6717299b01c508286c13ee9dffcfcfb5cc6066a4629de48a0f7000bdcc2b6059b4a480dc7589307036c7fd5eb7be6cb0f761db8b738dc8a54e47b8be60054da4
7
+ data.tar.gz: 4a82f7ae17dcbdafd2748f22142bdf5986d4005bb7ca6400dd0a57a13e0543c4f4f4cf51f0e14aa5bf27ca14029424221fe4234984f8a739adab64c3ea362ae2
data/README.md CHANGED
@@ -32,6 +32,8 @@ Usage: ridgepole [options]
32
32
  --dry-run
33
33
  --table-options OPTIONS
34
34
  --bulk-change
35
+ --pre-query QUERY
36
+ --post-query QUERY
35
37
  -e, --export
36
38
  --split
37
39
  --split-with-dir
data/bin/ridgepole CHANGED
@@ -51,6 +51,8 @@ ARGV.options do |opt|
51
51
  raise "Cannot use `bulk-change` in `merge`" if options[:merge]
52
52
  options[:bulk_change] = true
53
53
  }
54
+ opt.on('', '--pre-query QUERY') {|v| options[:pre_query] = v }
55
+ opt.on('', '--post-query QUERY') {|v| options[:post_query] = v }
54
56
  opt.on('-e', '--export') { set_mode[:export] }
55
57
  opt.on('', '--split') {|v| split = true }
56
58
  opt.on('', '--split-with-dir') {|v| split = :with_dir }
@@ -59,7 +59,7 @@ class Ridgepole::Delta
59
59
  end
60
60
 
61
61
  Ridgepole::ExecuteExpander.without_operation(callback) do
62
- eval_script(script)
62
+ eval_script(script, buf)
63
63
  end
64
64
 
65
65
  buf.string.strip
@@ -71,14 +71,38 @@ class Ridgepole::Delta
71
71
  end
72
72
  end
73
73
 
74
- def eval_script(script)
74
+ def eval_script(script, out = $stdout)
75
75
  begin
76
- ActiveRecord::Schema.new.instance_eval(script, SCRIPT_NAME, 1)
76
+ with_pre_post_query(out) do
77
+ ActiveRecord::Schema.new.instance_eval(script, SCRIPT_NAME, 1)
78
+ end
77
79
  rescue => e
78
80
  raise_exception(script, e)
79
81
  end
80
82
  end
81
83
 
84
+ def with_pre_post_query(out = $stdout)
85
+ if (pre_query = @options[:pre_query])
86
+ if @options[:noop]
87
+ out.puts(pre_query)
88
+ else
89
+ ActiveRecord::Base.connection.execute(pre_query)
90
+ end
91
+ end
92
+
93
+ retval = yield
94
+
95
+ if (post_query = @options[:post_query])
96
+ if @options[:noop]
97
+ out.puts(post_query)
98
+ else
99
+ ActiveRecord::Base.connection.execute(post_query)
100
+ end
101
+ end
102
+
103
+ return retval
104
+ end
105
+
82
106
  def raise_exception(script, org)
83
107
  lines = script.each_line
84
108
  digit_number = (lines.count + 1).to_s.length
@@ -1,3 +1,3 @@
1
1
  module Ridgepole
2
- VERSION = '0.3.6'
2
+ VERSION = '0.3.7'
3
3
  end
@@ -0,0 +1,165 @@
1
+ describe 'Ridgepole::Client#diff -> migrate' do
2
+ context 'migrate with pre/post query' do
3
+ let(:actual_dsl) { '' }
4
+ let(:dsl) {
5
+ <<-RUBY
6
+ create_table "clubs", force: true do |t|
7
+ t.string "name", default: "", null: false
8
+ end
9
+
10
+ add_index "clubs", ["name"], name: "idx_name", unique: true, using: :btree
11
+
12
+ create_table "departments", primary_key: "dept_no", force: true do |t|
13
+ t.string "dept_name", limit: 40, null: false
14
+ end
15
+
16
+ add_index "departments", ["dept_name"], name: "dept_name", unique: true, using: :btree
17
+
18
+ create_table "dept_emp", id: false, force: true do |t|
19
+ t.integer "emp_no", null: false
20
+ t.string "dept_no", limit: 4, null: false
21
+ t.date "from_date", null: false
22
+ t.date "to_date", null: false
23
+ end
24
+
25
+ add_index "dept_emp", ["dept_no"], name: "dept_no", using: :btree
26
+ add_index "dept_emp", ["emp_no"], name: "emp_no", using: :btree
27
+
28
+ create_table "dept_manager", id: false, force: true do |t|
29
+ t.string "dept_no", limit: 4, null: false
30
+ t.integer "emp_no", null: false
31
+ t.date "from_date", null: false
32
+ t.date "to_date", null: false
33
+ end
34
+
35
+ add_index "dept_manager", ["dept_no"], name: "dept_no", using: :btree
36
+ add_index "dept_manager", ["emp_no"], name: "emp_no", using: :btree
37
+
38
+ create_table "employee_clubs", force: true do |t|
39
+ t.integer "emp_no", unsigned: true, null: false
40
+ t.integer "club_id", unsigned: true, null: false
41
+ end
42
+
43
+ add_index "employee_clubs", ["emp_no", "club_id"], name: "idx_emp_no_club_id", using: :btree
44
+
45
+ create_table "employees", primary_key: "emp_no", force: true do |t|
46
+ t.date "birth_date", null: false
47
+ t.string "first_name", limit: 14, null: false
48
+ t.string "last_name", limit: 16, null: false
49
+ t.string "gender", limit: 1, null: false
50
+ t.date "hire_date", null: false
51
+ end
52
+
53
+ create_table "salaries", id: false, force: true do |t|
54
+ t.integer "emp_no", null: false
55
+ t.integer "salary", null: false
56
+ t.date "from_date", null: false
57
+ t.date "to_date", null: false
58
+ end
59
+
60
+ add_index "salaries", ["emp_no"], name: "emp_no", using: :btree
61
+
62
+ create_table "titles", id: false, force: true do |t|
63
+ t.integer "emp_no", null: false
64
+ t.string "title", limit: 50, null: false
65
+ t.date "from_date", null: false
66
+ t.date "to_date"
67
+ end
68
+
69
+ add_index "titles", ["emp_no"], name: "emp_no", using: :btree
70
+ RUBY
71
+ }
72
+
73
+ let(:expected_dsl) {
74
+ <<-RUBY
75
+ create_table "clubs", force: true do |t|
76
+ t.string "name", default: "", null: false
77
+ end
78
+
79
+ add_index "clubs", ["name"], name: "idx_name", unique: true, using: :btree
80
+
81
+ create_table "departments", primary_key: "dept_no", force: true do |t|
82
+ t.string "dept_name", limit: 40, null: false
83
+ end
84
+
85
+ add_index "departments", ["dept_name"], name: "dept_name", unique: true, using: :btree
86
+
87
+ create_table "dept_emp", id: false, force: true do |t|
88
+ t.integer "emp_no", null: false
89
+ t.string "dept_no", limit: 4, null: false
90
+ t.date "from_date", null: false
91
+ t.date "to_date", null: false
92
+ end
93
+
94
+ add_index "dept_emp", ["dept_no"], name: "dept_no", using: :btree
95
+ add_index "dept_emp", ["emp_no"], name: "emp_no", using: :btree
96
+
97
+ create_table "dept_manager", id: false, force: true do |t|
98
+ t.string "dept_no", limit: 4, null: false
99
+ t.integer "emp_no", null: false
100
+ t.date "from_date", null: false
101
+ t.date "to_date", null: false
102
+ end
103
+
104
+ add_index "dept_manager", ["dept_no"], name: "dept_no", using: :btree
105
+ add_index "dept_manager", ["emp_no"], name: "emp_no", using: :btree
106
+
107
+ create_table "employee_clubs", force: true do |t|
108
+ t.integer "emp_no", unsigned: true, null: false
109
+ t.integer "club_id", unsigned: true, null: false
110
+ end
111
+
112
+ add_index "employee_clubs", ["emp_no", "club_id"], name: "idx_emp_no_club_id", using: :btree
113
+
114
+ create_table "employees", primary_key: "emp_no", force: true do |t|
115
+ t.date "birth_date", null: false
116
+ t.string "first_name", limit: 14, null: false
117
+ t.string "last_name", limit: 16, null: false
118
+ t.string "gender", limit: 1, null: false
119
+ t.date "hire_date", null: false
120
+ end
121
+
122
+ create_table "post", id: false, force: true do |t|
123
+ t.integer "id"
124
+ end
125
+
126
+ create_table "pre", id: false, force: true do |t|
127
+ t.integer "id"
128
+ end
129
+
130
+ create_table "salaries", id: false, force: true do |t|
131
+ t.integer "emp_no", null: false
132
+ t.integer "salary", null: false
133
+ t.date "from_date", null: false
134
+ t.date "to_date", null: false
135
+ end
136
+
137
+ add_index "salaries", ["emp_no"], name: "emp_no", using: :btree
138
+
139
+ create_table "titles", id: false, force: true do |t|
140
+ t.integer "emp_no", null: false
141
+ t.string "title", limit: 50, null: false
142
+ t.date "from_date", null: false
143
+ t.date "to_date"
144
+ end
145
+
146
+ add_index "titles", ["emp_no"], name: "emp_no", using: :btree
147
+ RUBY
148
+ }
149
+
150
+ subject {
151
+ client(
152
+ :pre_query => 'create table pre (id int)',
153
+ :post_query => 'create table post (id int)',
154
+ )
155
+ }
156
+
157
+ it {
158
+ delta = subject.diff(dsl)
159
+ expect(delta.differ?).to be_truthy
160
+ expect(subject.dump).to eq actual_dsl.strip_heredoc.strip
161
+ delta.migrate
162
+ expect(subject.dump).to eq expected_dsl.strip_heredoc.strip
163
+ }
164
+ end
165
+ 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.3.6
4
+ version: 0.3.7
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-08-04 00:00:00.000000000 Z
11
+ date: 2014-08-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -155,6 +155,7 @@ files:
155
155
  - spec/migrate/migrate_skip_rename_column_spec.rb
156
156
  - spec/migrate/migrate_skip_rename_table_spec.rb
157
157
  - spec/migrate/migrate_with_ignore_tables_spec.rb
158
+ - spec/migrate/migrate_with_pre_post_query_spec.rb
158
159
  - spec/migrate/migrate_with_tables_spec.rb
159
160
  - spec/ridgepole_test_database.sql
160
161
  - spec/ridgepole_test_tables.sql
@@ -217,6 +218,7 @@ test_files:
217
218
  - spec/migrate/migrate_skip_rename_column_spec.rb
218
219
  - spec/migrate/migrate_skip_rename_table_spec.rb
219
220
  - spec/migrate/migrate_with_ignore_tables_spec.rb
221
+ - spec/migrate/migrate_with_pre_post_query_spec.rb
220
222
  - spec/migrate/migrate_with_tables_spec.rb
221
223
  - spec/ridgepole_test_database.sql
222
224
  - spec/ridgepole_test_tables.sql