seedomatic 0.1.2 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/seedomatic/runner.rb +7 -8
- data/lib/seedomatic/version.rb +1 -1
- data/readme.markdown +10 -3
- data/spec/lib/seed_o_matic_spec.rb +21 -0
- data/spec/support/multiple_models.yml +8 -0
- data/spec/support/single_model.json +7 -0
- metadata +7 -3
data/lib/seedomatic/runner.rb
CHANGED
@@ -10,8 +10,10 @@ module SeedOMatic
|
|
10
10
|
files_to_import(opts).each do |file|
|
11
11
|
file_info = load_file(file)
|
12
12
|
|
13
|
-
|
14
|
-
|
13
|
+
file_info.each do |f|
|
14
|
+
if should_import?(opts, f)
|
15
|
+
results[f[:model_name]] = Seeder.new(f).import
|
16
|
+
end
|
15
17
|
end
|
16
18
|
end
|
17
19
|
|
@@ -35,12 +37,9 @@ module SeedOMatic
|
|
35
37
|
end
|
36
38
|
|
37
39
|
def load_file(file)
|
38
|
-
data = YAML.load_file(file)
|
39
|
-
|
40
|
-
|
41
|
-
:match_on => data.first[1]['match_on'],
|
42
|
-
:items => data.first[1]['items']
|
43
|
-
}
|
40
|
+
data = YAML.load_file(file).map do |k, v|
|
41
|
+
v.merge(:model_name => k).with_indifferent_access
|
42
|
+
end
|
44
43
|
end
|
45
44
|
|
46
45
|
end
|
data/lib/seedomatic/version.rb
CHANGED
data/readme.markdown
CHANGED
@@ -1,9 +1,7 @@
|
|
1
1
|
# Seed-O-Matic
|
2
2
|
*Run repeatable seeds across a variety of environments*
|
3
3
|
|
4
|
-
Seeds are great, but they're usually written in a way that they can only be used on an initial deploy. Seed-O-Matic gives
|
5
|
-
you tools to specify seed data in a way that's repeatable across environments, allowing you to change seed data in a safe
|
6
|
-
way between all of your environments.
|
4
|
+
Seeds and db:fixture:load are great, but they're usually written in a way that they can only be used on an initial deploy. Seed-O-Matic gives you tools to specify seed data in a way that's repeatable across environments, allowing you to change seed data in a safe way between all of your environments.
|
7
5
|
|
8
6
|
## Seed Files
|
9
7
|
Seed files are set up as YAML files. By default, Seed-O-Matic will look for seed files in `config/seeds`, although you can
|
@@ -17,6 +15,15 @@ specify another directory when you run your seeds. Here's the structure of a typ
|
|
17
15
|
code: my_model
|
18
16
|
- name: My Model 2
|
19
17
|
code: my_model_2
|
18
|
+
other_model:
|
19
|
+
match_on: [code, category]
|
20
|
+
items:
|
21
|
+
- name: Other Model 1
|
22
|
+
code: om_1
|
23
|
+
category: a
|
24
|
+
- name: Other Model 2
|
25
|
+
code: om_2
|
26
|
+
category: b
|
20
27
|
|
21
28
|
* The seed file starts with a *model name*. This should match the name of a model in your application.
|
22
29
|
* The *items* array lists all the items you'd like to seed. Attribute names should match the name of your attributes.
|
@@ -30,6 +30,27 @@ describe SeedOMatic do
|
|
30
30
|
context "no options (assumed config / seeds directory)" do
|
31
31
|
|
32
32
|
end
|
33
|
+
|
34
|
+
describe "multiple records in a file" do
|
35
|
+
let(:opts) { { :file => 'spec/support/multiple_models.yml'} }
|
36
|
+
|
37
|
+
specify {
|
38
|
+
SeedOMatic::Seeder.should_receive(:new).with(hash_including(:model_name => 'model_1')).and_return(mock_seeder)
|
39
|
+
SeedOMatic::Seeder.should_receive(:new).with(hash_including(:model_name => 'model_2')).and_return(mock_seeder)
|
40
|
+
|
41
|
+
subject
|
42
|
+
}
|
43
|
+
end
|
44
|
+
|
45
|
+
describe "json data" do
|
46
|
+
let(:opts) { { :file => 'spec/support/single_model.json' } }
|
47
|
+
|
48
|
+
specify {
|
49
|
+
SeedOMatic::Seeder.should_receive(:new).with(hash_including(:model_name => 'model_name',
|
50
|
+
:items => ['name' => 'Name 1', 'code' => 'code_1'])).and_return(mock_seeder)
|
51
|
+
subject
|
52
|
+
}
|
53
|
+
end
|
33
54
|
end
|
34
55
|
|
35
56
|
describe "should_import?" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: seedomatic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2012-04-23 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &70143477327600 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,7 +21,7 @@ dependencies:
|
|
21
21
|
version: 2.9.0
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70143477327600
|
25
25
|
description: Create repeatable seed fixtures that you can continually use and deploy
|
26
26
|
to multiple environments and tenants.
|
27
27
|
email:
|
@@ -43,9 +43,11 @@ files:
|
|
43
43
|
- spec/lib/seed_o_matic_spec.rb
|
44
44
|
- spec/lib/seeder_spec.rb
|
45
45
|
- spec/spec_helper.rb
|
46
|
+
- spec/support/multiple_models.yml
|
46
47
|
- spec/support/my_model.rb
|
47
48
|
- spec/support/seed_directory/dir1.yml
|
48
49
|
- spec/support/seed_directory/dir2.yml
|
50
|
+
- spec/support/single_model.json
|
49
51
|
- spec/support/single_model.yml
|
50
52
|
homepage: http://github.com/ryanbrunner/seedomatic
|
51
53
|
licenses: []
|
@@ -75,7 +77,9 @@ test_files:
|
|
75
77
|
- spec/lib/seed_o_matic_spec.rb
|
76
78
|
- spec/lib/seeder_spec.rb
|
77
79
|
- spec/spec_helper.rb
|
80
|
+
- spec/support/multiple_models.yml
|
78
81
|
- spec/support/my_model.rb
|
79
82
|
- spec/support/seed_directory/dir1.yml
|
80
83
|
- spec/support/seed_directory/dir2.yml
|
84
|
+
- spec/support/single_model.json
|
81
85
|
- spec/support/single_model.yml
|