dbd4 1.0.2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
- newFile.puts <<"MIGRATIONFILE"
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
- @elements[etype].delete(dname)
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
- @elements[etype].delete(dname)
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
- @elements.each do |k1, v1|
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
- puts "Updating model #{@modelname} (file : #{@modelfile})..."
271
- newFile = File.open(@modelfile, "w")
272
- newFile.puts @lines
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
@@ -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.2
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: