sprig-reap 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -23,7 +23,7 @@ rake db:seed:reap
23
23
  ```
24
24
  Or from the Rails console:
25
25
  ```
26
- Sprig::Reap.reap
26
+ Sprig.reap
27
27
  ```
28
28
 
29
29
  By default, Sprig::Reap will create seed files (currently in `.yaml` only) for every model in your Rails
@@ -44,7 +44,7 @@ or any ignored attributes you don't want to show up in any of the seed files.
44
44
  rake db:seed:reap TARGET_ENV=integration MODELS=User,Post IGNORED_ATTRS=created_at,updated_at
45
45
 
46
46
  # Rails Console
47
- Sprig::Reap.reap(target_env: 'integration', models: [User, Post], ignored_attrs: [:created_at,
47
+ Sprig.reap(target_env: 'integration', models: [User, Post], ignored_attrs: [:created_at,
48
48
  :updated_at])
49
49
  ```
50
50
 
@@ -1,16 +1,19 @@
1
1
  require "sprig/reap/version"
2
+ require "sprig/reap/railtie"
2
3
 
3
4
  module Sprig::Reap
4
5
  autoload :Sprig, 'sprig'
5
6
  autoload :TsortableHash, 'sprig/reap/tsortable_hash'
6
- autoload :Railtie, 'sprig/reap/railtie'
7
7
  autoload :Configuration, 'sprig/reap/configuration'
8
8
  autoload :Model, 'sprig/reap/model'
9
+ autoload :Association, 'sprig/reap/association'
9
10
  autoload :Record, 'sprig/reap/record'
10
11
  autoload :SeedFile, 'sprig/reap/seed_file'
11
12
 
12
13
  class << self
13
- def reap(options = {})
14
+ def reap(input = {})
15
+ options = input.to_hash
16
+
14
17
  configure do |config|
15
18
  config.target_env = options[:target_env] || options['TARGET_ENV']
16
19
  config.classes = options[:models] || options['MODELS']
@@ -20,6 +23,10 @@ module Sprig::Reap
20
23
  Model.all.each { |model| SeedFile.new(model).write }
21
24
  end
22
25
 
26
+ def clear_config
27
+ @@configuration = nil
28
+ end
29
+
23
30
  private
24
31
 
25
32
  cattr_reader :configuration
@@ -0,0 +1,45 @@
1
+ module Sprig::Reap
2
+ class Association
3
+ attr_reader :association
4
+
5
+ def initialize(association)
6
+ @association = association
7
+ end
8
+
9
+ def klass
10
+ name.to_s.classify.constantize
11
+ end
12
+
13
+ def name
14
+ association.options[:class_name] || association.name
15
+ end
16
+
17
+ def polymorphic?
18
+ !!association.options[:polymorphic]
19
+ end
20
+
21
+ def polymorphic_dependencies
22
+ return [] unless polymorphic?
23
+ @polymorphic_dependencies ||= ActiveRecord::Base.subclasses.select { |model| polymorphic_match? model }
24
+ end
25
+
26
+ def polymorphic_match?(model)
27
+ model.reflect_on_all_associations(:has_many).any? do |has_many_association|
28
+ has_many_association.options[:as] == association.name
29
+ end
30
+ end
31
+
32
+ def dependencies
33
+ polymorphic? ? polymorphic_dependencies : Array(klass)
34
+ end
35
+
36
+ def foreign_key
37
+ association.options[:foreign_key] || name.to_s + '_id'
38
+ end
39
+
40
+ def polymorphic_type
41
+ name.to_s + '_type'
42
+ end
43
+
44
+ end
45
+ end
@@ -1,6 +1,5 @@
1
1
  module Sprig::Reap
2
2
  class Configuration
3
- VALID_CLASSES = ActiveRecord::Base.subclasses
4
3
 
5
4
  def target_env
6
5
  @target_env ||= Rails.env
@@ -13,7 +12,7 @@ module Sprig::Reap
13
12
  end
14
13
 
15
14
  def classes
16
- @classes ||= VALID_CLASSES
15
+ @classes ||= valid_classes
17
16
  end
18
17
 
19
18
  def classes=(given_classes)
@@ -32,9 +31,16 @@ module Sprig::Reap
32
31
 
33
32
  private
34
33
 
34
+ def valid_classes
35
+ @valid_classes ||= begin
36
+ Rails.application.eager_load!
37
+ ActiveRecord::Base.subclasses
38
+ end
39
+ end
40
+
35
41
  def parse_valid_env_from(input)
36
42
  return if input.nil?
37
- target_environment = input.strip.downcase
43
+ target_environment = input.to_s.strip.downcase
38
44
  create_seeds_folder(target_environment)
39
45
  yield target_environment
40
46
  end
@@ -60,7 +66,7 @@ module Sprig::Reap
60
66
 
61
67
  def validate_classes(classes)
62
68
  classes.each do |klass|
63
- unless VALID_CLASSES.include? klass
69
+ unless valid_classes.include? klass
64
70
  raise ArgumentError, "Cannot create a seed file for #{klass} because it is not a subclass of ActiveRecord::Base."
65
71
  end
66
72
  end
@@ -3,7 +3,7 @@ module Sprig::Reap
3
3
  def self.all
4
4
  @@all ||= begin
5
5
  models = Sprig::Reap.classes.map { |klass| new(klass) }
6
-
6
+
7
7
  tsorted_classes(models).map do |klass|
8
8
  models.find { |model| model.klass == klass }
9
9
  end
@@ -26,8 +26,12 @@ module Sprig::Reap
26
26
  end
27
27
 
28
28
  def dependencies
29
- @dependencies ||= klass.reflect_on_all_associations(:belongs_to).map do |association|
30
- association.name.to_s.classify.constantize
29
+ @dependencies ||= associations.flat_map(&:dependencies)
30
+ end
31
+
32
+ def associations
33
+ @associations ||= klass.reflect_on_all_associations(:belongs_to).map do |association|
34
+ Association.new(association)
31
35
  end
32
36
  end
33
37
 
@@ -0,0 +1,7 @@
1
+ module Sprig::Reap
2
+ class Railtie < Rails::Railtie
3
+ rake_tasks do
4
+ load 'tasks/reap.rake'
5
+ end
6
+ end
7
+ end
@@ -3,19 +3,21 @@ module Sprig::Reap
3
3
  attr_reader :record, :model
4
4
  attr_writer :sprig_id
5
5
 
6
+ delegate :id, to: :record
7
+
6
8
  def initialize(record, model)
7
9
  @record = record
8
10
  @model = model
9
11
  end
10
12
 
11
13
  def attributes
12
- @attributes ||= Array.new.replace(model.attributes).tap do |attrs|
13
- attrs[0] = 'sprig_id'
14
- end
14
+ @attributes ||= model.attributes.delete_if { |a| a == "id" }
15
15
  end
16
16
 
17
17
  def to_hash
18
- attributes.reduce(Hash.new) { |hash, attr| hash.merge(attr => send(attr)) }
18
+ attributes.reduce({"sprig_id" => sprig_id}) do |hash, attr|
19
+ hash.merge(attr => get_value_for(attr))
20
+ end
19
21
  end
20
22
 
21
23
  def sprig_id
@@ -24,12 +26,8 @@ module Sprig::Reap
24
26
 
25
27
  private
26
28
 
27
- def method_missing(method, *args, &block)
28
- attr = model.attributes.find { |attr| attr == method.to_s }
29
-
30
- if attr.nil?
31
- super
32
- elsif dependency_finder.match(attr)
29
+ def get_value_for(attr)
30
+ if dependency?(attr)
33
31
  klass = klass_for(attr)
34
32
  id = record.send(attr)
35
33
  sprig_id = Model.find(klass, id).sprig_id
@@ -40,16 +38,22 @@ module Sprig::Reap
40
38
  end
41
39
  end
42
40
 
43
- def respond_to_missing?(method, include_private = false)
44
- model.attributes.include?(method.to_s) || super
41
+ def dependency?(attr)
42
+ attr.in? model.associations.map(&:foreign_key)
45
43
  end
46
44
 
47
- def dependency_finder
48
- /_id/
45
+ def klass_for(foreign_key)
46
+ association = association_for(foreign_key)
47
+
48
+ if association.polymorphic?
49
+ record.send(association.polymorphic_type).constantize
50
+ else
51
+ association.klass
52
+ end
49
53
  end
50
54
 
51
- def klass_for(attr)
52
- attr.gsub(dependency_finder, '').classify.constantize
55
+ def association_for(foreign_key)
56
+ model.associations.detect { |a| a.foreign_key == foreign_key }
53
57
  end
54
58
 
55
59
  def sprig_record(klass, sprig_id)
@@ -44,6 +44,8 @@ module Sprig::Reap
44
44
  end
45
45
 
46
46
  def existing_sprig_ids(yaml)
47
+ return if yaml.empty?
48
+
47
49
  YAML.load(yaml).fetch(DEFAULT_NAMESPACE).to_a.map do |record|
48
50
  record.fetch('sprig_id')
49
51
  end
@@ -1,5 +1,5 @@
1
1
  module Sprig
2
2
  module Reap
3
- VERSION = "0.0.3"
3
+ VERSION = "0.0.4"
4
4
  end
5
5
  end
@@ -2,7 +2,6 @@ namespace :db do
2
2
  namespace :seed do
3
3
  desc 'Create Sprig seed files from database records'
4
4
  task :reap => :environment do
5
- Rails.application.eager_load!
6
5
  Sprig::Reap.reap(ENV)
7
6
  end
8
7
  end
Binary file
@@ -1,2 +1,5 @@
1
1
  class Post < ActiveRecord::Base
2
+ belongs_to :poster, :class_name => "User"
3
+
4
+ has_many :votes, :as => :votable
2
5
  end
@@ -0,0 +1,5 @@
1
+ class Vote < ActiveRecord::Base
2
+ belongs_to :votable, :polymorphic => true
3
+
4
+ validates :votable_type, :votable_id, :presence => true
5
+ end
@@ -0,0 +1,3 @@
1
+ - sprig_id: 1
2
+ votable_id: <%= sprig_record(Post, 1).id %>
3
+ votable_type: Post
@@ -0,0 +1,86 @@
1
+ require 'spec_helper'
2
+
3
+ describe Sprig::Reap::Association do
4
+ let!(:user) { User.create(:first_name => 'Bo', :last_name => 'Janglez') }
5
+ let!(:post) { Post.create(:poster => user) }
6
+ let!(:comment) { Comment.create(:post => post) }
7
+ let!(:vote) { Vote.create(:votable => post) }
8
+
9
+ let(:standard_association) { Comment.reflect_on_all_associations(:belongs_to).first }
10
+ let(:class_named_association) { Post.reflect_on_all_associations(:belongs_to).first }
11
+ let(:polymorphic_association) { Vote.reflect_on_all_associations(:belongs_to).first }
12
+
13
+ describe "#polymorphic?" do
14
+ context "when given a non-polymorphic dependency" do
15
+ subject { described_class.new(standard_association) }
16
+
17
+ its(:polymorphic?) { should == false }
18
+ end
19
+
20
+ context "when given a polymorphic dependency" do
21
+ subject { described_class.new(polymorphic_association) }
22
+
23
+ its(:polymorphic?) { should == true }
24
+ end
25
+ end
26
+
27
+ describe "#klass" do
28
+ context "given a standard association" do
29
+ subject { described_class.new(standard_association) }
30
+
31
+ its(:klass) { should == Post }
32
+ end
33
+
34
+ context "given a named association" do
35
+ subject { described_class.new(class_named_association) }
36
+
37
+ its(:klass) { should == User }
38
+ end
39
+ end
40
+
41
+ describe "#polymorphic_dependencies" do
42
+ context "when the association is not polymorphic" do
43
+ subject { described_class.new(standard_association) }
44
+
45
+ its(:polymorphic_dependencies) { should == [] }
46
+ end
47
+
48
+ context "when the association is polymorphic" do
49
+ subject { described_class.new(polymorphic_association) }
50
+
51
+ its(:polymorphic_dependencies) { should == [Post] }
52
+ end
53
+ end
54
+
55
+ describe "#polymorphic_match?" do
56
+ context "when the given model does not have a matching polymorphic association" do
57
+ subject { described_class.new(polymorphic_association) }
58
+
59
+ it "returns false" do
60
+ subject.polymorphic_match?(User).should == false
61
+ end
62
+ end
63
+
64
+ context "when the given model has a matching polymorphic association" do
65
+ subject { described_class.new(polymorphic_association) }
66
+
67
+ it "returns true" do
68
+ subject.polymorphic_match?(Post).should == true
69
+ end
70
+ end
71
+ end
72
+
73
+ describe "#dependencies" do
74
+ context "when the association is polymorphic" do
75
+ subject { described_class.new(standard_association) }
76
+
77
+ its(:dependencies) { should == [Post] }
78
+ end
79
+
80
+ context "when the association is not polymorphic" do
81
+ subject { described_class.new(polymorphic_association) }
82
+
83
+ its(:dependencies) { should == [Post] }
84
+ end
85
+ end
86
+ end
@@ -22,7 +22,7 @@ describe Sprig::Reap::Configuration do
22
22
  end
23
23
  end
24
24
 
25
- context "given a non-nil value" do
25
+ context "given a non-nil string value" do
26
26
  let(:input) { ' ShaBOOSH' }
27
27
 
28
28
  it "formats the given value and then sets the target environment" do
@@ -43,6 +43,28 @@ describe Sprig::Reap::Configuration do
43
43
  end
44
44
  end
45
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
63
+
64
+ File.directory?('./spec/fixtures/db/seeds/shaboosh').should == true
65
+ end
66
+ end
67
+ end
46
68
  end
47
69
 
48
70
  describe "#classes" do
@@ -4,14 +4,15 @@ describe Sprig::Reap::Model do
4
4
  describe ".all" do
5
5
  let(:all_models) do
6
6
  [
7
+ described_class.new(User),
7
8
  described_class.new(Post),
8
9
  described_class.new(Comment),
9
- described_class.new(User)
10
+ described_class.new(Vote)
10
11
  ]
11
12
  end
12
13
 
13
14
  before do
14
- Sprig::Reap.stub(:classes).and_return([Comment, Post, User])
15
+ Sprig::Reap.stub(:classes).and_return([Comment, Post, User, Vote])
15
16
  end
16
17
 
17
18
  it "returns an dependency-sorted array of Sprig::Reap::Models" do
@@ -64,6 +65,34 @@ describe Sprig::Reap::Model do
64
65
  subject { described_class.new(Comment) }
65
66
 
66
67
  its(:dependencies) { should == [Post] }
68
+
69
+ context "when the model is polymorphic" do
70
+ subject { described_class.new(Vote) }
71
+
72
+ its(:dependencies) { should == [Post] }
73
+ end
74
+
75
+ context "when the model has a dependency with an explicit :class_name" do
76
+ subject { described_class.new(Post) }
77
+
78
+ its(:dependencies) { should == [User] }
79
+ end
80
+ end
81
+
82
+ describe "#associations" do
83
+ let(:association) { double('Association') }
84
+
85
+ subject { described_class.new(Post) }
86
+
87
+ before do
88
+ Post.stub(:reflect_on_all_associations).with(:belongs_to).and_return([association])
89
+ end
90
+
91
+ it "creates an Association object for each belongs to association the model has" do
92
+ Sprig::Reap::Association.should_receive(:new).with(association)
93
+
94
+ subject.associations
95
+ end
67
96
  end
68
97
 
69
98
  describe "#find" do
@@ -96,6 +125,7 @@ describe Sprig::Reap::Model do
96
125
  before do
97
126
  subject.existing_sprig_ids = [1, 5, 'l_2', 'l_10', 'such_sprigs', 10.9]
98
127
  end
128
+
99
129
  it "returns an integer-type sprig_id that is not taken" do
100
130
  subject.generate_sprig_id.should == 6
101
131
  end
@@ -128,6 +158,16 @@ describe Sprig::Reap::Model do
128
158
  subject.to_yaml.should == yaml_from_file('records_without_namespace.yml')
129
159
  end
130
160
  end
161
+
162
+ context "for a polymorphic model" do
163
+ it "returns the correct yaml" do
164
+ Vote.create(:votable => post1)
165
+
166
+ subject = described_class.new(Vote)
167
+
168
+ subject.to_yaml.should == yaml_from_file('polymorphic_vote_record.yml')
169
+ end
170
+ end
131
171
  end
132
172
 
133
173
  def yaml_from_file(basename)
@@ -6,12 +6,19 @@ describe Sprig::Reap::Record do
6
6
  let(:record) { double('ActiveRecord::Base Instance') }
7
7
  let(:model) { double('Sprig::Reap::Model') }
8
8
  let(:reap_record) { double('Sprig::Reap::Record for class Very', :sprig_id => 5) }
9
+ let(:association) do
10
+ double('Sprig::Reap::Association',
11
+ :foreign_key => "very_id",
12
+ :klass => Very,
13
+ :polymorphic? => false
14
+ )
15
+ end
9
16
  let(:sprig_record) { "<%= sprig_record(Very, 5).id %>" }
10
17
 
11
18
  subject { described_class.new(record, model) }
12
19
 
13
20
  before do
14
- attrs = {
21
+ attrs = {
15
22
  'id' => 0,
16
23
  'such' => 1,
17
24
  'wow' => 2,
@@ -24,21 +31,18 @@ describe Sprig::Reap::Record do
24
31
 
25
32
  model.stub(:attributes).and_return(attrs.keys)
26
33
  model.stub(:existing_sprig_ids).and_return([])
34
+ model.stub(:associations).and_return([association])
27
35
 
28
36
  Sprig::Reap::Model.stub(:find).and_return(reap_record)
29
37
  end
30
38
 
31
- its(:id) { should == 0 }
32
- its(:such) { should == 1 }
33
- its(:wow) { should == 2 }
34
- its(:very_id) { should == sprig_record }
39
+ its(:id) { should == 0 }
35
40
 
36
41
  describe "#attributes" do
37
- it "returns an array of attributes from the given model with sprig_id swapped out for id" do
42
+ it "returns an array of attributes from the given model sans id" do
38
43
  subject.attributes.should == %w(
39
- sprig_id
40
44
  such
41
- wow
45
+ wow
42
46
  very_id
43
47
  )
44
48
  end
@@ -86,6 +86,26 @@ describe Sprig::Reap::SeedFile do
86
86
  end
87
87
  end
88
88
 
89
+ context "when the seed file exists but is empty inside" do
90
+ before do
91
+ File.open(subject.path, 'w') { |file| file.write('') }
92
+ end
93
+
94
+ it "grabs the yaml for the given model without a namespace" do
95
+ model.should_receive(:to_yaml).with(:namespace => nil)
96
+
97
+ subject.write
98
+ end
99
+
100
+ it "populates the file" do
101
+ starting_size = File.size(subject.path)
102
+
103
+ subject.write
104
+
105
+ File.size?(subject.path).should > starting_size
106
+ end
107
+ end
108
+
89
109
  context "when the seed file does not yet exist" do
90
110
  it "does not pass any existing sprig ids to the given model" do
91
111
  model.should_not_receive(:existing_sprig_ids=)
@@ -14,8 +14,14 @@ describe Sprig::Reap do
14
14
  setup_seed_folder('./spec/fixtures/db/seeds/dreamland', &example)
15
15
  end
16
16
 
17
+ after do
18
+ subject.clear_config
19
+ end
20
+
17
21
  it "generates a seed file for each class" do
18
- seed_file.should_receive(:write).exactly(3).times
22
+ count = Sprig::Reap.classes.count
23
+
24
+ seed_file.should_receive(:write).exactly(count).times
19
25
 
20
26
  subject.reap
21
27
  end
@@ -30,7 +36,7 @@ describe Sprig::Reap do
30
36
 
31
37
  context "in 'TARGET_ENV'" do
32
38
  it "sets the environment" do
33
- subject.reap('ENV' => ' Dreamland')
39
+ subject.reap('TARGET_ENV' => ' Dreamland')
34
40
  subject.target_env.should == 'dreamland'
35
41
  end
36
42
  end
@@ -68,4 +74,12 @@ describe Sprig::Reap do
68
74
  end
69
75
  end
70
76
  end
77
+
78
+ describe ".clear_config" do
79
+ it "sets the configuration to nil" do
80
+ subject.clear_config
81
+
82
+ subject.class_variable_get(:@@configuration).should == nil
83
+ end
84
+ end
71
85
  end
@@ -26,6 +26,8 @@ RSpec.configure do |config|
26
26
 
27
27
  config.before(:each) do
28
28
  DatabaseCleaner.start
29
+
30
+ stub_rails_application
29
31
  end
30
32
 
31
33
  config.after(:each) do
@@ -40,7 +42,10 @@ User.connection.execute "DROP TABLE IF EXISTS users;"
40
42
  User.connection.execute "CREATE TABLE users (id INTEGER PRIMARY KEY , first_name VARCHAR(255), last_name VARCHAR(255), type VARCHAR(255));"
41
43
 
42
44
  Post.connection.execute "DROP TABLE IF EXISTS posts;"
43
- Post.connection.execute "CREATE TABLE posts (id INTEGER PRIMARY KEY , title VARCHAR(255), content VARCHAR(255), published BOOLEAN , user_id INTEGER);"
45
+ Post.connection.execute "CREATE TABLE posts (id INTEGER PRIMARY KEY , title VARCHAR(255), content VARCHAR(255), published BOOLEAN , poster_id INTEGER);"
44
46
 
45
47
  Comment.connection.execute "DROP TABLE IF EXISTS comments;"
46
48
  Comment.connection.execute "CREATE TABLE comments (id INTEGER PRIMARY KEY , post_id INTEGER, body VARCHAR(255));"
49
+
50
+ Vote.connection.execute "DROP TABLE IF EXISTS votes;"
51
+ Vote.connection.execute "CREATE TABLE votes (id INTEGER PRIMARY KEY, votable_id INTEGER, votable_type VARCHAR(255));"
@@ -8,4 +8,10 @@ module RailsStubs
8
8
  def stub_rails_env(env='development')
9
9
  Rails.stub(:env).and_return(env)
10
10
  end
11
+
12
+ def stub_rails_application
13
+ application_double = double("application", :eager_load! => true)
14
+
15
+ Rails.stub(:application).and_return(application_double)
16
+ end
11
17
  end
metadata CHANGED
@@ -1,18 +1,20 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sprig-reap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Ryan Stenberg
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2014-06-18 00:00:00.000000000 Z
12
+ date: 2014-06-19 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: rails
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
19
  - - ~>
18
20
  - !ruby/object:Gem::Version
@@ -20,6 +22,7 @@ dependencies:
20
22
  type: :development
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
23
26
  requirements:
24
27
  - - ~>
25
28
  - !ruby/object:Gem::Version
@@ -27,6 +30,7 @@ dependencies:
27
30
  - !ruby/object:Gem::Dependency
28
31
  name: sqlite3
29
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
30
34
  requirements:
31
35
  - - ~>
32
36
  - !ruby/object:Gem::Version
@@ -34,6 +38,7 @@ dependencies:
34
38
  type: :development
35
39
  prerelease: false
36
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
37
42
  requirements:
38
43
  - - ~>
39
44
  - !ruby/object:Gem::Version
@@ -41,6 +46,7 @@ dependencies:
41
46
  - !ruby/object:Gem::Dependency
42
47
  name: rspec
43
48
  requirement: !ruby/object:Gem::Requirement
49
+ none: false
44
50
  requirements:
45
51
  - - ~>
46
52
  - !ruby/object:Gem::Version
@@ -48,6 +54,7 @@ dependencies:
48
54
  type: :development
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
51
58
  requirements:
52
59
  - - ~>
53
60
  - !ruby/object:Gem::Version
@@ -55,6 +62,7 @@ dependencies:
55
62
  - !ruby/object:Gem::Dependency
56
63
  name: database_cleaner
57
64
  requirement: !ruby/object:Gem::Requirement
65
+ none: false
58
66
  requirements:
59
67
  - - ~>
60
68
  - !ruby/object:Gem::Version
@@ -62,6 +70,7 @@ dependencies:
62
70
  type: :development
63
71
  prerelease: false
64
72
  version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
65
74
  requirements:
66
75
  - - ~>
67
76
  - !ruby/object:Gem::Version
@@ -69,29 +78,33 @@ dependencies:
69
78
  - !ruby/object:Gem::Dependency
70
79
  name: pry
71
80
  requirement: !ruby/object:Gem::Requirement
81
+ none: false
72
82
  requirements:
73
- - - '>='
83
+ - - ! '>='
74
84
  - !ruby/object:Gem::Version
75
85
  version: '0'
76
86
  type: :development
77
87
  prerelease: false
78
88
  version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
79
90
  requirements:
80
- - - '>='
91
+ - - ! '>='
81
92
  - !ruby/object:Gem::Version
82
93
  version: '0'
83
94
  - !ruby/object:Gem::Dependency
84
95
  name: generator_spec
85
96
  requirement: !ruby/object:Gem::Requirement
97
+ none: false
86
98
  requirements:
87
- - - '>='
99
+ - - ! '>='
88
100
  - !ruby/object:Gem::Version
89
101
  version: '0'
90
102
  type: :development
91
103
  prerelease: false
92
104
  version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
93
106
  requirements:
94
- - - '>='
107
+ - - ! '>='
95
108
  - !ruby/object:Gem::Version
96
109
  version: '0'
97
110
  description: Sprig-Reap is a gem that allows you to output your application's data
@@ -102,8 +115,10 @@ executables: []
102
115
  extensions: []
103
116
  extra_rdoc_files: []
104
117
  files:
118
+ - lib/sprig/reap/association.rb
105
119
  - lib/sprig/reap/configuration.rb
106
120
  - lib/sprig/reap/model.rb
121
+ - lib/sprig/reap/railtie.rb
107
122
  - lib/sprig/reap/record.rb
108
123
  - lib/sprig/reap/seed_file.rb
109
124
  - lib/sprig/reap/tsortable_hash.rb
@@ -118,11 +133,14 @@ files:
118
133
  - spec/fixtures/models/comment.rb
119
134
  - spec/fixtures/models/post.rb
120
135
  - spec/fixtures/models/user.rb
136
+ - spec/fixtures/models/vote.rb
121
137
  - spec/fixtures/yaml/comment_seeds.yml
138
+ - spec/fixtures/yaml/polymorphic_vote_record.yml
122
139
  - spec/fixtures/yaml/post_seeds.yml
123
140
  - spec/fixtures/yaml/records_with_namespace.yml
124
141
  - spec/fixtures/yaml/records_without_namespace.yml
125
142
  - spec/fixtures/yaml/user_seeds.yml
143
+ - spec/lib/sprig/reap/association_spec.rb
126
144
  - spec/lib/sprig/reap/configuration_spec.rb
127
145
  - spec/lib/sprig/reap/model_spec.rb
128
146
  - spec/lib/sprig/reap/record_spec.rb
@@ -135,37 +153,41 @@ files:
135
153
  homepage: http://www.github.com/vigetlabs/sprig-reap
136
154
  licenses:
137
155
  - MIT
138
- metadata: {}
139
156
  post_install_message:
140
157
  rdoc_options: []
141
158
  require_paths:
142
159
  - lib
143
160
  required_ruby_version: !ruby/object:Gem::Requirement
161
+ none: false
144
162
  requirements:
145
- - - '>='
163
+ - - ! '>='
146
164
  - !ruby/object:Gem::Version
147
165
  version: '0'
148
166
  required_rubygems_version: !ruby/object:Gem::Requirement
167
+ none: false
149
168
  requirements:
150
- - - '>='
169
+ - - ! '>='
151
170
  - !ruby/object:Gem::Version
152
171
  version: '0'
153
172
  requirements: []
154
173
  rubyforge_project:
155
- rubygems_version: 2.0.3
174
+ rubygems_version: 1.8.23
156
175
  signing_key:
157
- specification_version: 4
176
+ specification_version: 3
158
177
  summary: Automatic seed file generation for Rails apps using Sprig.
159
178
  test_files:
160
179
  - spec/db/activerecord.db
161
180
  - spec/fixtures/models/comment.rb
162
181
  - spec/fixtures/models/post.rb
163
182
  - spec/fixtures/models/user.rb
183
+ - spec/fixtures/models/vote.rb
164
184
  - spec/fixtures/yaml/comment_seeds.yml
185
+ - spec/fixtures/yaml/polymorphic_vote_record.yml
165
186
  - spec/fixtures/yaml/post_seeds.yml
166
187
  - spec/fixtures/yaml/records_with_namespace.yml
167
188
  - spec/fixtures/yaml/records_without_namespace.yml
168
189
  - spec/fixtures/yaml/user_seeds.yml
190
+ - spec/lib/sprig/reap/association_spec.rb
169
191
  - spec/lib/sprig/reap/configuration_spec.rb
170
192
  - spec/lib/sprig/reap/model_spec.rb
171
193
  - spec/lib/sprig/reap/record_spec.rb
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: f72d013c5b2bbf87257269498744996d79443026
4
- data.tar.gz: 57f5ec7ef4b336f5fada9d80e44e3968d6060495
5
- SHA512:
6
- metadata.gz: 11beed039a533edd3ad4d9a39ea237fd1c2f1a9e55c281950dc7e0d57c21c68b7d5466dd30e3435371346f7c5e5c480dff1508442cb14c209f87a478d8b03279
7
- data.tar.gz: 73d1507a59b8c44690fc676f6e9e1ba6c15711ca8ba33b2ab697dfe8eb29252fc8daff5f042c0a3f7ec9a6ab355060858047f5ae4e2651c60a6d148d766fa229