seed_dump 0.4.2 → 0.4.3

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.
data/CHANGELOG.rdoc CHANGED
@@ -1,5 +1,14 @@
1
1
  == Seed Dump
2
2
 
3
+ == 0.4.3 / 2013-05-11
4
+
5
+ * Handle abstract_class setting in ActiveRecord [craigjackson]
6
+ * added MAX option [OlegPasko]
7
+
8
+ == 0.4.2 / 2012-11-02
9
+
10
+ * Fix for bug resulting from top-level class redefinition [rroblak]
11
+
3
12
  == 0.4.1 / 2012-08-01
4
13
 
5
14
  * include TIMESTAMPS by default
data/README.rdoc CHANGED
@@ -68,6 +68,10 @@ FILE:
68
68
 
69
69
  LIMIT:
70
70
  Dump no more then this amount of data, default: no limit
71
+
72
+ MAX:
73
+ Split one create action per model to several create actions with MAX elements in each, default: no limit
74
+ It usefull for large data dumping to reduce memory usage
71
75
 
72
76
  MODEL(S):
73
77
  A model name or a comma seperated list of models, default: all models
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.2
1
+ 0.4.3
@@ -27,6 +27,7 @@ module SeedDump
27
27
  @opts['models'] = env['MODELS'] || (env['MODEL'] ? env['MODEL'] : "")
28
28
  @opts['file'] = env['FILE'] || "#{Rails.root}/db/seeds.rb"
29
29
  @opts['append'] = (env['APPEND'].true? && File.exists?(@opts['file']) )
30
+ @opts['max'] = env['MAX'] && env['MAX'].to_i > 0 ? env['MAX'].to_i : nil
30
31
  @ar_options = env['LIMIT'].to_i > 0 ? { :limit => env['LIMIT'].to_i } : {}
31
32
  @indent = " " * (env['INDENT'].nil? ? 2 : env['INDENT'].to_i)
32
33
  @opts['models'] = @opts['models'].split(',').collect {|x| x.underscore.singularize.camelize }
@@ -106,15 +107,25 @@ module SeedDump
106
107
  if @opts['without_protection']
107
108
  options = ', :without_protection => true '
108
109
  end
109
-
110
- "\n#{model}.create([\n" << rows.join(",\n") << "\n]#{options})\n"
110
+
111
+ if @opts['max']
112
+ splited_rows = rows.each_slice(@opts['max']).to_a
113
+ maxsarr = []
114
+ splited_rows.each do |sr|
115
+ maxsarr << "\n#{model}.create([\n" << sr.join(",\n") << "\n]#{options})\n"
116
+ end
117
+ maxsarr.join('')
118
+ else
119
+ "\n#{model}.create([\n" << rows.join(",\n") << "\n]#{options})\n"
120
+ end
121
+
111
122
  end
112
123
 
113
124
  def dumpModels
114
125
  @seed_rb = ""
115
126
  @models.sort.each do |model|
116
127
  m = model.constantize
117
- if m.ancestors.include?(ActiveRecord::Base)
128
+ if m.ancestors.include?(ActiveRecord::Base) && !m.abstract_class
118
129
  puts "Adding #{model} seeds." if @opts['verbose']
119
130
 
120
131
  if @opts['skip_callbacks']
data/seed_dump.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "seed_dump"
8
- s.version = "0.4.2"
8
+ s.version = "0.4.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Rob Halff"]
12
- s.date = "2012-11-29"
12
+ s.date = "2013-05-11"
13
13
  s.description = "Dump (parts) of your database to db/seeds.rb to get a headstart creating a meaningful seeds.rb file"
14
14
  s.email = "rob.halff@gmail.com"
15
15
  s.extra_rdoc_files = [
@@ -29,6 +29,8 @@ Gem::Specification.new do |s|
29
29
  "lib/true.rb",
30
30
  "seed_dump.gemspec",
31
31
  "test/fixtures/samples.yml",
32
+ "test/models/abstract_sample.rb",
33
+ "test/models/child_sample.rb",
32
34
  "test/models/nested/sample.rb",
33
35
  "test/models/sample.rb",
34
36
  "test/seed_dump_test.rb",
@@ -36,7 +38,7 @@ Gem::Specification.new do |s|
36
38
  ]
37
39
  s.homepage = "http://github.com/rhalff/seed_dump"
38
40
  s.require_paths = ["lib"]
39
- s.rubygems_version = "1.8.24"
41
+ s.rubygems_version = "1.8.25"
40
42
  s.summary = "{Seed Dumper for Rails}"
41
43
 
42
44
  if s.respond_to? :specification_version then
@@ -0,0 +1,3 @@
1
+ class AbstractSample < ActiveRecord::Base
2
+ self.abstract_class = true
3
+ end
@@ -0,0 +1,4 @@
1
+ class ChildSample < AbstractSample
2
+ attr_accessible :name
3
+ end
4
+
@@ -18,14 +18,14 @@ class SeedDumpTest < ActiveSupport::TestCase
18
18
  @env['MODEL_DIR'] = 'test/models/*.rb'
19
19
  @sd.setup @env
20
20
  @sd.loadModels
21
- assert_equal ["Sample"], @sd.models
21
+ assert_equal ["AbstractSample", "ChildSample", "Sample"], @sd.models
22
22
  end
23
23
 
24
24
  test "support nested models" do
25
25
  @env['MODEL_DIR'] = 'test/models/**/*.rb'
26
26
  @sd.setup @env
27
27
  @sd.loadModels
28
- assert_equal ["Nested::Sample", "Sample"], @sd.models
28
+ assert_equal ["AbstractSample", "ChildSample", "Nested::Sample", "Sample"], @sd.models
29
29
  end
30
30
 
31
31
  test "without timestamps" do
@@ -55,5 +55,15 @@ class SeedDumpTest < ActiveSupport::TestCase
55
55
  assert @sd.last_record.include?("id"), "WITH_ID must include id"
56
56
  end
57
57
 
58
+ test "skip abstract model" do
59
+ @env['MODELS'] = "AbstractSample"
60
+ @env['MODEL_DIR'] = 'test/models/*.rb'
61
+ @env['TIMESTAMPS'] = false
62
+ @sd.setup @env
63
+ @sd.loadModels
64
+ @sd.dumpModels
65
+ assert_equal [], @sd.last_record
66
+ end
67
+
58
68
 
59
69
  end
data/test/test_helper.rb CHANGED
@@ -9,7 +9,13 @@ require 'active_record'
9
9
  ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => ":memory:")
10
10
 
11
11
  ActiveRecord::Schema.define(:version => 1) do
12
- create_table "samples", :force => true do |t|
12
+ create_table "child_samples", :force => true do |t|
13
+ t.string "name"
14
+ t.datetime "created_at", :null => false
15
+ t.datetime "updated_at", :null => false
16
+ end
17
+
18
+ create_table "samples", :force => true do |t|
13
19
  t.string "string"
14
20
  t.text "text"
15
21
  t.integer "integer"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: seed_dump
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.4.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-11-29 00:00:00.000000000 Z
12
+ date: 2013-05-11 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Dump (parts) of your database to db/seeds.rb to get a headstart creating
15
15
  a meaningful seeds.rb file
@@ -32,6 +32,8 @@ files:
32
32
  - lib/true.rb
33
33
  - seed_dump.gemspec
34
34
  - test/fixtures/samples.yml
35
+ - test/models/abstract_sample.rb
36
+ - test/models/child_sample.rb
35
37
  - test/models/nested/sample.rb
36
38
  - test/models/sample.rb
37
39
  - test/seed_dump_test.rb
@@ -56,7 +58,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
56
58
  version: '0'
57
59
  requirements: []
58
60
  rubyforge_project:
59
- rubygems_version: 1.8.24
61
+ rubygems_version: 1.8.25
60
62
  signing_key:
61
63
  specification_version: 3
62
64
  summary: ! '{Seed Dumper for Rails}'