duck_duck_duck 4.0.0 → 4.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 +4 -4
- data/VERSION +1 -1
- data/lib/duck_duck_duck.rb +23 -10
- data/specs/duck_duck_duck.rb +14 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 730c26a37602ac9968f9c396bbe1132693a91c08
|
4
|
+
data.tar.gz: a45ea124b26a4844a9c95aa8c0e6b6f3080a47cb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1da85bc4c920e2e480ec32fb08ae6bf4eaeb6b62a872a292c2ec765d37b82cd3746b4426ee8ce7a43519e019ca7eecd7e9db9c6d04f1ee73793a704b459f8d69
|
7
|
+
data.tar.gz: f4eca66662ca2d2c577058b5490b74bf556b6a363686cc5742dde7f22ba5a7cbc441d7d02914412518d759d2209db948c87bfffc3c4cefae80e1aaa3db350012
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
4.
|
1
|
+
4.1.0
|
data/lib/duck_duck_duck.rb
CHANGED
@@ -8,6 +8,10 @@ class Duck_Duck_Duck
|
|
8
8
|
|
9
9
|
class << self
|
10
10
|
|
11
|
+
def stdout *args
|
12
|
+
args.each { |a| print "#{a}\n" }
|
13
|
+
end
|
14
|
+
|
11
15
|
def dev_only
|
12
16
|
fail "Not allowed on a dev machine." if ENV['IS_DEV']
|
13
17
|
end
|
@@ -50,7 +54,7 @@ class Duck_Duck_Duck
|
|
50
54
|
eval <<-EOF, nil, __FILE__, __LINE__ + 1
|
51
55
|
def #{meth} name = nil
|
52
56
|
migrate_schema
|
53
|
-
|
57
|
+
stdout "=== #{meth}: \#{name}"
|
54
58
|
new(name).#{meth}
|
55
59
|
end
|
56
60
|
EOF
|
@@ -77,6 +81,10 @@ class Duck_Duck_Duck
|
|
77
81
|
.sort
|
78
82
|
end
|
79
83
|
|
84
|
+
def stdout *args
|
85
|
+
Duck_Duck_Duck.stdout *args
|
86
|
+
end
|
87
|
+
|
80
88
|
def file_to_ver str
|
81
89
|
File.basename(str)[/\A\d{1,}/].to_i
|
82
90
|
end
|
@@ -93,6 +101,11 @@ class Duck_Duck_Duck
|
|
93
101
|
).all.first
|
94
102
|
|
95
103
|
if !rec
|
104
|
+
dir_name = "#{name}/migrates"
|
105
|
+
dir = `find . -iregex ".+/#{dir_name}"`.strip.split("\n")
|
106
|
+
if dir.empty?
|
107
|
+
fail "Directory #{dir_name} does not exist."
|
108
|
+
end
|
96
109
|
rec = DB.fetch(
|
97
110
|
"INSERT INTO #{SCHEMA_TABLE} (name, version) VALUES (upper(:name), :version) RETURNING *",
|
98
111
|
:name=>name, :version=>0
|
@@ -106,7 +119,7 @@ class Duck_Duck_Duck
|
|
106
119
|
rec = init_model_in_schema
|
107
120
|
|
108
121
|
if rec[:version] < 0
|
109
|
-
|
122
|
+
stdout "#{name} has an invalid version: #{rec[:version]}\n"
|
110
123
|
exit 1
|
111
124
|
end
|
112
125
|
|
@@ -122,11 +135,11 @@ class Duck_Duck_Duck
|
|
122
135
|
sql = pair[1]
|
123
136
|
DB << sql
|
124
137
|
DB[" UPDATE #{SCHEMA_TABLE.inspect} SET version = ? WHERE name = upper( ? ); ", ver, name].update
|
125
|
-
|
138
|
+
stdout "#{name} schema is now : #{ver}"
|
126
139
|
}
|
127
140
|
|
128
141
|
if files.empty?
|
129
|
-
|
142
|
+
stdout "#{name} is already the latest: #{rec[:version]}"
|
130
143
|
end
|
131
144
|
end # === def up
|
132
145
|
|
@@ -134,12 +147,12 @@ class Duck_Duck_Duck
|
|
134
147
|
rec = init_model_in_schema
|
135
148
|
|
136
149
|
if rec[:version] == 0
|
137
|
-
|
150
|
+
stdout "#{name} is already the latest: #{rec[:version]}\n"
|
138
151
|
exit 0
|
139
152
|
end
|
140
153
|
|
141
154
|
if rec[:version] < 0
|
142
|
-
|
155
|
+
stdout "#{name} is at invalid version: #{rec[:version]}\n"
|
143
156
|
exit 1
|
144
157
|
end
|
145
158
|
|
@@ -150,7 +163,7 @@ class Duck_Duck_Duck
|
|
150
163
|
}.compact
|
151
164
|
|
152
165
|
if files.empty?
|
153
|
-
|
166
|
+
stdout "#{name} is already the latest: #{rec[:version]}\n"
|
154
167
|
end
|
155
168
|
|
156
169
|
new_ver = nil
|
@@ -161,7 +174,7 @@ class Duck_Duck_Duck
|
|
161
174
|
sql = pair[1]
|
162
175
|
DB << sql
|
163
176
|
DB[" UPDATE #{SCHEMA_TABLE} SET version = ? WHERE name = upper( ? )", ver, name].update
|
164
|
-
|
177
|
+
stdout "#{name} schema is now : #{ver}"
|
165
178
|
}
|
166
179
|
|
167
180
|
end # === def down
|
@@ -183,10 +196,10 @@ class Duck_Duck_Duck
|
|
183
196
|
|
184
197
|
new_file = "#{name}/migrates/#{next_ver}-#{[action, sub_action].compact.join('-')}.sql"
|
185
198
|
File.open(new_file, 'a') do |f|
|
186
|
-
f.
|
199
|
+
f.print "\n\n\n\n-- DOWN\n\n\n\n"
|
187
200
|
end
|
188
201
|
|
189
|
-
|
202
|
+
stdout new_file
|
190
203
|
end # === def create
|
191
204
|
|
192
205
|
|
data/specs/duck_duck_duck.rb
CHANGED
@@ -124,6 +124,13 @@ describe 'up model' do
|
|
124
124
|
first[:version].should == versions('0010_model').last
|
125
125
|
end # === it
|
126
126
|
|
127
|
+
it "fails if folder of model does not exist" do
|
128
|
+
name = "folder_123"
|
129
|
+
should.raise {
|
130
|
+
Exit_0("duck_duck_duck up #{name}")
|
131
|
+
}.message.should =~ /#{name}\/migrates does not exist/i
|
132
|
+
end # === it
|
133
|
+
|
127
134
|
end # === describe up model
|
128
135
|
|
129
136
|
describe 'down model' do
|
@@ -161,6 +168,13 @@ describe 'down model' do
|
|
161
168
|
should == 0
|
162
169
|
end
|
163
170
|
|
171
|
+
it "fails if folder of model does not exist" do
|
172
|
+
name = "folder_321"
|
173
|
+
should.raise {
|
174
|
+
Exit_0("duck_duck_duck down #{name}")
|
175
|
+
}.message.should =~ /#{name}\/migrates does not exist/i
|
176
|
+
end # === it
|
177
|
+
|
164
178
|
end # === describe down model
|
165
179
|
|
166
180
|
describe '-- UP/-- DOWN model' do
|