model-builder 2.1.0 → 2.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 43d4553c2249d1ed6c3191c3177246b5cb3afb1e
4
- data.tar.gz: e55a8406071a5161677595830d4aa6030721bbc1
3
+ metadata.gz: c2583711abc52652aa9cc69ef15f9562a291c7a2
4
+ data.tar.gz: 65e5037c934f0b60e7e739fa7d84b345e36d3c49
5
5
  SHA512:
6
- metadata.gz: 61b3c213aead2ae4b7ed17ac861e04ff06cf55a403beba99eefb1233e8a42331c1f9b32632f4f79796137021f79d5a6f5fff6fadaa8d2d0bb3460d05b9ad9c75
7
- data.tar.gz: ac98d9910802a38209c7078a90f821a338cb37144fb6bddf855e4d0a15053d4b60bb6cab5adbece32f0df835c7e74c256cc66b0a5b4e3c6af91d624d84019c38
6
+ metadata.gz: 7aa46d725a9c5eafd7b17ae90915faa58a1cac85079201953a404fb96d01497f3a7a4ebf2e18708769ab4c22655d832cf495172daccfd4cad296ab2dd9d964c0
7
+ data.tar.gz: 29d785d220246d6bb8eaa67552f9091d4214554112363fd6174df42d1527033055d5858fd1c5c4a61ca7ec4e42bf0454edce4de7ea706b157fa2710679d3b427
data/.gitignore CHANGED
@@ -4,6 +4,7 @@
4
4
  log/*
5
5
  tmp/*
6
6
  rdoc/*
7
+ doc/*
7
8
  *~
8
9
  *.lock
9
10
  *.DS_Store
data/README.rdoc CHANGED
@@ -61,6 +61,11 @@ See full test examples here[https://github.com/r4z3c/model-builder/blob/master/s
61
61
 
62
62
  == Changelog
63
63
 
64
+ === 2.2.0
65
+
66
+ - Bug fixes and improvements for creating/dropping tables
67
+ - Bug fixes and improvements for cleaning strategy: now you should call 'clean' methods in 'before :all' instead of 'before :each'
68
+
64
69
  === 2.1.0
65
70
 
66
71
  - Improving support to namespaced classes/models. Now the builder accepts:
@@ -69,7 +69,11 @@ module ModelBuilder
69
69
  end
70
70
 
71
71
  def self.clean
72
- dynamic_classes.each_pair { |mod, klass| mod.send :remove_const, klass.to_s.gsub(/^.*::/, '') }
72
+ dynamic_classes.each_pair do |mod, klass|
73
+ class_name = klass.to_s.gsub(/^.*::/, '')
74
+ return if !Object.const_defined?(mod.to_s) or !mod.const_defined?(class_name)
75
+ mod.send :remove_const, class_name
76
+ end
73
77
  @@dynamic_classes = {}
74
78
  end
75
79
 
@@ -1,3 +1,3 @@
1
1
  module ModelBuilder
2
- VERSION = '2.1.0'
2
+ VERSION = '2.2.0'
3
3
  end
data/lib/model_builder.rb CHANGED
@@ -7,10 +7,9 @@ module ModelBuilder
7
7
  def self.build(class_full_name, opts={})
8
8
  opts.reverse_merge! get_default_options
9
9
 
10
- already_exists = Object.const_defined? class_full_name
11
10
  klass = ClassBuilder.build class_full_name, opts
12
11
 
13
- unless already_exists
12
+ unless table_already_exists class_full_name
14
13
  create_table class_full_name, opts
15
14
  define_validations klass, opts[:validates]
16
15
  end
@@ -25,8 +24,16 @@ module ModelBuilder
25
24
  }
26
25
  end
27
26
 
27
+ def self.table_already_exists(class_full_name)
28
+ ActiveRecord::Base.connection.tables.include? table_name_for(class_full_name)
29
+ end
30
+
31
+ def self.table_name_for(class_full_name)
32
+ class_full_name.tableize.gsub(/\//,'_')
33
+ end
34
+
28
35
  def self.create_table(class_full_name, opts)
29
- ActiveRecord::Migration.create_table(class_full_name.tableize) do |migration|
36
+ ActiveRecord::Migration.create_table(table_name_for(class_full_name)) do |migration|
30
37
  create_attributes(migration, opts[:attributes])
31
38
  end
32
39
 
@@ -59,7 +66,6 @@ module ModelBuilder
59
66
  def self.clean
60
67
  dynamic_models.map {|c| drop_table c }
61
68
  @@dynamic_models = []
62
- ClassBuilder.clean
63
69
  end
64
70
 
65
71
  def self.dynamic_models
@@ -67,7 +73,7 @@ module ModelBuilder
67
73
  end
68
74
 
69
75
  def self.drop_table(class_full_name)
70
- ActiveRecord::Migration.drop_table(class_full_name.tableize)
76
+ ActiveRecord::Migration.drop_table(table_name_for(class_full_name))
71
77
  end
72
78
 
73
79
  end
@@ -18,7 +18,7 @@ describe NameUtils do
18
18
  populate_mappable_names_table
19
19
  end
20
20
 
21
- after { ModelBuilder.clean }
21
+ after(:all) { ModelBuilder.clean }
22
22
 
23
23
  subject { MappableName.map_all_names }
24
24
 
@@ -14,7 +14,7 @@ describe ModelBuilder::ClassBuilder do
14
14
 
15
15
  before { @build_result = builder.build name, options }
16
16
 
17
- after { ModelBuilder::ClassBuilder.clean }
17
+ after(:all) { ModelBuilder::ClassBuilder.clean }
18
18
 
19
19
  describe '.build' do
20
20
 
@@ -29,7 +29,7 @@ describe ModelBuilder do
29
29
 
30
30
  before { @build_result = builder.build name, options }
31
31
 
32
- after { ModelBuilder.clean }
32
+ after(:all) { ModelBuilder.clean }
33
33
 
34
34
  describe '.build' do
35
35
 
@@ -89,14 +89,6 @@ describe ModelBuilder do
89
89
 
90
90
  it { expect(constant.all.count).to eq 0 }
91
91
 
92
- context 'after build' do
93
-
94
- before { builder.clean }
95
- it { expect{constant}.to raise_error(NameError, "uninitialized constant #{name}") }
96
- it { expect(builder.dynamic_models.empty?).to be true }
97
-
98
- end
99
-
100
92
  end
101
93
 
102
94
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: model-builder
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - r4z3c
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-11 00:00:00.000000000 Z
11
+ date: 2016-05-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler