duck_duck_duck 4.0.0 → 4.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|