sprig-reap 0.1.0 → 0.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 +13 -5
- data/README.md +6 -5
- data/lib/sprig/reap.rb +3 -2
- data/lib/sprig/reap/configuration.rb +9 -66
- data/lib/sprig/reap/inputs.rb +13 -0
- data/lib/sprig/reap/inputs/environment.rb +24 -0
- data/lib/sprig/reap/inputs/ignored_attrs.rb +23 -0
- data/lib/sprig/reap/inputs/model.rb +62 -0
- data/lib/sprig/reap/model.rb +10 -7
- data/lib/sprig/reap/version.rb +1 -1
- data/spec/fixtures/models/comment.rb +2 -0
- data/spec/fixtures/models/post.rb +3 -0
- data/spec/fixtures/yaml/polymorphic_vote_record.yml +3 -3
- data/spec/fixtures/yaml/records_with_namespace.yml +6 -6
- data/spec/fixtures/yaml/records_without_namespace.yml +6 -6
- data/spec/lib/sprig/reap/association_spec.rb +2 -2
- data/spec/lib/sprig/reap/configuration_spec.rb +28 -112
- data/spec/lib/sprig/reap/inputs/environment_spec.rb +81 -0
- data/spec/lib/sprig/reap/inputs/ignored_attrs_spec.rb +32 -0
- data/spec/lib/sprig/reap/inputs/model_spec.rb +129 -0
- data/spec/lib/sprig/reap/inputs_spec.rb +19 -0
- data/spec/lib/sprig/reap/model_spec.rb +12 -6
- data/spec/lib/sprig/reap_spec.rb +22 -9
- metadata +44 -14
checksums.yaml
CHANGED
@@ -1,7 +1,15 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
MGFkOTJiZmQ2OTk3Nzg1YjczOGExODI4MTQwMDk5Mzc4M2YzZGJjZA==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
MDYzMGYzYTZiY2IzMjJmZDU5MzczODMyZTVhYThjM2VlZmQ3ODEyMA==
|
5
7
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
YWUxZjgyYWYyODg2ZWQ1NWY3MjcxMjNjYzY3ZThhMDAwNDU4NzZkZmMxNDM1
|
10
|
+
YTlkZjFmYzAwZDNkZGFiYjM5MTdjNzgzZmNlNzhhY2NkMGM5YjE1ZWM3ZjJm
|
11
|
+
ZDYzNzA1MTcyMmYxMGNlM2FmMGRjMzcxNTk0YjFiMWU4N2E1NmU=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
MDE1OWMyMTQ0MjI0YjVkNzBiNmViYWZiYzQwMWE2YjUyN2FjM2ViMDJmNWEw
|
14
|
+
ZDcwYTIwZDdmYmFlOGE1MjA3YWJhZGI3MmY5MzFjOWI1YjQxYTFjY2VkMmRk
|
15
|
+
MThjNjU3ZTMyMmRjMjM4OTdkNjIyMWJlMzEwODc3NmQ1ZGY0MTE=
|
data/README.md
CHANGED
@@ -49,13 +49,14 @@ Sprig.reap(target_env: 'integration')
|
|
49
49
|
|
50
50
|
#### Model List
|
51
51
|
If you only want to `reap` a subset of your models, you may provide a list of models
|
52
|
-
(`ActiveRecord::Base.subclasses`-only)
|
52
|
+
(`ActiveRecord::Base.subclasses`-only) or `ActiveRecord::Relations` (for pulling records based on
|
53
|
+
scope):
|
53
54
|
```
|
54
55
|
# Rake Task
|
55
|
-
rake db:seed:reap MODELS=User,Post
|
56
|
+
rake db:seed:reap MODELS=User,Post.published
|
56
57
|
|
57
58
|
# Rails Console
|
58
|
-
Sprig.reap(models: [User, Post])
|
59
|
+
Sprig.reap(models: [User, Post.published])
|
59
60
|
```
|
60
61
|
|
61
62
|
#### Ignored Attributes
|
@@ -84,10 +85,10 @@ Sprig.reap(omit_empty_attrs: true)
|
|
84
85
|
You're free to take or leave as many options as you'd like:
|
85
86
|
```
|
86
87
|
# Rake Task
|
87
|
-
rake db:seed:reap TARGET_ENV=integration MODELS=User,Post IGNORED_ATTRS=created_at,updated_at OMIT_EMPTY_ATTRS=true
|
88
|
+
rake db:seed:reap TARGET_ENV=integration MODELS=User,Post.published IGNORED_ATTRS=created_at,updated_at OMIT_EMPTY_ATTRS=true
|
88
89
|
|
89
90
|
# Rails Console
|
90
|
-
Sprig.reap(target_env: 'integration', models: [User, Post], ignored_attrs: [:created_at, :updated_at], omit_empty_attrs: true)
|
91
|
+
Sprig.reap(target_env: 'integration', models: [User, Post.published], ignored_attrs: [:created_at, :updated_at], omit_empty_attrs: true)
|
91
92
|
```
|
92
93
|
|
93
94
|
### Adding to Existing Seed Files (`.yaml` only)
|
data/lib/sprig/reap.rb
CHANGED
@@ -3,6 +3,7 @@ require "sprig/reap/railtie"
|
|
3
3
|
|
4
4
|
module Sprig::Reap
|
5
5
|
autoload :TsortableHash, 'sprig/reap/tsortable_hash'
|
6
|
+
autoload :Inputs, 'sprig/reap/inputs'
|
6
7
|
autoload :Configuration, 'sprig/reap/configuration'
|
7
8
|
autoload :Model, 'sprig/reap/model'
|
8
9
|
autoload :Association, 'sprig/reap/association'
|
@@ -20,7 +21,7 @@ module Sprig::Reap
|
|
20
21
|
|
21
22
|
configure do |config|
|
22
23
|
config.target_env = options[:target_env] || options['TARGET_ENV']
|
23
|
-
config.
|
24
|
+
config.models = options[:models] || options['MODELS']
|
24
25
|
config.ignored_attrs = options[:ignored_attrs] || options['IGNORED_ATTRS']
|
25
26
|
config.omit_empty_attrs = options[:omit_empty_attrs] || options['OMIT_EMPTY_ATTRS']
|
26
27
|
end
|
@@ -41,7 +42,7 @@ module Sprig::Reap
|
|
41
42
|
cattr_reader :configuration
|
42
43
|
|
43
44
|
delegate :target_env,
|
44
|
-
:
|
45
|
+
:models,
|
45
46
|
:ignored_attrs,
|
46
47
|
:logger,
|
47
48
|
:omit_empty_attrs,
|
@@ -2,31 +2,27 @@ module Sprig::Reap
|
|
2
2
|
class Configuration
|
3
3
|
|
4
4
|
def target_env
|
5
|
-
@target_env ||=
|
5
|
+
@target_env ||= Sprig::Reap::Inputs::Environment.default
|
6
6
|
end
|
7
7
|
|
8
|
-
def target_env=(
|
9
|
-
|
10
|
-
@target_env = target_environment
|
11
|
-
end
|
8
|
+
def target_env=(input)
|
9
|
+
@target_env = Sprig::Reap::Inputs::Environment.parse(input)
|
12
10
|
end
|
13
11
|
|
14
|
-
def
|
15
|
-
@classes ||=
|
12
|
+
def models
|
13
|
+
@classes ||= Sprig::Reap::Inputs::Model.default
|
16
14
|
end
|
17
15
|
|
18
|
-
def
|
19
|
-
|
20
|
-
@classes = classes
|
21
|
-
end
|
16
|
+
def models=(input)
|
17
|
+
@classes ||= Sprig::Reap::Inputs::Model.parse(input)
|
22
18
|
end
|
23
19
|
|
24
20
|
def ignored_attrs
|
25
|
-
@ignored_attrs ||=
|
21
|
+
@ignored_attrs ||= Sprig::Reap::Inputs::IgnoredAttrs.default
|
26
22
|
end
|
27
23
|
|
28
24
|
def ignored_attrs=(input)
|
29
|
-
@ignored_attrs =
|
25
|
+
@ignored_attrs = Sprig::Reap::Inputs::IgnoredAttrs.parse(input)
|
30
26
|
end
|
31
27
|
|
32
28
|
def logger
|
@@ -40,58 +36,5 @@ module Sprig::Reap
|
|
40
36
|
def omit_empty_attrs=(input)
|
41
37
|
@omit_empty_attrs = true if String(input).strip.downcase == 'true'
|
42
38
|
end
|
43
|
-
|
44
|
-
private
|
45
|
-
|
46
|
-
def valid_classes
|
47
|
-
@valid_classes ||= begin
|
48
|
-
Rails.application.eager_load!
|
49
|
-
ActiveRecord::Base.subclasses
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
def parse_valid_env_from(input)
|
54
|
-
return if input.nil?
|
55
|
-
target_environment = input.to_s.strip.downcase
|
56
|
-
create_seeds_folder(target_environment)
|
57
|
-
yield target_environment
|
58
|
-
end
|
59
|
-
|
60
|
-
def create_seeds_folder(target_env)
|
61
|
-
folder = Rails.root.join('db', 'seeds', target_env)
|
62
|
-
FileUtils.mkdir_p(folder) unless File.directory? folder
|
63
|
-
end
|
64
|
-
|
65
|
-
def parse_valid_classes_from(input)
|
66
|
-
return if input.nil?
|
67
|
-
|
68
|
-
classes = if input.is_a? String
|
69
|
-
input.split(',').map { |klass_string| klass_string.strip.classify.constantize }
|
70
|
-
else
|
71
|
-
input
|
72
|
-
end
|
73
|
-
|
74
|
-
validate_classes(classes)
|
75
|
-
|
76
|
-
yield classes
|
77
|
-
end
|
78
|
-
|
79
|
-
def validate_classes(classes)
|
80
|
-
classes.each do |klass|
|
81
|
-
unless valid_classes.include? klass
|
82
|
-
raise ArgumentError, "Cannot create a seed file for #{klass} because it is not a subclass of ActiveRecord::Base."
|
83
|
-
end
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
def parse_ignored_attrs_from(input)
|
88
|
-
return if input.nil?
|
89
|
-
|
90
|
-
if input.is_a? String
|
91
|
-
input.split(',').map(&:strip)
|
92
|
-
else
|
93
|
-
input.map(&:to_s).map(&:strip)
|
94
|
-
end
|
95
|
-
end
|
96
39
|
end
|
97
40
|
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Sprig::Reap
|
2
|
+
module Inputs
|
3
|
+
autoload :Environment, 'sprig/reap/inputs/environment'
|
4
|
+
autoload :Model, 'sprig/reap/inputs/model'
|
5
|
+
autoload :IgnoredAttrs, 'sprig/reap/inputs/ignored_attrs'
|
6
|
+
|
7
|
+
module_function
|
8
|
+
|
9
|
+
def Model(input)
|
10
|
+
input.is_a?(Model) ? input : Model.new(input)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Sprig::Reap::Inputs
|
2
|
+
class Environment
|
3
|
+
attr_reader :input
|
4
|
+
|
5
|
+
def self.default
|
6
|
+
new().env
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.parse(input)
|
10
|
+
new(input).env
|
11
|
+
end
|
12
|
+
|
13
|
+
def initialize(input = nil)
|
14
|
+
@input = input || Rails.env
|
15
|
+
end
|
16
|
+
|
17
|
+
def env
|
18
|
+
input.to_s.strip.downcase.tap do |target_env|
|
19
|
+
folder = Rails.root.join('db', 'seeds', target_env)
|
20
|
+
FileUtils.mkdir_p(folder) unless File.directory? folder
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Sprig::Reap::Inputs
|
2
|
+
class IgnoredAttrs
|
3
|
+
attr_reader :input
|
4
|
+
|
5
|
+
def self.default
|
6
|
+
new().list
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.parse(input)
|
10
|
+
new(input).list
|
11
|
+
end
|
12
|
+
|
13
|
+
def initialize(input = nil)
|
14
|
+
@input = input || []
|
15
|
+
end
|
16
|
+
|
17
|
+
def list
|
18
|
+
collection = input.is_a?(String) ? input.split(',') : Array(input)
|
19
|
+
|
20
|
+
collection.map(&:to_s).map(&:strip)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
module Sprig::Reap::Inputs
|
2
|
+
class Model
|
3
|
+
attr_reader :input
|
4
|
+
|
5
|
+
def self.valid_classes
|
6
|
+
@@valid_classes ||= begin
|
7
|
+
Rails.application.eager_load!
|
8
|
+
ActiveRecord::Base.subclasses
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.default
|
13
|
+
valid_classes.map(&to_model_inputs)
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.parse(input)
|
17
|
+
collection = if input.is_a? String
|
18
|
+
input.split(',').map { |string| string.strip }
|
19
|
+
elsif input.is_a? ActiveRecord::Relation
|
20
|
+
[input]
|
21
|
+
else
|
22
|
+
Array(input)
|
23
|
+
end
|
24
|
+
|
25
|
+
collection.map(&to_model_inputs)
|
26
|
+
end
|
27
|
+
|
28
|
+
def initialize(input)
|
29
|
+
@input = input.is_a?(String) ? eval(input) : input
|
30
|
+
|
31
|
+
validate!
|
32
|
+
end
|
33
|
+
|
34
|
+
def klass
|
35
|
+
@klass ||= relation? ? input.klass : input
|
36
|
+
end
|
37
|
+
|
38
|
+
def records
|
39
|
+
relation? ? input : input.all
|
40
|
+
end
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
def self.to_model_inputs
|
45
|
+
proc { |input| new(input) }
|
46
|
+
end
|
47
|
+
|
48
|
+
def valid_classes
|
49
|
+
self.class.valid_classes
|
50
|
+
end
|
51
|
+
|
52
|
+
def validate!
|
53
|
+
if valid_classes.exclude? klass
|
54
|
+
raise ArgumentError, "Cannot create a seed file for #{klass} because it is not a subclass of ActiveRecord::Base."
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def relation?
|
59
|
+
input.is_a? ActiveRecord::Relation
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
data/lib/sprig/reap/model.rb
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
module Sprig::Reap
|
2
2
|
class Model
|
3
3
|
include Logging
|
4
|
+
include Inputs
|
4
5
|
|
5
6
|
def self.all
|
6
7
|
@@all ||= begin
|
7
|
-
models = Sprig::Reap.
|
8
|
+
models = Sprig::Reap.models.map { |model_input| new(model_input) }
|
8
9
|
|
9
10
|
tsorted_classes(models).map do |klass|
|
10
11
|
models.find { |model| model.klass == klass }
|
@@ -16,11 +17,12 @@ module Sprig::Reap
|
|
16
17
|
all.find { |model| model.klass == klass }.find(id)
|
17
18
|
end
|
18
19
|
|
19
|
-
attr_reader :klass
|
20
|
+
attr_reader :model_input, :klass
|
20
21
|
attr_writer :existing_sprig_ids
|
21
22
|
|
22
|
-
def initialize(
|
23
|
-
@
|
23
|
+
def initialize(model_input)
|
24
|
+
@model_input = Sprig::Reap::Inputs.Model(model_input)
|
25
|
+
@klass = @model_input.klass
|
24
26
|
end
|
25
27
|
|
26
28
|
def attributes
|
@@ -57,7 +59,7 @@ module Sprig::Reap
|
|
57
59
|
return if records.empty?
|
58
60
|
|
59
61
|
namespace = options[:namespace]
|
60
|
-
formatted_records = records.map(&:to_hash)
|
62
|
+
formatted_records = [records.map(&:to_hash)]
|
61
63
|
|
62
64
|
yaml = if namespace
|
63
65
|
{ namespace => formatted_records }.to_yaml
|
@@ -65,11 +67,12 @@ module Sprig::Reap
|
|
65
67
|
formatted_records.to_yaml
|
66
68
|
end
|
67
69
|
|
68
|
-
yaml.gsub(
|
70
|
+
yaml.gsub!('- -', ' -') # Remove the extra array marker used to indent the sprig records
|
71
|
+
yaml.gsub!("---\n", '') # Remove annoying YAML separator
|
69
72
|
end
|
70
73
|
|
71
74
|
def records
|
72
|
-
@records ||=
|
75
|
+
@records ||= model_input.records.map { |record| Record.new(record, self) }
|
73
76
|
rescue => e
|
74
77
|
log_error "Encountered an error when pulling the database records for #{to_s}:\r#{e.message}"
|
75
78
|
[]
|
data/lib/sprig/reap/version.rb
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
- sprig_id: 1
|
2
|
-
|
3
|
-
|
1
|
+
- sprig_id: 1
|
2
|
+
votable_id: "<%= sprig_record(Post, 1).id %>"
|
3
|
+
votable_type: Post
|
@@ -1,7 +1,7 @@
|
|
1
1
|
records:
|
2
|
-
- sprig_id: 1
|
3
|
-
|
4
|
-
|
5
|
-
- sprig_id: 2
|
6
|
-
|
7
|
-
|
2
|
+
- sprig_id: 1
|
3
|
+
post_id: "<%= sprig_record(Post, 1).id %>"
|
4
|
+
body:
|
5
|
+
- sprig_id: 2
|
6
|
+
post_id: "<%= sprig_record(Post, 2).id %>"
|
7
|
+
body:
|
@@ -1,6 +1,6 @@
|
|
1
|
-
- sprig_id: 1
|
2
|
-
|
3
|
-
|
4
|
-
- sprig_id: 2
|
5
|
-
|
6
|
-
|
1
|
+
- sprig_id: 1
|
2
|
+
post_id: "<%= sprig_record(Post, 1).id %>"
|
3
|
+
body:
|
4
|
+
- sprig_id: 2
|
5
|
+
post_id: "<%= sprig_record(Post, 2).id %>"
|
6
|
+
body:
|
@@ -55,7 +55,7 @@ describe Sprig::Reap::Association do
|
|
55
55
|
context "when the association is polymorphic" do
|
56
56
|
subject { described_class.new(polymorphic_association) }
|
57
57
|
|
58
|
-
its(:polymorphic_dependencies) { should
|
58
|
+
its(:polymorphic_dependencies) { should =~ [Post, Comment] }
|
59
59
|
end
|
60
60
|
end
|
61
61
|
|
@@ -81,7 +81,7 @@ describe Sprig::Reap::Association do
|
|
81
81
|
context "when the association is polymorphic" do
|
82
82
|
subject { described_class.new(polymorphic_association) }
|
83
83
|
|
84
|
-
its(:dependencies) { should
|
84
|
+
its(:dependencies) { should =~ [Post, Comment] }
|
85
85
|
end
|
86
86
|
|
87
87
|
context "when the association is not polymorphic" do
|
@@ -8,140 +8,56 @@ describe Sprig::Reap::Configuration do
|
|
8
8
|
end
|
9
9
|
|
10
10
|
describe "#target_env" do
|
11
|
-
context "
|
12
|
-
|
13
|
-
|
14
|
-
end
|
15
|
-
|
16
|
-
describe "#target_env=" do
|
17
|
-
context "when given nil" do
|
18
|
-
it "does not change the target_env" do
|
19
|
-
subject.target_env = nil
|
20
|
-
|
21
|
-
subject.target_env.should_not == nil
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
context "given a non-nil string value" do
|
26
|
-
let(:input) { ' ShaBOOSH' }
|
27
|
-
|
28
|
-
it "formats the given value and then sets the target environment" do
|
29
|
-
subject.target_env = input
|
30
|
-
|
31
|
-
subject.target_env.should == 'shaboosh'
|
32
|
-
end
|
33
|
-
|
34
|
-
context "and the corresponding seeds folder does not yet exist" do
|
35
|
-
after do
|
36
|
-
FileUtils.remove_dir('./spec/fixtures/db/seeds/shaboosh')
|
37
|
-
end
|
38
|
-
|
39
|
-
it "creates the seeds folder" do
|
40
|
-
subject.target_env = input
|
41
|
-
|
42
|
-
File.directory?('./spec/fixtures/db/seeds/shaboosh').should == true
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
context "given a non-nil symbol value" do
|
48
|
-
let(:input) { :shaboosh }
|
49
|
-
|
50
|
-
it "formats the given value and then sets the target environment" do
|
51
|
-
subject.target_env = input
|
52
|
-
|
53
|
-
subject.target_env.should == 'shaboosh'
|
54
|
-
end
|
55
|
-
|
56
|
-
context "and the corresponding seeds folder does not yet exist" do
|
57
|
-
after do
|
58
|
-
FileUtils.remove_dir('./spec/fixtures/db/seeds/shaboosh')
|
59
|
-
end
|
60
|
-
|
61
|
-
it "creates the seeds folder" do
|
62
|
-
subject.target_env = input
|
11
|
+
context "given a fresh configuration" do
|
12
|
+
it "grabs the default" do
|
13
|
+
Sprig::Reap::Inputs::Environment.should_receive(:default)
|
63
14
|
|
64
|
-
|
65
|
-
end
|
15
|
+
subject.target_env
|
66
16
|
end
|
67
17
|
end
|
68
18
|
end
|
69
19
|
|
70
|
-
describe "#
|
71
|
-
|
72
|
-
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
describe "#classes=" do
|
77
|
-
context "when given nil" do
|
78
|
-
it "does not set classes to nil" do
|
79
|
-
subject.classes = nil
|
20
|
+
describe "#target_env=" do
|
21
|
+
it "parses the input" do
|
22
|
+
Sprig::Reap::Inputs::Environment.should_receive(:parse).with(:shaboosh)
|
80
23
|
|
81
|
-
|
82
|
-
end
|
24
|
+
subject.target_env = :shaboosh
|
83
25
|
end
|
26
|
+
end
|
84
27
|
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
subject.classes = [Comment, Sprig::Reap::Model]
|
90
|
-
}.to raise_error ArgumentError, 'Cannot create a seed file for Sprig::Reap::Model because it is not a subclass of ActiveRecord::Base.'
|
91
|
-
end
|
92
|
-
end
|
93
|
-
|
94
|
-
context "where all classes are subclasses of ActiveRecord::Base" do
|
95
|
-
it "sets classes to the given input" do
|
96
|
-
subject.classes = [Comment, Post]
|
28
|
+
describe "#models" do
|
29
|
+
context "given a fresh configuration" do
|
30
|
+
it "grabs the default" do
|
31
|
+
Sprig::Reap::Inputs::Model.should_receive(:default)
|
97
32
|
|
98
|
-
|
99
|
-
end
|
33
|
+
subject.models
|
100
34
|
end
|
101
35
|
end
|
36
|
+
end
|
102
37
|
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
expect {
|
107
|
-
subject.classes = 'Sprig::Reap::Model'
|
108
|
-
}.to raise_error ArgumentError, 'Cannot create a seed file for Sprig::Reap::Model because it is not a subclass of ActiveRecord::Base.'
|
109
|
-
end
|
110
|
-
end
|
111
|
-
|
112
|
-
context "where all classes are subclasses of ActiveRecord::Base" do
|
113
|
-
it "sets classes to the parsed input" do
|
114
|
-
subject.classes = ' comment, post'
|
38
|
+
describe "#models=" do
|
39
|
+
it "parses the input" do
|
40
|
+
Sprig::Reap::Inputs::Model.should_receive(:parse).with(Post)
|
115
41
|
|
116
|
-
|
117
|
-
end
|
118
|
-
end
|
42
|
+
subject.models = Post
|
119
43
|
end
|
120
44
|
end
|
121
45
|
|
122
46
|
describe "#ignored_attrs" do
|
123
|
-
context "
|
124
|
-
|
47
|
+
context "given a fresh configuration" do
|
48
|
+
it "grabs the default" do
|
49
|
+
Sprig::Reap::Inputs::IgnoredAttrs.should_receive(:default)
|
50
|
+
|
51
|
+
subject.ignored_attrs
|
52
|
+
end
|
125
53
|
end
|
126
54
|
end
|
127
55
|
|
128
56
|
describe "#ignored_attrs=" do
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
its(:ignored_attrs) { should == [] }
|
133
|
-
end
|
134
|
-
|
135
|
-
context "when given an array of ignored_attrs" do
|
136
|
-
before { subject.ignored_attrs = [:shaka, ' laka '] }
|
137
|
-
|
138
|
-
its(:ignored_attrs) { should == ['shaka', 'laka'] }
|
139
|
-
end
|
140
|
-
|
141
|
-
context "when given a string" do
|
142
|
-
before { subject.ignored_attrs = ' shaka, laka' }
|
57
|
+
it "parses the input" do
|
58
|
+
Sprig::Reap::Inputs::IgnoredAttrs.should_receive(:parse).with('boom, shaka, laka')
|
143
59
|
|
144
|
-
|
60
|
+
subject.ignored_attrs = 'boom, shaka, laka'
|
145
61
|
end
|
146
62
|
end
|
147
63
|
|
@@ -0,0 +1,81 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Sprig::Reap::Inputs::Environment do
|
4
|
+
before do
|
5
|
+
stub_rails_root
|
6
|
+
end
|
7
|
+
|
8
|
+
describe ".default" do
|
9
|
+
subject { described_class }
|
10
|
+
|
11
|
+
its(:default) { should == 'test' }
|
12
|
+
end
|
13
|
+
|
14
|
+
describe ".parse" do
|
15
|
+
let(:environment) { double('Sprig::Reap::Inputs::Environment') }
|
16
|
+
|
17
|
+
before do
|
18
|
+
Sprig::Reap::Inputs::Environment.stub(:new).with(:shaboosh).and_return(environment)
|
19
|
+
end
|
20
|
+
|
21
|
+
it "instantiates a Sprig::Reap::Inputs::Environment and returns the env from it" do
|
22
|
+
environment.should_receive(:env)
|
23
|
+
|
24
|
+
described_class.parse(:shaboosh)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe "#env" do
|
29
|
+
context "when no input is given" do
|
30
|
+
subject { described_class.new }
|
31
|
+
|
32
|
+
its(:env) { should == 'test' }
|
33
|
+
end
|
34
|
+
|
35
|
+
context "when the input is a blank value" do
|
36
|
+
subject { described_class.new(nil) }
|
37
|
+
|
38
|
+
its(:env) { should == 'test' }
|
39
|
+
end
|
40
|
+
|
41
|
+
context "when the input is a string" do
|
42
|
+
subject { described_class.new(' ShaBOOSH') }
|
43
|
+
|
44
|
+
it "formats the given value and then sets the target environment" do
|
45
|
+
subject.env.should == 'shaboosh'
|
46
|
+
end
|
47
|
+
|
48
|
+
context "and the corresponding seeds folder does not yet exist" do
|
49
|
+
after do
|
50
|
+
FileUtils.remove_dir('./spec/fixtures/db/seeds/shaboosh')
|
51
|
+
end
|
52
|
+
|
53
|
+
it "creates the seeds folder" do
|
54
|
+
subject.env
|
55
|
+
|
56
|
+
File.directory?('./spec/fixtures/db/seeds/shaboosh').should == true
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
context "given a symbol" do
|
62
|
+
subject { described_class.new(:shaboosh) }
|
63
|
+
|
64
|
+
it "formats the given value and then sets the target environment" do
|
65
|
+
subject.env.should == 'shaboosh'
|
66
|
+
end
|
67
|
+
|
68
|
+
context "and the corresponding seeds folder does not yet exist" do
|
69
|
+
after do
|
70
|
+
FileUtils.remove_dir('./spec/fixtures/db/seeds/shaboosh')
|
71
|
+
end
|
72
|
+
|
73
|
+
it "creates the seeds folder" do
|
74
|
+
subject.env
|
75
|
+
|
76
|
+
File.directory?('./spec/fixtures/db/seeds/shaboosh').should == true
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Sprig::Reap::Inputs::IgnoredAttrs do
|
4
|
+
describe ".default" do
|
5
|
+
subject { described_class }
|
6
|
+
|
7
|
+
its(:default) { should == [] }
|
8
|
+
end
|
9
|
+
|
10
|
+
describe ".parse" do
|
11
|
+
let(:input) { 'boom, shaka, laka' }
|
12
|
+
let(:ignored_attrs) { double('Sprig::Reap::Inputs::IgnoredAttrs') }
|
13
|
+
|
14
|
+
before do
|
15
|
+
Sprig::Reap::Inputs::IgnoredAttrs.stub(:new).with(input).and_return(ignored_attrs)
|
16
|
+
end
|
17
|
+
|
18
|
+
it "instantiates a Sprig::Reap::Inputs::IgnoredAttrs with the given input and grabs the list from it" do
|
19
|
+
ignored_attrs.should_receive(:list)
|
20
|
+
|
21
|
+
described_class.parse(input)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
describe "#list" do
|
26
|
+
let(:input) { 'boom, shaka, laka' }
|
27
|
+
|
28
|
+
subject { described_class.new(input) }
|
29
|
+
|
30
|
+
its(:list) { should == ['boom', 'shaka', 'laka'] }
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,129 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Sprig::Reap::Inputs::Model do
|
4
|
+
describe ".valid_classes" do
|
5
|
+
subject { described_class }
|
6
|
+
|
7
|
+
its(:valid_classes) { should == ActiveRecord::Base.subclasses }
|
8
|
+
end
|
9
|
+
|
10
|
+
describe ".default" do
|
11
|
+
it "instantiates a Sprig::Reap::Inputs::Model for each model" do
|
12
|
+
ActiveRecord::Base.subclasses.each do |model|
|
13
|
+
Sprig::Reap::Inputs::Model.should_receive(:new).with(model)
|
14
|
+
end
|
15
|
+
|
16
|
+
described_class.default
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
describe ".parse" do
|
21
|
+
context "given a list in a string" do
|
22
|
+
it "instantiates a Sprig::Reap::Inputs::Model for each piece of input" do
|
23
|
+
Sprig::Reap::Inputs::Model.should_receive(:new).with('User')
|
24
|
+
Sprig::Reap::Inputs::Model.should_receive(:new).with('Post.published')
|
25
|
+
Sprig::Reap::Inputs::Model.should_receive(:new).with('Tag')
|
26
|
+
|
27
|
+
described_class.parse('User, Post.published, Tag')
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
context "given an array" do
|
32
|
+
it "instantiates a Sprig::Reap::Inputs::Model for each piece of input" do
|
33
|
+
Sprig::Reap::Inputs::Model.should_receive(:new).with(User)
|
34
|
+
Sprig::Reap::Inputs::Model.should_receive(:new).with(Post.published)
|
35
|
+
Sprig::Reap::Inputs::Model.should_receive(:new).with(Tag)
|
36
|
+
|
37
|
+
described_class.parse([User, Post.published, Tag])
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
context "given a single item" do
|
42
|
+
it "instantiates a Sprig::Reap::Inputs::Model with the input" do
|
43
|
+
Sprig::Reap::Inputs::Model.should_receive(:new).with(Post.published)
|
44
|
+
|
45
|
+
described_class.parse(Post.published)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
describe "#initialize" do
|
51
|
+
context "when the input is a String" do
|
52
|
+
context "representing an ActiveRecord::Base class" do
|
53
|
+
it "does not raise an error" do
|
54
|
+
expect { described_class.new('User') }.to_not raise_error
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
context "representing an ActiveRecord::Relation" do
|
59
|
+
it "does not raise an error" do
|
60
|
+
expect { described_class.new('Post.published') }.to_not raise_error
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
context "representing a non-ActiveRecord::Base class" do
|
65
|
+
it "raises an error" do
|
66
|
+
expect { described_class.new('Sprig::Reap::Model') }.to raise_error
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
context "representing some non-class identifier" do
|
71
|
+
it "raises an error" do
|
72
|
+
expect { described_class.new('klass') }.to raise_error
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
context "when the input is a non-ActiveRecord::Base class" do
|
78
|
+
it "raises an error" do
|
79
|
+
expect { described_class.new(Sprig::Reap::Record) }.to raise_error
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
context "when the input is an ActiveRecord::Base class" do
|
84
|
+
it "does not raise an error" do
|
85
|
+
expect { described_class.new(Tag) }.to_not raise_error
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
context "when the input is an ActiveRecord::Relation" do
|
90
|
+
it "does not raise an error" do
|
91
|
+
expect { described_class.new(Post.published) }.to_not raise_error
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
describe "#klass" do
|
97
|
+
context "when the input is an ActiveRecord::Base class" do
|
98
|
+
subject { described_class.new(Tag) }
|
99
|
+
|
100
|
+
its(:klass) { should == Tag }
|
101
|
+
end
|
102
|
+
|
103
|
+
context "when the input is an ActiveRecord::Relation" do
|
104
|
+
subject { described_class.new(Post.published) }
|
105
|
+
|
106
|
+
its(:klass) { should == Post }
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
describe "#records" do
|
111
|
+
let!(:bob) { User.create(:first_name => 'Bob', :last_name => 'Costas') }
|
112
|
+
let!(:john) { User.create(:first_name => 'John', :last_name => 'Madden') }
|
113
|
+
|
114
|
+
context "when the input is an ActiveRecord::Base class" do
|
115
|
+
subject { described_class.new(User) }
|
116
|
+
|
117
|
+
its(:records) { should == [bob, john]}
|
118
|
+
end
|
119
|
+
|
120
|
+
context "when the input is an ActiveRecord::Relation" do
|
121
|
+
let!(:unpublished) { Post.create(:published => false, :poster => bob) }
|
122
|
+
let!(:published) { Post.create(:published => true, :poster => john) }
|
123
|
+
|
124
|
+
subject { described_class.new(Post.published) }
|
125
|
+
|
126
|
+
its(:records) { should == [published] }
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Sprig::Reap::Inputs do
|
4
|
+
describe "Model()" do
|
5
|
+
context "given a non-Sprig::Reap::Inputs::Model" do
|
6
|
+
it "instantiates a Sprig::Reap::Inputs::Model with the given input" do
|
7
|
+
described_class.Model(Post).should be_an_instance_of Sprig::Reap::Inputs::Model
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
context "given a Sprig::Reap::Inputs::Model" do
|
12
|
+
let(:input) { Sprig::Reap::Inputs::Model.new(Post) }
|
13
|
+
|
14
|
+
it "returns the given input" do
|
15
|
+
described_class.Model(input).should == input
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -13,7 +13,13 @@ describe Sprig::Reap::Model do
|
|
13
13
|
end
|
14
14
|
|
15
15
|
before do
|
16
|
-
Sprig::Reap.stub(:
|
16
|
+
Sprig::Reap.stub(:models).and_return([
|
17
|
+
Sprig::Reap::Inputs::Model.new(Comment),
|
18
|
+
Sprig::Reap::Inputs::Model.new(Post),
|
19
|
+
Sprig::Reap::Inputs::Model.new(User),
|
20
|
+
Sprig::Reap::Inputs::Model.new(Vote),
|
21
|
+
Sprig::Reap::Inputs::Model.new(Tag)
|
22
|
+
])
|
17
23
|
end
|
18
24
|
|
19
25
|
it "returns an dependency-sorted array of Sprig::Reap::Models" do
|
@@ -70,7 +76,7 @@ describe Sprig::Reap::Model do
|
|
70
76
|
context "when the model is polymorphic" do
|
71
77
|
subject { described_class.new(Vote) }
|
72
78
|
|
73
|
-
its(:dependencies) { should
|
79
|
+
its(:dependencies) { should =~ [Post, Comment] }
|
74
80
|
end
|
75
81
|
|
76
82
|
context "when the model has a HABTM dependency or a dependency with an explicit :class_name" do
|
@@ -150,13 +156,13 @@ describe Sprig::Reap::Model do
|
|
150
156
|
|
151
157
|
context "when passed a value for the namespace" do
|
152
158
|
it "returns the correct yaml" do
|
153
|
-
subject.to_yaml(:namespace => 'records').should == yaml_from_file('records_with_namespace.yml')
|
159
|
+
YAML.load(subject.to_yaml(:namespace => 'records')).should == YAML.load(yaml_from_file('records_with_namespace.yml'))
|
154
160
|
end
|
155
161
|
end
|
156
162
|
|
157
163
|
context "when no namespace is given" do
|
158
164
|
it "returns the correct yaml" do
|
159
|
-
subject.to_yaml.should == yaml_from_file('records_without_namespace.yml')
|
165
|
+
YAML.load(subject.to_yaml).should == YAML.load(yaml_from_file('records_without_namespace.yml'))
|
160
166
|
end
|
161
167
|
end
|
162
168
|
|
@@ -166,7 +172,7 @@ describe Sprig::Reap::Model do
|
|
166
172
|
|
167
173
|
subject = described_class.new(Vote)
|
168
174
|
|
169
|
-
subject.to_yaml.should == yaml_from_file('polymorphic_vote_record.yml')
|
175
|
+
YAML.load(subject.to_yaml).should == YAML.load(yaml_from_file('polymorphic_vote_record.yml'))
|
170
176
|
end
|
171
177
|
end
|
172
178
|
|
@@ -208,6 +214,6 @@ describe Sprig::Reap::Model do
|
|
208
214
|
end
|
209
215
|
|
210
216
|
def yaml_from_file(basename)
|
211
|
-
|
217
|
+
File.read('spec/fixtures/yaml/' + basename).gsub("\"", '')
|
212
218
|
end
|
213
219
|
end
|
data/spec/lib/sprig/reap_spec.rb
CHANGED
@@ -25,8 +25,8 @@ describe Sprig::Reap do
|
|
25
25
|
subject.reap
|
26
26
|
end
|
27
27
|
|
28
|
-
it "generates a seed file for each
|
29
|
-
count = Sprig::Reap.
|
28
|
+
it "generates a seed file for each model" do
|
29
|
+
count = Sprig::Reap.models.count
|
30
30
|
|
31
31
|
seed_file.should_receive(:write).exactly(count).times
|
32
32
|
|
@@ -49,18 +49,31 @@ describe Sprig::Reap do
|
|
49
49
|
end
|
50
50
|
end
|
51
51
|
|
52
|
-
context "when passed a set of
|
53
|
-
context "in :
|
54
|
-
it "sets the
|
52
|
+
context "when passed a set of models in the options hash" do
|
53
|
+
context "in :models" do
|
54
|
+
it "sets the models" do
|
55
55
|
subject.reap(:models => [User, Post])
|
56
|
-
|
56
|
+
|
57
|
+
subject.models.all? { |model| model.class == Sprig::Reap::Inputs::Model }.should == true
|
58
|
+
subject.models.map(&:klass).should == [User, Post]
|
57
59
|
end
|
58
60
|
end
|
59
61
|
|
60
|
-
context "
|
61
|
-
it "
|
62
|
+
context "in 'MODELS'" do
|
63
|
+
it "sets the models" do
|
62
64
|
subject.reap('MODELS' => 'User, Post')
|
63
|
-
|
65
|
+
|
66
|
+
subject.models.all? { |model| model.class == Sprig::Reap::Inputs::Model }.should == true
|
67
|
+
subject.models.map(&:klass).should == [User, Post]
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
context "as an ActiveRecord::Relation" do
|
72
|
+
it "sets the relation to one of the models" do
|
73
|
+
subject.reap(:models => [Post.published.with_content])
|
74
|
+
|
75
|
+
subject.models.all? { |model| model.class == Sprig::Reap::Inputs::Model }.should == true
|
76
|
+
subject.models.map(&:klass).should == [Post]
|
64
77
|
end
|
65
78
|
end
|
66
79
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sprig-reap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Stenberg
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-03-
|
11
|
+
date: 2015-03-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -31,6 +31,9 @@ dependencies:
|
|
31
31
|
- - ~>
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: 1.3.8
|
34
|
+
- - ! '>='
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: 1.3.8
|
34
37
|
type: :development
|
35
38
|
prerelease: false
|
36
39
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -38,6 +41,9 @@ dependencies:
|
|
38
41
|
- - ~>
|
39
42
|
- !ruby/object:Gem::Version
|
40
43
|
version: 1.3.8
|
44
|
+
- - ! '>='
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: 1.3.8
|
41
47
|
- !ruby/object:Gem::Dependency
|
42
48
|
name: rspec
|
43
49
|
requirement: !ruby/object:Gem::Requirement
|
@@ -45,6 +51,9 @@ dependencies:
|
|
45
51
|
- - ~>
|
46
52
|
- !ruby/object:Gem::Version
|
47
53
|
version: 2.14.0
|
54
|
+
- - ! '>='
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: 2.14.0
|
48
57
|
type: :development
|
49
58
|
prerelease: false
|
50
59
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -52,6 +61,9 @@ dependencies:
|
|
52
61
|
- - ~>
|
53
62
|
- !ruby/object:Gem::Version
|
54
63
|
version: 2.14.0
|
64
|
+
- - ! '>='
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: 2.14.0
|
55
67
|
- !ruby/object:Gem::Dependency
|
56
68
|
name: database_cleaner
|
57
69
|
requirement: !ruby/object:Gem::Requirement
|
@@ -59,6 +71,9 @@ dependencies:
|
|
59
71
|
- - ~>
|
60
72
|
- !ruby/object:Gem::Version
|
61
73
|
version: 1.2.0
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: 1.2.0
|
62
77
|
type: :development
|
63
78
|
prerelease: false
|
64
79
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -66,32 +81,35 @@ dependencies:
|
|
66
81
|
- - ~>
|
67
82
|
- !ruby/object:Gem::Version
|
68
83
|
version: 1.2.0
|
84
|
+
- - ! '>='
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: 1.2.0
|
69
87
|
- !ruby/object:Gem::Dependency
|
70
88
|
name: pry
|
71
89
|
requirement: !ruby/object:Gem::Requirement
|
72
90
|
requirements:
|
73
|
-
- - '>='
|
91
|
+
- - ! '>='
|
74
92
|
- !ruby/object:Gem::Version
|
75
93
|
version: '0'
|
76
94
|
type: :development
|
77
95
|
prerelease: false
|
78
96
|
version_requirements: !ruby/object:Gem::Requirement
|
79
97
|
requirements:
|
80
|
-
- - '>='
|
98
|
+
- - ! '>='
|
81
99
|
- !ruby/object:Gem::Version
|
82
100
|
version: '0'
|
83
101
|
- !ruby/object:Gem::Dependency
|
84
102
|
name: generator_spec
|
85
103
|
requirement: !ruby/object:Gem::Requirement
|
86
104
|
requirements:
|
87
|
-
- - '>='
|
105
|
+
- - ! '>='
|
88
106
|
- !ruby/object:Gem::Version
|
89
107
|
version: '0'
|
90
108
|
type: :development
|
91
109
|
prerelease: false
|
92
110
|
version_requirements: !ruby/object:Gem::Requirement
|
93
111
|
requirements:
|
94
|
-
- - '>='
|
112
|
+
- - ! '>='
|
95
113
|
- !ruby/object:Gem::Version
|
96
114
|
version: '0'
|
97
115
|
- !ruby/object:Gem::Dependency
|
@@ -116,9 +134,18 @@ executables: []
|
|
116
134
|
extensions: []
|
117
135
|
extra_rdoc_files: []
|
118
136
|
files:
|
137
|
+
- MIT-LICENSE
|
138
|
+
- README.md
|
139
|
+
- Rakefile
|
140
|
+
- lib/sprig-reap.rb
|
141
|
+
- lib/sprig/reap.rb
|
119
142
|
- lib/sprig/reap/association.rb
|
120
143
|
- lib/sprig/reap/configuration.rb
|
121
144
|
- lib/sprig/reap/file_attribute.rb
|
145
|
+
- lib/sprig/reap/inputs.rb
|
146
|
+
- lib/sprig/reap/inputs/environment.rb
|
147
|
+
- lib/sprig/reap/inputs/ignored_attrs.rb
|
148
|
+
- lib/sprig/reap/inputs/model.rb
|
122
149
|
- lib/sprig/reap/logging.rb
|
123
150
|
- lib/sprig/reap/model.rb
|
124
151
|
- lib/sprig/reap/railtie.rb
|
@@ -127,12 +154,7 @@ files:
|
|
127
154
|
- lib/sprig/reap/tsortable_hash.rb
|
128
155
|
- lib/sprig/reap/value.rb
|
129
156
|
- lib/sprig/reap/version.rb
|
130
|
-
- lib/sprig/reap.rb
|
131
|
-
- lib/sprig-reap.rb
|
132
157
|
- lib/tasks/reap.rake
|
133
|
-
- MIT-LICENSE
|
134
|
-
- Rakefile
|
135
|
-
- README.md
|
136
158
|
- spec/db/activerecord.db
|
137
159
|
- spec/fixtures/images/avatar.png
|
138
160
|
- spec/fixtures/models/comment.rb
|
@@ -150,6 +172,10 @@ files:
|
|
150
172
|
- spec/lib/sprig/reap/association_spec.rb
|
151
173
|
- spec/lib/sprig/reap/configuration_spec.rb
|
152
174
|
- spec/lib/sprig/reap/file_attribute_spec.rb
|
175
|
+
- spec/lib/sprig/reap/inputs/environment_spec.rb
|
176
|
+
- spec/lib/sprig/reap/inputs/ignored_attrs_spec.rb
|
177
|
+
- spec/lib/sprig/reap/inputs/model_spec.rb
|
178
|
+
- spec/lib/sprig/reap/inputs_spec.rb
|
153
179
|
- spec/lib/sprig/reap/model_spec.rb
|
154
180
|
- spec/lib/sprig/reap/record_spec.rb
|
155
181
|
- spec/lib/sprig/reap/seed_file_spec.rb
|
@@ -172,17 +198,17 @@ require_paths:
|
|
172
198
|
- lib
|
173
199
|
required_ruby_version: !ruby/object:Gem::Requirement
|
174
200
|
requirements:
|
175
|
-
- - '>='
|
201
|
+
- - ! '>='
|
176
202
|
- !ruby/object:Gem::Version
|
177
203
|
version: '0'
|
178
204
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
179
205
|
requirements:
|
180
|
-
- - '>='
|
206
|
+
- - ! '>='
|
181
207
|
- !ruby/object:Gem::Version
|
182
208
|
version: '0'
|
183
209
|
requirements: []
|
184
210
|
rubyforge_project:
|
185
|
-
rubygems_version: 2.
|
211
|
+
rubygems_version: 2.4.2
|
186
212
|
signing_key:
|
187
213
|
specification_version: 4
|
188
214
|
summary: Automatic seed file generation for Rails apps using Sprig.
|
@@ -204,6 +230,10 @@ test_files:
|
|
204
230
|
- spec/lib/sprig/reap/association_spec.rb
|
205
231
|
- spec/lib/sprig/reap/configuration_spec.rb
|
206
232
|
- spec/lib/sprig/reap/file_attribute_spec.rb
|
233
|
+
- spec/lib/sprig/reap/inputs/environment_spec.rb
|
234
|
+
- spec/lib/sprig/reap/inputs/ignored_attrs_spec.rb
|
235
|
+
- spec/lib/sprig/reap/inputs/model_spec.rb
|
236
|
+
- spec/lib/sprig/reap/inputs_spec.rb
|
207
237
|
- spec/lib/sprig/reap/model_spec.rb
|
208
238
|
- spec/lib/sprig/reap/record_spec.rb
|
209
239
|
- spec/lib/sprig/reap/seed_file_spec.rb
|