duck_duck_duck 3.0.0 → 3.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 20ab64a22819731148fd285dab0e88ffb6d55865
4
- data.tar.gz: 772d54ecb03a4e998e38ca84ed1c0b556c8deabb
3
+ metadata.gz: 408c8ff124e2c853f32fc6f5d3620d12107805e6
4
+ data.tar.gz: c6c87955b7ac26a994ecbf8d95638b7562ced0a2
5
5
  SHA512:
6
- metadata.gz: 0bc860a684065b65e9dfcf924c77d9f3b241525b73ff3e584ad9757d43a1e69c30e98f01a62581a9b0a485500b326eaf1f9223f6785b1d68f09d021e432ce7c3
7
- data.tar.gz: 97d096b52826386a9590c9daade0bf40f48627d728fb7c20ea5546c23acf35c06c5de60522c910c20dfebc87367c8e748b94403c2ed23c84458f0e38c97a64e0
6
+ metadata.gz: 91a70919b41eba20e83627c848a45f01f5d242247cbf3a0defaca1202227d72ffe7b3e8760c6a7eb3599d81c7824b17b851b7c121a9288f2a9c22e58f11c771c
7
+ data.tar.gz: c5b85fa17c3464c3eda293090429cffc75b1b9c4e6f98b372f5030e7b3f0a21c1ba1bec9a8c131f522d88f0a54a85f2fcced11553c09c971b5f54b8abcf6eeb6
data/VERSION CHANGED
@@ -1 +1 @@
1
- 3.0.0
1
+ 3.1.0
@@ -25,6 +25,27 @@ class Duck_Duck_Duck
25
25
  EOF
26
26
  end
27
27
 
28
+ def read_file f
29
+ raw = File.read(f).split(/\s*--\s+(UP|DOWN)\s*/).
30
+ inject([:UP, { :UP => [], :DOWN => [] }]) do |memo, val|
31
+ dir = memo.first
32
+ meta = memo.last
33
+
34
+ case val
35
+ when 'UP', :UP, :DOWN, 'DOWN'
36
+ dir = val.to_sym
37
+ when ''
38
+ # do nothing
39
+ else
40
+ meta[dir] << val
41
+ end
42
+
43
+ [dir, meta]
44
+ end
45
+ meta = raw.last
46
+ {:UP=>meta[:UP].join("\n"), :DOWN=>meta[:DOWN].join("\n")}
47
+ end
48
+
28
49
  %w{reset up down}.each { |meth|
29
50
  eval <<-EOF, nil, __FILE__, __LINE__ + 1
30
51
  def #{meth} name = nil
@@ -77,7 +98,7 @@ class Duck_Duck_Duck
77
98
  files = @files.sort.map { |f|
78
99
  ver = file_to_ver(f)
79
100
  if ver > rec[:version]
80
- [ ver, File.read(f).split('-- DOWN').first ]
101
+ [ ver, Duck_Duck_Duck.read_file(f)[:UP] ]
81
102
  end
82
103
  }.compact
83
104
 
@@ -116,7 +137,7 @@ class Duck_Duck_Duck
116
137
  files = @files.sort.reverse.map { |f|
117
138
  ver = file_to_ver(f)
118
139
  next unless ver <= rec[:version]
119
- [ ver, File.read(f).split('-- DOWN').last ]
140
+ [ ver, Duck_Duck_Duck.read_file(f)[:DOWN] ]
120
141
  }.compact
121
142
 
122
143
  if files.empty?
@@ -3,7 +3,7 @@ require 'sequel'
3
3
  require 'Exit_0'
4
4
 
5
5
  schema = ENV['SCHEMA_TABLE'] = '_test_schema'
6
- DB = Sequel.connect ENV['DATABASE_URL']
6
+ DB = Sequel.connect ENV['DATABASE_URL']
7
7
  MODELS = Dir.glob('*/migrates').map { |dir| File.basename File.dirname(dir) }
8
8
 
9
9
  # === Reset tables ===========================================================
@@ -45,6 +45,17 @@ describe :initialize do
45
45
 
46
46
  end # === describe :initialize
47
47
 
48
+ describe "read_file" do
49
+
50
+ it "returns: {:UP=>STRING, :DOWN=>STRING}" do
51
+ file = "/tmp/ddd_up_down.sql"
52
+ File.write(file, ["-- DOWN", "2", "-- UP", "1", "-- DOWN", "2", "-- UP", "1"].join("\n"))
53
+ Duck_Duck_Duck.read_file(file).
54
+ should == {:UP=>"1\n1", :DOWN=>"2\n2"}
55
+ end # === it
56
+
57
+ end # === describe "read_file"
58
+
48
59
  describe "create" do
49
60
 
50
61
  before {
@@ -125,5 +136,20 @@ describe 'down model' do
125
136
 
126
137
  end # === describe down model
127
138
 
139
+ describe '-- UP/-- DOWN model' do
140
+
141
+ before { reset }
142
+
143
+ it "runs UPs in proper order" do
144
+ Exit_0("duck_duck_duck up 0030_model")
145
+ get(%^SELECT title FROM "0030_model"^).
146
+ should == [
147
+ {:title=>"record 1-1: 0030_model"},
148
+ {:title=>"record 2-1: 0030_model"},
149
+ {:title=>"record 2-2: 0030_model"},
150
+ ]
151
+ end # === it
152
+
153
+ end # === describe '-- UP/-- DOWN model'
128
154
 
129
155
 
@@ -1,13 +1,14 @@
1
+ -- DOWN
2
+
3
+ INSERT INTO "0030_model" (title)
4
+ VALUES ('DROP 0030_model');
1
5
 
6
+ -- UP
2
7
  CREATE TABLE "0030_model" (
3
8
  id serial NOT NULL PRIMARY KEY,
4
9
  title varchar(100)
5
10
  );
6
11
 
7
12
 
8
- -- DOWN
9
-
10
- INSERT INTO "0030_model" (title)
11
- VALUES ('DROP 0030_model');
12
13
 
13
14
 
@@ -1,11 +1,12 @@
1
+ -- DOWN
1
2
 
2
3
  INSERT INTO "0030_model" (title)
3
- VALUES ('record 1: 0030_model');
4
-
4
+ VALUES ('DROP record 1: 0030_model');
5
5
 
6
- -- DOWN
7
6
 
7
+ -- UP
8
8
  INSERT INTO "0030_model" (title)
9
- VALUES ('DROP record 1: 0030_model');
9
+ VALUES ('record 1-1: 0030_model');
10
+
10
11
 
11
12
 
@@ -1,11 +1,19 @@
1
-
1
+ -- DOWN
2
2
  INSERT INTO "0030_model" (title)
3
- VALUES ('record 1: 0030_model');
3
+ VALUES ('DROP record 2-1: 0030_model');
4
4
 
5
+ -- UP
6
+ INSERT INTO "0030_model" (title)
7
+ VALUES ('record 2-1: 0030_model');
5
8
 
6
9
  -- DOWN
10
+ INSERT INTO "0030_model" (title)
11
+ VALUES ('DROP record 2-1: 0030_model');
7
12
 
13
+ -- UP
8
14
  INSERT INTO "0030_model" (title)
9
- VALUES ('DROP record 2: 0030_model');
15
+ VALUES ('record 2-2: 0030_model');
16
+
17
+
10
18
 
11
19
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: duck_duck_duck
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0
4
+ version: 3.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - da99
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-19 00:00:00.000000000 Z
11
+ date: 2015-10-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pry
@@ -145,8 +145,6 @@ files:
145
145
  - specs/lib/models/0030_model/migrates/0010-table.sql
146
146
  - specs/lib/models/0030_model/migrates/0020-insert_1.sql
147
147
  - specs/lib/models/0030_model/migrates/0030-insert_2.sql
148
- - specs/lib/user/migrates/001-user.js
149
- - specs/lib/user/migrates/002-two.js
150
148
  homepage: https://github.com/da99/duck_duck_duck
151
149
  licenses:
152
150
  - MIT
@@ -167,7 +165,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
167
165
  version: '0'
168
166
  requirements: []
169
167
  rubyforge_project:
170
- rubygems_version: 2.4.6
168
+ rubygems_version: 2.4.8
171
169
  signing_key:
172
170
  specification_version: 4
173
171
  summary: Migrations for apps composed of mini-apps.
@@ -1,3 +0,0 @@
1
- exports.migrate = function (dir, river) {
2
- river.finish();
3
- };
@@ -1,3 +0,0 @@
1
- exports.migrate = function (dir, river) {
2
- river.finish();
3
- };