dibber 0.5.0 → 0.6.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: df49d47736e3cf6e58a22a2b84d77e76912c8d32
4
- data.tar.gz: 03277a6b8d5f532f6ba343bfba8dc71a789785ee
3
+ metadata.gz: 4e8e76d2b2715019b02b55446e6445a4f12fd16c
4
+ data.tar.gz: f4fd83aabdc6286b9c3a64b2fa50ce017eff50fe
5
5
  SHA512:
6
- metadata.gz: 330909b6d4fe39385438b0eda1984c7f1f9571cae69eeba9732bd0927ae9d027ea0f4a6b7fa6324991d446158f89373235bf34c3685f92097cf41e50e0eb4f0f
7
- data.tar.gz: 627b1582b890c6721a35f969c15c338372b1f96aa445e48af4ff4f3a12f9d56690a088557a5034c1c2ba44a32c5f0e7da6a59dbb9dbcffe9ce8235f5fcfd7619
6
+ metadata.gz: d8bfef835c9cf35d2f556e4c731b3e0a396faacc1e7a5e3061b3b9b8d6b9a10efb96ae1d00b1a54aa5c853548eabfa325bd778771ce6d41aa13c97a874ac582b
7
+ data.tar.gz: 18dabf89066e0cf69f0763ebfee6ac333af2e27a932bb68003bb09f869911d3ec6e28b73a7f480298ba49e151555b44445f7ea86c3a19368504c35cf47823bf9
@@ -48,6 +48,27 @@ You'll then be able to do this:
48
48
  thing = Thing.find_by(name: 'foo')
49
49
  thing.colour ---> 'red'
50
50
 
51
+ === Pass the name of the class to seed
52
+
53
+ All of these are equivalent commands
54
+
55
+ Dibber::Seeder.seed Thing
56
+ Dibber::Seeder.seed :thing
57
+ Dibber::Seeder.seed 'Thing'
58
+
59
+ === Dynamic content
60
+
61
+ Seed content can also have dynamic content added via ERB. For example, if
62
+ you want the colour of the `foo` thing to be either 'red' or 'yellow', change
63
+ `db/seeds/things.yml` to
64
+
65
+ foo:
66
+ colour: <%= ['red', 'yellow'].sample %>
67
+ size: large
68
+
69
+ Then when we run `Dibber::Seeder.seed :thing` a new `Thing` will be created
70
+ with the colour set to either 'red' or 'yellow'.
71
+
51
72
  == Report
52
73
 
53
74
  Seeder.report outputs a report detailing start and end time, and a log of how
@@ -1,5 +1,6 @@
1
1
  require 'active_support/inflector'
2
2
  require 'yaml'
3
+ require 'erb'
3
4
 
4
5
  module Dibber
5
6
  class Seeder
@@ -9,7 +10,7 @@ module Dibber
9
10
 
10
11
  def seed(klass, args = {})
11
12
  if klass.kind_of?(String) || klass.kind_of?(Symbol)
12
- name = klass.to_s
13
+ name = klass.to_s.underscore
13
14
  class_name = klass.to_s.strip.classify
14
15
  klass = Kernel.const_get(class_name)
15
16
  else
@@ -39,7 +40,15 @@ module Dibber
39
40
  end
40
41
 
41
42
  def objects_from(file)
42
- YAML.load_file("#{seeds_path}#{file}")
43
+ YAML.load erb_processed(file_content(file))
44
+ end
45
+
46
+ def erb_processed(content)
47
+ ERB.new(content).result
48
+ end
49
+
50
+ def file_content(file)
51
+ File.read File.join(seeds_path, file)
43
52
  end
44
53
 
45
54
  def seeds_path
@@ -130,4 +139,4 @@ module Dibber
130
139
  end
131
140
 
132
141
  end
133
- end
142
+ end
@@ -1,9 +1,12 @@
1
1
  module Dibber
2
- VERSION = "0.5.0"
2
+ VERSION = "0.6.0"
3
3
  end
4
4
 
5
5
  # History
6
6
  # =======
7
+ # 0.6.0 ERB parse the source files before passing it to YAML. Allows dynamic
8
+ # content to be used.
9
+ #
7
10
  # 0.5.0 Allow the `Seeder.seed` method to take a Class or the string/symbol
8
11
  # representation of the class name.
9
12
  #
@@ -0,0 +1,18 @@
1
+ require 'test_helper'
2
+ require_relative 'thing'
3
+
4
+ module Dibber
5
+ class DynamicThingTest < Minitest::Test
6
+
7
+ def setup
8
+ Seeder.seeds_path = File.join(File.dirname(__FILE__), 'seeds')
9
+ end
10
+
11
+
12
+ def test_objects_from
13
+ hash = Seeder.objects_from('dynamic_things.yml')
14
+ assert_equal 'something', hash['one']['title']
15
+ end
16
+
17
+ end
18
+ end
@@ -38,7 +38,7 @@ module Dibber
38
38
  def test_clear_process_log
39
39
  test_monitor
40
40
  Seeder.clear_process_log
41
- assert_equal(nil, Seeder.process_log.raw[:things])
41
+ assert_nil Seeder.process_log.raw[:things], "Log should be empty"
42
42
  end
43
43
 
44
44
  def test_seeds_path
@@ -179,7 +179,17 @@ module Dibber
179
179
  assert_equal({'title' => 'one'}, foo.attributes)
180
180
  end
181
181
 
182
- def test_seed_with_class_with_alternative_name_method
182
+ def test_seed_with_class_name
183
+ assert_equal(0, Thing.count)
184
+ Seeder.seed('Thing')
185
+ assert_equal(2, Thing.count)
186
+ foo = Thing.find_or_initialize_by(name: :foo)
187
+ bar = Thing.find_or_initialize_by(name: :bar)
188
+ assert_equal([foo, bar], Thing.saved)
189
+ assert_equal({'title' => 'one'}, foo.attributes)
190
+ end
191
+
192
+ def test_seed_with_class_with_alternative_name_method
183
193
  Seeder.seed(Thing, :name_method => 'other_method')
184
194
  assert_equal(2, Thing.count)
185
195
  foo = Thing.find_or_initialize_by(other_method: :foo)
@@ -244,7 +254,7 @@ module Dibber
244
254
  end
245
255
 
246
256
  def thing_file_path
247
- File.join(File.dirname(__FILE__),'seeds', 'things.yml')
257
+ File.join(File.dirname(__FILE__), 'seeds', 'things.yml')
248
258
  end
249
259
  end
250
260
 
@@ -0,0 +1,2 @@
1
+ one:
2
+ title: <%= 'something' %>
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.5.0
4
+ version: 0.6.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: 2016-04-29 00:00:00.000000000 Z
11
+ date: 2017-03-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -53,9 +53,11 @@ files:
53
53
  - lib/dibber/process_log.rb
54
54
  - lib/dibber/seeder.rb
55
55
  - lib/dibber/version.rb
56
+ - test/dibber/dynamic_thing_test.rb
56
57
  - test/dibber/foo/bar.rb
57
58
  - test/dibber/process_log_test.rb
58
59
  - test/dibber/seeder_test.rb
60
+ - test/dibber/seeds/dynamic_things.yml
59
61
  - test/dibber/seeds/empty.yml
60
62
  - test/dibber/seeds/foo/bars.yml
61
63
  - test/dibber/seeds/things.yml
@@ -99,24 +101,26 @@ signing_key:
99
101
  specification_version: 4
100
102
  summary: Tool for seeding database from YAML.
101
103
  test_files:
102
- - test/dibber/foo/bar.rb
103
- - test/dibber/seeder_test.rb
104
104
  - test/dibber/thing.rb
105
+ - test/dibber/seeder_test.rb
106
+ - test/dibber/dynamic_thing_test.rb
107
+ - test/dibber/foo/bar.rb
105
108
  - test/dibber/process_log_test.rb
109
+ - test/dibber/thing_test.rb
110
+ - test/dibber/seeds/dynamic_things.yml
111
+ - test/dibber/seeds/empty.yml
106
112
  - test/dibber/seeds/foo/bars.yml
107
113
  - test/dibber/seeds/things.yml
108
- - test/dibber/seeds/empty.yml
109
- - test/dibber/thing_test.rb
110
- - test/examples/seeds.rb
114
+ - test/examples/process_logs.rb
111
115
  - test/examples/models/borough.rb
112
- - test/examples/models/disclaimer.rb
113
- - test/examples/models/category.rb
114
116
  - test/examples/models/fee.rb
117
+ - test/examples/models/disclaimer.rb
115
118
  - test/examples/models/admin_user.rb
119
+ - test/examples/models/category.rb
120
+ - test/examples/seeds.rb
121
+ - test/examples/seeds/boroughs.yml
116
122
  - test/examples/seeds/fees.yml
117
123
  - test/examples/seeds/categories.yml
118
124
  - test/examples/seeds/disclaimer/documents.yml
119
- - test/examples/seeds/boroughs.yml
120
- - test/examples/process_logs.rb
121
- - test/not_quite_active_record.rb
122
125
  - test/test_helper.rb
126
+ - test/not_quite_active_record.rb