dbd4 1.0.2 → 1.0.3

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.
@@ -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: