seed-fu-ndo 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 5c38383e5aff5d95ac0b56d5867a4bf7ee913d0bdb3294d9ba6e0c4745134140
4
+ data.tar.gz: 206efd0befc60f89d6f05ea4fde57ae878d1569408858942b786639d2938f871
5
+ SHA512:
6
+ metadata.gz: 50565451ee67916c6640ebc43d9696e68557da83897241bc004a325005f3c4b8f709cd753abc967025337eca2de60899a5dfba36da142982161fceacd97b42c5
7
+ data.tar.gz: b9cc49c08501a06755eaf7f810cc5f6b306a0c905b6ddaa48931022e50f1f8ace854152dc2d03a6a0aa3a21670459ddb1a249c0dde46dc5664c873cd4ff1ec3e
data/Rakefile CHANGED
@@ -21,7 +21,6 @@ RDoc::Task.new(:rdoc) do |rdoc|
21
21
  rdoc.rdoc_files.include('lib/**/*.rb')
22
22
  end
23
23
 
24
-
25
24
  Bundler::GemHelper.install_tasks
26
25
 
27
26
  require 'rspec/core/rake_task'
@@ -29,5 +28,4 @@ require 'rspec/core/rake_task'
29
28
  RSpec::Core::RakeTask.new do |t|
30
29
  end
31
30
 
32
-
33
- task :default => :spec
31
+ task default: :spec
@@ -1,31 +1,29 @@
1
1
  require 'seed-fu'
2
2
  require 'seed-fu-ndo/seeder'
3
- require 'seed-fu-ndo/railtie' if defined?(Rails) && Rails.version >= "3"
3
+ require 'seed-fu-ndo/railtie' if defined?(Rails) && Rails.version >= '3'
4
4
 
5
5
  module SeedFuNdo
6
6
  autoload :Recorder, 'seed-fu-ndo/recorder'
7
-
7
+
8
8
  mattr_reader :recorder
9
-
9
+
10
10
  # Unload seed data from files. Main entry point for third-party libraries.
11
11
  # [fixture_paths] The paths to look for seed files in.
12
12
  # [filter] A regexp. If given, only filenames matching this expression will be loaded.
13
13
  def self.unseed(fixture_paths = SeedFu.fixture_paths, filter = nil)
14
- capture(fixture_paths, filter).reverse.each do |seeder|
15
- seeder.unseed
16
- end
14
+ capture(fixture_paths, filter).reverse.each(&:unseed)
17
15
  end
18
-
16
+
19
17
  # Returns all seed records from the given fixture_paths that currently
20
18
  # exist in the database. No changes to the database are performed.
21
19
  def self.existing_seeds(fixture_paths = SeedFu.fixture_paths, filter = nil)
22
- existing = Hash.new {|h, k| h[k] = [] }
20
+ existing = Hash.new { |h, k| h[k] = [] }
23
21
  capture(fixture_paths, filter).each do |seeder|
24
22
  existing[seeder.model_class] += seeder.existing_records
25
23
  end
26
24
  existing
27
25
  end
28
-
26
+
29
27
  # Captures the seed fixtures without actually inserting anything.
30
28
  # Returns a list of seeder objects.
31
29
  def self.capture(fixture_paths = SeedFu.fixture_paths, filter = nil)
@@ -35,6 +33,4 @@ module SeedFuNdo
35
33
  ensure
36
34
  @@recorder = nil
37
35
  end
38
-
39
-
40
- end
36
+ end
@@ -2,7 +2,7 @@ module SeedFuNdo
2
2
  # Integrate unseed task into Rails.
3
3
  class Railtie < Rails::Railtie
4
4
  rake_tasks do
5
- load "tasks/seed_fu_ndo.rake"
5
+ load 'tasks/seed_fu_ndo.rake'
6
6
  end
7
7
  end
8
- end
8
+ end
@@ -1,18 +1,15 @@
1
1
  module SeedFuNdo
2
-
3
2
  # Records seeder instances created by Seed Fu.
4
3
  class Recorder
5
4
  attr_reader :seeders
6
-
5
+
7
6
  def initialize
8
7
  @seeders = []
9
8
  end
10
-
9
+
11
10
  # Record a single seeder.
12
11
  def record(seeder)
13
12
  seeders << seeder
14
13
  end
15
-
16
14
  end
17
-
18
15
  end
@@ -1,46 +1,44 @@
1
1
  module SeedFu
2
-
3
2
  # Enhanced class from Seed Fu to allow for recording and destroying seed data.
4
3
  class Seeder
5
-
6
4
  attr_reader :model_class
7
-
8
- # Record instead of inserting the data if in recording mode.
5
+
6
+ # Record instead of inserting the data if in recording mode.
9
7
  def seed_with_undo
10
8
  if r = SeedFuNdo.recorder
11
9
  r.record self
12
-
10
+
13
11
  # return existing records in case they are processed by the caller
14
12
  @data.map { |record_data| find_record(record_data) }
15
13
  else
16
14
  seed_without_undo
17
15
  end
18
16
  end
19
- alias_method_chain :seed, :undo
20
-
17
+ alias seed_without_undo seed
18
+ alias seed seed_with_undo
19
+
21
20
  # Destroy the seed data.
22
21
  def unseed
23
22
  @model_class.transaction do
24
23
  existing_records.reverse.each { |record| unseed_record(record) }
25
24
  end
26
25
  end
27
-
26
+
28
27
  # List of the seeded records that exist in the database.
29
28
  def existing_records
30
29
  @data.map { |record_data| find_record(record_data.symbolize_keys) }.compact
31
30
  end
32
-
31
+
33
32
  private
34
-
33
+
35
34
  def unseed_record(record)
36
- puts " - Remove #{record.inspect}" unless @options[:quiet]
35
+ puts " - Remove #{record.inspect}" unless @options[:quiet]
37
36
 
38
- record.destroy || raise(ActiveRecord::ActiveRecordError, record.errors.full_messages.join(", ").presence)
37
+ record.destroy || raise(ActiveRecord::ActiveRecordError, record.errors.full_messages.join(', ').presence)
39
38
  end
40
-
39
+
41
40
  def find_record(data)
42
41
  @model_class.where(constraint_conditions(data)).first
43
42
  end
44
43
  end
45
-
46
- end
44
+ end
@@ -1,4 +1,4 @@
1
1
  module SeedFuNdo
2
2
  # The current version of Seed Fu-ndo
3
- VERSION = '0.0.2'
3
+ VERSION = '0.0.3'.freeze
4
4
  end
@@ -1,19 +1,17 @@
1
1
  require 'seed-fu-ndo'
2
2
 
3
3
  namespace :db do
4
- desc "Unloads seed data for the current environment."
5
- task :unseed_fu => :environment do
6
- if ENV["FILTER"]
7
- filter = /#{ENV["FILTER"].gsub(/,/, "|")}/
8
- end
4
+ desc 'Unloads seed data for the current environment.'
5
+ task unseed_fu: :environment do
6
+ filter = /#{ENV["FILTER"].tr(',', "|")}/ if ENV['FILTER']
9
7
 
10
- if ENV["FIXTURE_PATH"]
11
- fixture_paths = [ENV["FIXTURE_PATH"], ENV["FIXTURE_PATH"] + '/' + Rails.env]
8
+ if ENV['FIXTURE_PATH']
9
+ fixture_paths = [ENV['FIXTURE_PATH'], ENV['FIXTURE_PATH'] + '/' + Rails.env]
12
10
  end
13
11
 
14
12
  SeedFuNdo.unseed(fixture_paths, filter)
15
13
  end
16
-
14
+
17
15
  # alias
18
- task :unseed => 'db:unseed_fu'
19
- end
16
+ task unseed: 'db:unseed_fu'
17
+ end
@@ -1,36 +1,32 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe SeedFu::Seeder do
4
-
5
- context "in regular seed" do
6
- it "should run single seeds" do
4
+ context 'in regular seed' do
5
+ it 'should run single seeds' do
7
6
  SeededModel.seed(:title) do |s|
8
7
  s.title = 'Foo'
9
8
  s.login = 'Foo'
10
9
  s.first_name = 'Bar'
11
10
  end
12
-
13
- SeededModel.count.should == 1
11
+
12
+ expect(SeededModel.count).to eq(1)
14
13
  end
15
-
16
- it "should run multiple seeds" do
17
- SeededModel.seed(:title,
18
- {:title => 'Foo', :login => 'Foo', :first_name => 'Foo'},
19
- {:title => 'Bar', :login => 'Bar', :first_name => 'Bar'}
20
- )
21
-
22
- SeededModel.count.should == 2
14
+
15
+ it 'should run multiple seeds' do
16
+ SeededModel.seed(:title,
17
+ { title: 'Foo', login: 'Foo', first_name: 'Foo' },
18
+ title: 'Bar', login: 'Bar', first_name: 'Bar')
19
+
20
+ expect(SeededModel.count).to eq(2)
23
21
  end
24
22
  end
25
-
26
- context "in unseed" do
27
-
23
+
24
+ context 'in unseed' do
28
25
  before do
29
26
  SeedFuNdo.send(:class_variable_set, :@@recorder, SeedFuNdo::Recorder.new)
30
27
  end
31
-
32
- context "for single seeds" do
33
-
28
+
29
+ context 'for single seeds' do
34
30
  before do
35
31
  SeededModel.seed(:title) do |s|
36
32
  s.title = 'Foo'
@@ -38,52 +34,49 @@ describe SeedFu::Seeder do
38
34
  s.first_name = 'Bar'
39
35
  end
40
36
  end
41
-
42
- it "should only record" do
43
- SeededModel.count.should == 0
37
+
38
+ it 'should only record' do
39
+ expect(SeededModel.count).to eq(0)
44
40
  end
45
-
46
- it "should ignore non-existing records" do
41
+
42
+ it 'should ignore non-existing records' do
47
43
  unseed
48
- SeededModel.count.should == 0
44
+ expect(SeededModel.count).to eq(0)
49
45
  end
50
-
51
- it "should unseed existing records" do
52
- SeededModel.create!(:title => 'Foo')
46
+
47
+ it 'should unseed existing records' do
48
+ SeededModel.create!(title: 'Foo')
53
49
  unseed
54
- SeededModel.count.should == 0
50
+ expect(SeededModel.count).to eq(0)
55
51
  end
56
-
57
- it "should find existing records" do
58
- rec = SeededModel.create!(:title => 'Foo')
59
- SeedFuNdo.recorder.seeders.first.existing_records.should == [rec]
52
+
53
+ it 'should find existing records' do
54
+ rec = SeededModel.create!(title: 'Foo')
55
+ expect(SeedFuNdo.recorder.seeders.first.existing_records).to eq([rec])
60
56
  end
61
57
  end
62
-
63
- context "for multiple seeds" do
64
-
58
+
59
+ context 'for multiple seeds' do
65
60
  before do
66
- SeededModel.seed(:title,
67
- {:title => 'Foo', :login => 'Foo', :first_name => 'Foo'},
68
- {:title => 'Bar', :login => 'Bar', :first_name => 'Bar'}
69
- )
61
+ SeededModel.seed(:title,
62
+ { title: 'Foo', login: 'Foo', first_name: 'Foo' },
63
+ title: 'Bar', login: 'Bar', first_name: 'Bar')
70
64
  end
71
-
72
- it "should only record" do
73
- SeededModel.count.should == 0
65
+
66
+ it 'should only record' do
67
+ expect(SeededModel.count).to eq(0)
74
68
  end
75
-
76
- it "should rollback if one record cannot be destroyed" do
77
- SeededModel.create!(:title => 'Foo', :fail_to_destroy => true)
78
- SeededModel.create!(:title => 'Bar')
69
+
70
+ it 'should rollback if one record cannot be destroyed' do
71
+ SeededModel.create!(title: 'Foo', fail_to_destroy: true)
72
+ SeededModel.create!(title: 'Bar')
79
73
  expect { unseed }.to raise_error(ActiveRecord::ActiveRecordError)
80
- SeededModel.count.should == 2
74
+ expect(SeededModel.count).to eq(2)
81
75
  end
82
76
  end
83
-
84
77
  end
85
78
  end
86
79
 
87
80
  def unseed
88
- SeedFuNdo.recorder.seeders.reverse.each {|s| s.unseed }
81
+ SeedFuNdo.recorder.seeders.reverse.each(&:unseed)
89
82
  end
@@ -5,32 +5,31 @@ require 'logger'
5
5
 
6
6
  SeedFu.quiet = true
7
7
 
8
- ActiveRecord::Base.logger = Logger.new(File.dirname(__FILE__) + "/../debug.log")
8
+ ActiveRecord::Base.logger = Logger.new(File.dirname(__FILE__) + '/../debug.log')
9
9
 
10
10
  ActiveRecord::Base.establish_connection(
11
- :adapter => "sqlite3",
12
- :database => File.dirname(__FILE__) + "/test.sqlite3"
11
+ adapter: 'sqlite3',
12
+ database: File.dirname(__FILE__) + '/test.sqlite3'
13
13
  )
14
14
 
15
- ActiveRecord::Schema.define :version => 0 do
16
- create_table :seeded_models, :force => true do |t|
15
+ ActiveRecord::Schema.define version: 0 do
16
+ create_table :seeded_models, force: true do |t|
17
17
  t.column :login, :string
18
18
  t.column :first_name, :string
19
19
  t.column :last_name, :string
20
20
  t.column :title, :string
21
- t.column :fail_to_destroy, :boolean, :default => false
21
+ t.column :fail_to_destroy, :boolean, default: false
22
22
  end
23
23
  end
24
24
 
25
25
  class SeededModel < ActiveRecord::Base
26
26
  validates_presence_of :title
27
- attr_protected :first_name
28
27
 
29
- before_destroy { false if fail_to_destroy }
28
+ before_destroy { throw :abort if fail_to_destroy }
30
29
  end
31
30
 
32
31
  RSpec.configure do |config|
33
32
  config.before do
34
33
  SeededModel.delete_all
35
34
  end
36
- end
35
+ end
Binary file
metadata CHANGED
@@ -1,120 +1,99 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: seed-fu-ndo
3
- version: !ruby/object:Gem::Version
4
- hash: 27
5
- prerelease:
6
- segments:
7
- - 0
8
- - 0
9
- - 2
10
- version: 0.0.2
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.3
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - Pascal Zumkehr
14
8
  autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
-
18
- date: 2012-06-14 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
21
- version_requirements: &id001 !ruby/object:Gem::Requirement
22
- none: false
23
- requirements:
11
+ date: 2018-06-06 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: seed-fu
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
24
17
  - - ">="
25
- - !ruby/object:Gem::Version
26
- hash: 7
27
- segments:
28
- - 2
29
- - 2
30
- - 0
18
+ - !ruby/object:Gem::Version
31
19
  version: 2.2.0
32
- prerelease: false
33
- requirement: *id001
34
- name: seed-fu
35
20
  type: :runtime
36
- - !ruby/object:Gem::Dependency
37
- version_requirements: &id002 !ruby/object:Gem::Requirement
38
- none: false
39
- requirements:
40
- - - ">="
41
- - !ruby/object:Gem::Version
42
- hash: 3
43
- segments:
44
- - 0
45
- version: "0"
46
21
  prerelease: false
47
- requirement: *id002
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 2.2.0
27
+ - !ruby/object:Gem::Dependency
48
28
  name: rspec
49
- type: :development
50
- - !ruby/object:Gem::Dependency
51
- version_requirements: &id003 !ruby/object:Gem::Requirement
52
- none: false
53
- requirements:
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
54
31
  - - ">="
55
- - !ruby/object:Gem::Version
56
- hash: 3
57
- segments:
58
- - 0
59
- version: "0"
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
60
35
  prerelease: false
61
- requirement: *id003
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
62
42
  name: sqlite3
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
63
48
  type: :development
64
- description: While Seed Fu solves the problem for inserting and maintaining seed data in a database, Seed Fu-ndo adds the possiblity to remove this data again.
65
- email:
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ description: While Seed Fu solves the problem for inserting and maintaining seed data
56
+ in a database, Seed Fu-ndo adds the possiblity to remove this data again.
57
+ email:
66
58
  - spam@codez.ch
67
59
  executables: []
68
-
69
60
  extensions: []
70
-
71
61
  extra_rdoc_files: []
72
-
73
- files:
74
- - lib/tasks/seed_fu_ndo.rake
62
+ files:
63
+ - Rakefile
75
64
  - lib/seed-fu-ndo.rb
76
- - lib/seed-fu-ndo/seeder.rb
65
+ - lib/seed-fu-ndo/railtie.rb
77
66
  - lib/seed-fu-ndo/recorder.rb
67
+ - lib/seed-fu-ndo/seeder.rb
78
68
  - lib/seed-fu-ndo/version.rb
79
- - lib/seed-fu-ndo/railtie.rb
80
- - Rakefile
81
- - spec/test.sqlite3
69
+ - lib/tasks/seed_fu_ndo.rake
82
70
  - spec/seeder_spec.rb
83
71
  - spec/spec_helper.rb
72
+ - spec/test.sqlite3
84
73
  homepage: http://github.com/codez/seed-fu-ndo
85
74
  licenses: []
86
-
75
+ metadata: {}
87
76
  post_install_message:
88
77
  rdoc_options: []
89
-
90
- require_paths:
78
+ require_paths:
91
79
  - lib
92
- required_ruby_version: !ruby/object:Gem::Requirement
93
- none: false
94
- requirements:
80
+ required_ruby_version: !ruby/object:Gem::Requirement
81
+ requirements:
95
82
  - - ">="
96
- - !ruby/object:Gem::Version
97
- hash: 3
98
- segments:
99
- - 0
100
- version: "0"
101
- required_rubygems_version: !ruby/object:Gem::Requirement
102
- none: false
103
- requirements:
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
85
+ required_rubygems_version: !ruby/object:Gem::Requirement
86
+ requirements:
104
87
  - - ">="
105
- - !ruby/object:Gem::Version
106
- hash: 3
107
- segments:
108
- - 0
109
- version: "0"
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
110
90
  requirements: []
111
-
112
91
  rubyforge_project:
113
- rubygems_version: 1.8.17
92
+ rubygems_version: 2.7.6
114
93
  signing_key:
115
- specification_version: 3
94
+ specification_version: 4
116
95
  summary: Seed Fu-ndo adds undo functionality to Seed Fu
117
- test_files:
96
+ test_files:
97
+ - spec/spec_helper.rb
118
98
  - spec/test.sqlite3
119
99
  - spec/seeder_spec.rb
120
- - spec/spec_helper.rb