dibber 0.6.0 → 0.7.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 +5 -5
- data/README.rdoc +12 -6
- data/lib/dibber/seeder.rb +5 -3
- data/lib/dibber/version.rb +3 -1
- data/test/dibber/seeder_test.rb +25 -2
- data/test/not_quite_active_record.rb +3 -3
- metadata +18 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 7ac217e07668aaa17e034576c170a3e7736ea6bdedc5776bc05c197ad0604f1a
|
4
|
+
data.tar.gz: 6b07f8f169bd0e2e9f3cfd0aa9a9c86d4f4a10dba5f75ebeda44ef4c8b507fd0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 25af64ca3571627ccead7c5c873dd72548d6b58997311b22ad3cd459bbd28e78d4238cb17e8dbaf77e2b144dea0b9ecd5a0fae6b4c31519535a794277fc0616a
|
7
|
+
data.tar.gz: abaedc7100af6b56597d4faedced8e17704cddc5212c0e2842ffd293642b357f1653e03d89605636b0917788893cf77d55e40aec677d7c6ae899a3fa86c53bc9
|
data/README.rdoc
CHANGED
@@ -69,6 +69,18 @@ you want the colour of the `foo` thing to be either 'red' or 'yellow', change
|
|
69
69
|
Then when we run `Dibber::Seeder.seed :thing` a new `Thing` will be created
|
70
70
|
with the colour set to either 'red' or 'yellow'.
|
71
71
|
|
72
|
+
=== Using blocks with Seeder
|
73
|
+
|
74
|
+
If you pass a block to `.seed` the block will be called on each object being
|
75
|
+
built as it is created or updated.
|
76
|
+
|
77
|
+
So for example, if Thing has attributes `size` and `big` the following is
|
78
|
+
possible:
|
79
|
+
|
80
|
+
Dibber::Seeder.seed(:thing) do |thing|
|
81
|
+
thing.big = thing.attributes['size'] > 10
|
82
|
+
end
|
83
|
+
|
72
84
|
== Report
|
73
85
|
|
74
86
|
Seeder.report outputs a report detailing start and end time, and a log of how
|
@@ -115,9 +127,3 @@ If you clone this app, you can run this example at the project root:
|
|
115
127
|
There is also an example of process log usage:
|
116
128
|
|
117
129
|
ruby test/examples/process_logs.rb
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
data/lib/dibber/seeder.rb
CHANGED
@@ -8,7 +8,7 @@ module Dibber
|
|
8
8
|
|
9
9
|
class << self
|
10
10
|
|
11
|
-
def seed(klass, args = {})
|
11
|
+
def seed(klass, args = {}, &block)
|
12
12
|
if klass.kind_of?(String) || klass.kind_of?(Symbol)
|
13
13
|
name = klass.to_s.underscore
|
14
14
|
class_name = klass.to_s.strip.classify
|
@@ -17,7 +17,7 @@ module Dibber
|
|
17
17
|
name = klass.to_s.underscore
|
18
18
|
end
|
19
19
|
new_file = "#{name.pluralize}.yml"
|
20
|
-
new(klass, new_file, args).build
|
20
|
+
new(klass, new_file, args).build(&block)
|
21
21
|
end
|
22
22
|
|
23
23
|
def process_log
|
@@ -72,14 +72,16 @@ module Dibber
|
|
72
72
|
def build
|
73
73
|
check_objects_exist
|
74
74
|
start_log
|
75
|
-
objects.
|
75
|
+
objects.map do |name, attributes|
|
76
76
|
object = find_or_initialize_by(name)
|
77
77
|
if overwrite or object.new_record?
|
78
78
|
object.send("#{attribute_method}=", attributes)
|
79
|
+
yield(object) if block_given?
|
79
80
|
unless object.save
|
80
81
|
self.class.errors << object.errors
|
81
82
|
end
|
82
83
|
end
|
84
|
+
object
|
83
85
|
end
|
84
86
|
end
|
85
87
|
|
data/lib/dibber/version.rb
CHANGED
@@ -1,9 +1,11 @@
|
|
1
1
|
module Dibber
|
2
|
-
VERSION = "0.
|
2
|
+
VERSION = "0.7.0"
|
3
3
|
end
|
4
4
|
|
5
5
|
# History
|
6
6
|
# =======
|
7
|
+
# 0.7.0 Adds ability to pass blocks into Seeder.seed and Seed#build
|
8
|
+
#
|
7
9
|
# 0.6.0 ERB parse the source files before passing it to YAML. Allows dynamic
|
8
10
|
# content to be used.
|
9
11
|
#
|
data/test/dibber/seeder_test.rb
CHANGED
@@ -71,12 +71,20 @@ module Dibber
|
|
71
71
|
assert_equal(0, Thing.count)
|
72
72
|
thing_seeder.build
|
73
73
|
assert_equal(2, Thing.count)
|
74
|
-
foo = Thing.find_or_initialize_by(name:
|
74
|
+
foo = Thing.find_or_initialize_by(name: :foo)
|
75
75
|
bar = Thing.find_or_initialize_by(name: :bar)
|
76
76
|
assert_equal([foo, bar], Thing.saved)
|
77
77
|
assert_equal({'title' => 'one'}, foo.attributes)
|
78
78
|
end
|
79
79
|
|
80
|
+
def test_build_with_block
|
81
|
+
other = 'other'
|
82
|
+
thing_seeder.build { |t| t.other_method = other }
|
83
|
+
foo = Thing.find_or_initialize_by(name: :foo)
|
84
|
+
bar = Thing.find_or_initialize_by(name: :bar)
|
85
|
+
assert_equal([foo, bar], Thing.where(other_method: other))
|
86
|
+
end
|
87
|
+
|
80
88
|
def test_rebuilding_does_not_overwrite
|
81
89
|
test_build
|
82
90
|
attributes = {'title' => 'something else'}
|
@@ -138,7 +146,22 @@ module Dibber
|
|
138
146
|
assert_equal({'title' => 'one'}, foo.attributes)
|
139
147
|
end
|
140
148
|
|
141
|
-
|
149
|
+
def test_seed_with_block
|
150
|
+
other = 'other'
|
151
|
+
Seeder.seed(:things) { |thing| thing.other_method = other }
|
152
|
+
foo = Thing.find_or_initialize_by(name: :foo)
|
153
|
+
bar = Thing.find_or_initialize_by(name: :bar)
|
154
|
+
assert_equal([foo, bar], Thing.where(other_method: other))
|
155
|
+
end
|
156
|
+
|
157
|
+
def test_seed_with_block_using_attributes
|
158
|
+
other = 'other'
|
159
|
+
Seeder.seed(:things) { |thing| thing.other_method = thing.attributes['title'] }
|
160
|
+
foo = Thing.find_or_initialize_by(name: :foo)
|
161
|
+
assert_equal('one', foo.other_method)
|
162
|
+
end
|
163
|
+
|
164
|
+
def test_seed_with_alternative_name_method
|
142
165
|
Seeder.seed(:things, :name_method => 'other_method')
|
143
166
|
assert_equal(2, Thing.count)
|
144
167
|
foo = Thing.find_or_initialize_by(other_method: :foo)
|
@@ -7,7 +7,7 @@ class NotQuiteActiveRecord
|
|
7
7
|
extract_attributes
|
8
8
|
self.class.members << self
|
9
9
|
end
|
10
|
-
|
10
|
+
|
11
11
|
def extract_attributes
|
12
12
|
attributes.each do |name, value|
|
13
13
|
self.send("#{name}=", value.to_s) if self.respond_to?(name.to_sym)
|
@@ -22,11 +22,11 @@ class NotQuiteActiveRecord
|
|
22
22
|
def new_record?
|
23
23
|
!self.class.saved.include? self
|
24
24
|
end
|
25
|
-
|
25
|
+
|
26
26
|
def self.where(hash)
|
27
27
|
members.select{|m| hash.collect{|k, v| m.send(k) == v.to_s}.uniq == [true]}
|
28
28
|
end
|
29
|
-
|
29
|
+
|
30
30
|
def self.find_or_initialize_by(hash)
|
31
31
|
if exists?(hash)
|
32
32
|
where(hash).first
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dibber
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rob Nichols
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-09-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -28,16 +28,16 @@ dependencies:
|
|
28
28
|
name: minitest
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '0'
|
41
41
|
description: Packages up code needed to pull data from YAML files when seeding, and
|
42
42
|
adds a process log.
|
43
43
|
email:
|
@@ -78,7 +78,7 @@ files:
|
|
78
78
|
- test/test_helper.rb
|
79
79
|
homepage: https://github.com/reggieb/Dibber
|
80
80
|
licenses:
|
81
|
-
- MIT
|
81
|
+
- MIT
|
82
82
|
metadata: {}
|
83
83
|
post_install_message:
|
84
84
|
rdoc_options: []
|
@@ -95,32 +95,31 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
97
|
requirements: []
|
98
|
-
|
99
|
-
rubygems_version: 2.4.8
|
98
|
+
rubygems_version: 3.3.22
|
100
99
|
signing_key:
|
101
100
|
specification_version: 4
|
102
101
|
summary: Tool for seeding database from YAML.
|
103
102
|
test_files:
|
104
|
-
- test/dibber/thing.rb
|
105
|
-
- test/dibber/seeder_test.rb
|
106
103
|
- test/dibber/dynamic_thing_test.rb
|
107
104
|
- test/dibber/foo/bar.rb
|
108
105
|
- test/dibber/process_log_test.rb
|
109
|
-
- test/dibber/
|
106
|
+
- test/dibber/seeder_test.rb
|
110
107
|
- test/dibber/seeds/dynamic_things.yml
|
111
108
|
- test/dibber/seeds/empty.yml
|
112
109
|
- test/dibber/seeds/foo/bars.yml
|
113
110
|
- test/dibber/seeds/things.yml
|
114
|
-
- test/
|
115
|
-
- test/
|
116
|
-
- test/examples/models/fee.rb
|
117
|
-
- test/examples/models/disclaimer.rb
|
111
|
+
- test/dibber/thing.rb
|
112
|
+
- test/dibber/thing_test.rb
|
118
113
|
- test/examples/models/admin_user.rb
|
114
|
+
- test/examples/models/borough.rb
|
119
115
|
- test/examples/models/category.rb
|
120
|
-
- test/examples/
|
116
|
+
- test/examples/models/disclaimer.rb
|
117
|
+
- test/examples/models/fee.rb
|
118
|
+
- test/examples/process_logs.rb
|
121
119
|
- test/examples/seeds/boroughs.yml
|
122
|
-
- test/examples/seeds/fees.yml
|
123
120
|
- test/examples/seeds/categories.yml
|
124
121
|
- test/examples/seeds/disclaimer/documents.yml
|
125
|
-
- test/
|
122
|
+
- test/examples/seeds/fees.yml
|
123
|
+
- test/examples/seeds.rb
|
126
124
|
- test/not_quite_active_record.rb
|
125
|
+
- test/test_helper.rb
|