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 +4 -4
- data/.gitignore +1 -0
- data/README.rdoc +5 -0
- data/lib/model_builder/class_builder.rb +5 -1
- data/lib/model_builder/version.rb +1 -1
- data/lib/model_builder.rb +11 -5
- data/spec/examples/name_utils_spec.rb +1 -1
- data/spec/lib/model_builder/class_builder_spec.rb +1 -1
- data/spec/lib/model_builder_spec.rb +1 -9
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c2583711abc52652aa9cc69ef15f9562a291c7a2
|
4
|
+
data.tar.gz: 65e5037c934f0b60e7e739fa7d84b345e36d3c49
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7aa46d725a9c5eafd7b17ae90915faa58a1cac85079201953a404fb96d01497f3a7a4ebf2e18708769ab4c22655d832cf495172daccfd4cad296ab2dd9d964c0
|
7
|
+
data.tar.gz: 29d785d220246d6bb8eaa67552f9091d4214554112363fd6174df42d1527033055d5858fd1c5c4a61ca7ec4e42bf0454edce4de7ea706b157fa2710679d3b427
|
data/.gitignore
CHANGED
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
|
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
|
|
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
|
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
|
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
|
76
|
+
ActiveRecord::Migration.drop_table(table_name_for(class_full_name))
|
71
77
|
end
|
72
78
|
|
73
79
|
end
|
@@ -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.
|
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
|
+
date: 2016-05-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|