dbd4 1.0.2 → 1.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/dbd4/rails_migration_file.rb +8 -4
- data/lib/dbd4/rails_model_file.rb +18 -7
- data/tests/unit/test_dbd4.rb +49 -3
- metadata +3 -3
@@ -96,11 +96,8 @@ module DBD4
|
|
96
96
|
|
97
97
|
def update(table)
|
98
98
|
raise "MigrationFile : migration file name not given" if ! @migrationfile
|
99
|
-
|
100
|
-
puts "Updating migration file for table #{@tablename} (file : #{@migrationfile})..."
|
101
|
-
newFile = File.open(@migrationfile, "w")
|
102
99
|
c = Inflector.camelize(@tablename)
|
103
|
-
|
100
|
+
new_migration_file_content = <<"MIGRATIONFILE"
|
104
101
|
class Create#{c} < ActiveRecord::Migration
|
105
102
|
def self.up
|
106
103
|
create_table :#{table.name} do |t|
|
@@ -113,6 +110,13 @@ class Create#{c} < ActiveRecord::Migration
|
|
113
110
|
end
|
114
111
|
end
|
115
112
|
MIGRATIONFILE
|
113
|
+
|
114
|
+
old_migration_file_content = IO.readlines(@migrationfile).join("")
|
115
|
+
if (old_migration_file_content != new_migration_file_content)
|
116
|
+
puts "Updating migration file for table #{@tablename} (file : #{@migrationfile})..."
|
117
|
+
newFile = File.open(@migrationfile, "w")
|
118
|
+
newFile.puts new_migration_file_content
|
119
|
+
end
|
116
120
|
end
|
117
121
|
|
118
122
|
def to_str
|
@@ -22,6 +22,8 @@
|
|
22
22
|
#--
|
23
23
|
|
24
24
|
require 'slurp'
|
25
|
+
require 'deep_clone'
|
26
|
+
include DeepClone
|
25
27
|
|
26
28
|
module DBD4
|
27
29
|
class RailsModelFile
|
@@ -77,6 +79,7 @@ module DBD4
|
|
77
79
|
|
78
80
|
@content = IO.read(@modelfile) if ! @content
|
79
81
|
@lines = IO.readlines(@modelfile) if @lines.empty?
|
82
|
+
@original_lines = Array.new(@lines)
|
80
83
|
|
81
84
|
raise "ModelFile : Cannot load, no content was given" if ! @content
|
82
85
|
|
@@ -176,6 +179,8 @@ module DBD4
|
|
176
179
|
raise "ModelFile : model file name not given" if ! @modelfile
|
177
180
|
raise "ModelFile : no content given" if @content == nil
|
178
181
|
|
182
|
+
left_over = @elements.deep_clone
|
183
|
+
|
179
184
|
table.relation_starts.each_value do |r|
|
180
185
|
dname = ""
|
181
186
|
if r.type == :one2one
|
@@ -204,7 +209,7 @@ module DBD4
|
|
204
209
|
else
|
205
210
|
@lines[element[:start]].sub!(/(#{etype}[^,]+)/, "\\1, :as => '#{r.destination_column.polymorphic}'")
|
206
211
|
end
|
207
|
-
|
212
|
+
left_over[etype].delete(dname)
|
208
213
|
else
|
209
214
|
@lines[@elements['class'][:start]] += " #{etype} :#{dname}"
|
210
215
|
if r.destination_column.polymorphic
|
@@ -245,17 +250,18 @@ module DBD4
|
|
245
250
|
# do nothing
|
246
251
|
end
|
247
252
|
end
|
248
|
-
|
253
|
+
left_over[etype].delete(dname)
|
249
254
|
else
|
250
255
|
@lines[@elements['class'][:start]] += " #{etype} :#{dname}"
|
251
256
|
if r.destination_column.polymorphic
|
257
|
+
@elements[etype] = { dname => { :polymorphic => true, :added => true } }
|
252
258
|
@lines[@elements['class'][:start]] += ", :polymorphic => true"
|
253
259
|
end
|
254
|
-
@lines[@elements['class'][:start]] += "\n"
|
260
|
+
@lines[@elements['class'][:start]] += "\n"
|
255
261
|
end
|
256
262
|
end
|
257
263
|
|
258
|
-
|
264
|
+
left_over.each do |k1, v1|
|
259
265
|
next if k1 == 'class' or v1.empty?
|
260
266
|
v1.each do |k2, v2|
|
261
267
|
@warnings << "Warning in file #{@modelfile} at line #{v2[:start]}"
|
@@ -267,9 +273,14 @@ module DBD4
|
|
267
273
|
end
|
268
274
|
end
|
269
275
|
|
270
|
-
|
271
|
-
|
272
|
-
|
276
|
+
# If we made a change to the document, generate it
|
277
|
+
original_document_modified = @lines <=> @original_lines
|
278
|
+
|
279
|
+
if (original_document_modified != 0)
|
280
|
+
puts "Updating model #{@modelname} (file : #{@modelfile})..."
|
281
|
+
newFile = File.open(@modelfile, "w")
|
282
|
+
newFile.puts @lines
|
283
|
+
end
|
273
284
|
end
|
274
285
|
|
275
286
|
def to_str
|
data/tests/unit/test_dbd4.rb
CHANGED
@@ -3,6 +3,7 @@ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), "..", "..", "lib")
|
|
3
3
|
require 'dbd4/dbd4_model_file'
|
4
4
|
require 'test/unit'
|
5
5
|
require 'deep_clone'
|
6
|
+
require 'pp'
|
6
7
|
|
7
8
|
include DeepClone
|
8
9
|
|
@@ -20,7 +21,23 @@ $files = {
|
|
20
21
|
'app/models/jobs_person.rb' => "class JobsPerson < ActiveRecord::Base\nend\n",
|
21
22
|
'app/models/dog.rb' => "class Dog < ActiveRecord::Base\nend\n",
|
22
23
|
'app/models/kid.rb' => "class Kid < ActiveRecord::Base\nend\n",
|
23
|
-
'app/models/house.rb' => "class House < ActiveRecord::Base\nend\n"
|
24
|
+
'app/models/house.rb' => "class House < ActiveRecord::Base\nend\n",
|
25
|
+
'db/migrate/001_create_cats.rb' => "",
|
26
|
+
'db/migrate/001_create_cats.rb' => "",
|
27
|
+
'db/migrate/001_create_cats.rb' => "",
|
28
|
+
'db/migrate/002_create_computers_users.rb' => "",
|
29
|
+
'db/migrate/003_create_computers.rb' => "",
|
30
|
+
'db/migrate/004_create_people.rb' => "",
|
31
|
+
'db/migrate/005_create_users.rb' => "",
|
32
|
+
'db/migrate/006_create_security_numbers.rb' => "",
|
33
|
+
'db/migrate/007_create_jobs.rb' => "",
|
34
|
+
'db/migrate/008_create_jobs_people.rb' => "",
|
35
|
+
'db/migrate/009_create_generic_animals.rb' => "",
|
36
|
+
'db/migrate/010_create_shoes.rb' => "",
|
37
|
+
'db/migrate/011_create_wives.rb' => "",
|
38
|
+
'db/migrate/012_create_dogs.rb' => "",
|
39
|
+
'db/migrate/013_create_kids.rb' => "",
|
40
|
+
'db/migrate/014_create_houses.rb' => ""
|
24
41
|
}
|
25
42
|
|
26
43
|
$files_written_to = Array.new
|
@@ -189,7 +206,21 @@ INPUT
|
|
189
206
|
'app/models/jobs_person.rb' => "class JobsPerson < ActiveRecord::Base\nend\n",
|
190
207
|
'app/models/dog.rb' => "class Dog < ActiveRecord::Base\nend\n",
|
191
208
|
'app/models/kid.rb' => "class Kid < ActiveRecord::Base\nend\n",
|
192
|
-
'app/models/house.rb' => "class House < ActiveRecord::Base\nend\n"
|
209
|
+
'app/models/house.rb' => "class House < ActiveRecord::Base\nend\n",
|
210
|
+
'db/migrate/001_create_cats.rb' => "",
|
211
|
+
'db/migrate/002_create_computers_users.rb' => "",
|
212
|
+
'db/migrate/003_create_computers.rb' => "",
|
213
|
+
'db/migrate/004_create_people.rb' => "",
|
214
|
+
'db/migrate/005_create_users.rb' => "",
|
215
|
+
'db/migrate/006_create_security_numbers.rb' => "",
|
216
|
+
'db/migrate/007_create_jobs.rb' => "",
|
217
|
+
'db/migrate/008_create_jobs_people.rb' => "",
|
218
|
+
'db/migrate/009_create_generic_animals.rb' => "",
|
219
|
+
'db/migrate/010_create_shoes.rb' => "",
|
220
|
+
'db/migrate/011_create_wives.rb' => "",
|
221
|
+
'db/migrate/012_create_dogs.rb' => "",
|
222
|
+
'db/migrate/013_create_kids.rb' => "",
|
223
|
+
'db/migrate/014_create_houses.rb' => ""
|
193
224
|
}
|
194
225
|
@b.generateModelFiles
|
195
226
|
#puts $files_written_to
|
@@ -226,7 +257,22 @@ INPUT
|
|
226
257
|
'app/models/jobs_person.rb' => "class JobsPerson < ActiveRecord::Base\nend\n",
|
227
258
|
'app/models/dog.rb' => "class Dog < ActiveRecord::Base\n has_many :generic_animals, :as => gogole\nend\n",
|
228
259
|
'app/models/kid.rb' => "class Kid < ActiveRecord::Base\nend\n",
|
229
|
-
'app/models/house.rb' => "class House < ActiveRecord::Base\nend\n"
|
260
|
+
'app/models/house.rb' => "class House < ActiveRecord::Base\nend\n",
|
261
|
+
'db/migrate/001_create_cats.rb' => "",
|
262
|
+
'db/migrate/001_create_cats.rb' => "",
|
263
|
+
'db/migrate/002_create_computers_users.rb' => "",
|
264
|
+
'db/migrate/003_create_computers.rb' => "",
|
265
|
+
'db/migrate/004_create_people.rb' => "",
|
266
|
+
'db/migrate/005_create_users.rb' => "",
|
267
|
+
'db/migrate/006_create_security_numbers.rb' => "",
|
268
|
+
'db/migrate/007_create_jobs.rb' => "",
|
269
|
+
'db/migrate/008_create_jobs_people.rb' => "",
|
270
|
+
'db/migrate/009_create_generic_animals.rb' => "",
|
271
|
+
'db/migrate/010_create_shoes.rb' => "",
|
272
|
+
'db/migrate/011_create_wives.rb' => "",
|
273
|
+
'db/migrate/012_create_dogs.rb' => "",
|
274
|
+
'db/migrate/013_create_kids.rb' => "",
|
275
|
+
'db/migrate/014_create_houses.rb' => ""
|
230
276
|
}
|
231
277
|
|
232
278
|
$files_written_to = Array.new
|
metadata
CHANGED
@@ -3,7 +3,7 @@ rubygems_version: 0.9.0
|
|
3
3
|
specification_version: 1
|
4
4
|
name: dbd4
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 1.0.
|
6
|
+
version: 1.0.3
|
7
7
|
date: 2006-08-23 00:00:00 -04:00
|
8
8
|
summary: A package for importing DB Designer 4 xml models in rails.
|
9
9
|
require_paths:
|
@@ -30,10 +30,10 @@ authors:
|
|
30
30
|
- Daniel Shane
|
31
31
|
files:
|
32
32
|
- lib/slurp.rb
|
33
|
-
- lib/dbd4/dbd4_model_file.rb
|
34
|
-
- lib/dbd4/ordered_hash.rb
|
35
33
|
- lib/dbd4/rails_migration_file.rb
|
36
34
|
- lib/dbd4/rails_model_file.rb
|
35
|
+
- lib/dbd4/dbd4_model_file.rb
|
36
|
+
- lib/dbd4/ordered_hash.rb
|
37
37
|
- bin/dbd4
|
38
38
|
- README
|
39
39
|
test_files:
|