seed_dump 0.4.3 → 0.5.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.
- data/README.rdoc +9 -2
- data/VERSION +1 -1
- data/lib/seed_dump/perform.rb +16 -15
- data/seed_dump.gemspec +2 -2
- data/test/seed_dump_test.rb +11 -4
- metadata +2 -2
data/README.rdoc
CHANGED
@@ -42,7 +42,7 @@ Use another output file instead of db/seeds.rb
|
|
42
42
|
|
43
43
|
rake db:seed:dump FILE=db/categories.rb
|
44
44
|
|
45
|
-
By default the :id column will not be added to the generated
|
45
|
+
By default the :id column will not be added to the generated create statements.
|
46
46
|
If you do want the :id to be included use WITH_ID:
|
47
47
|
|
48
48
|
rake db:seed:dump WITH_ID=1
|
@@ -54,15 +54,22 @@ It's up to you to edit these and change the values into something meaningful:
|
|
54
54
|
|
55
55
|
rake db:seed:dump MODEL=User NO_DATA=1 APPEND=true
|
56
56
|
|
57
|
+
If you want the dump to use `create!` rather than `create`:
|
58
|
+
|
59
|
+
rake db:seed:dump CREATE_METHOD='create!'
|
60
|
+
|
57
61
|
Here is a full example using all of the options above:
|
58
62
|
|
59
|
-
rake db:seed:dump MODELS=Category LIMIT=10 APPEND=true FILE=db/categories.rb WITH_ID=1 NO_DATA=1
|
63
|
+
rake db:seed:dump MODELS=Category LIMIT=10 APPEND=true FILE=db/categories.rb WITH_ID=1 NO_DATA=1 CREATE_METHOD='create!'
|
60
64
|
|
61
65
|
== All environment variables
|
62
66
|
|
63
67
|
APPEND:
|
64
68
|
Append the data to db/seeds.rb instead of overwriting it.
|
65
69
|
|
70
|
+
CREATE_METHOD:
|
71
|
+
Use the specified create method rather than 'create' (the default). Note: if you are using bash and want to use 'create!', be sure to use single quotes on the command line (i.e. CREATE_METHOD='create!').
|
72
|
+
|
66
73
|
FILE:
|
67
74
|
Use a different output file, default: db/seeds.rb
|
68
75
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.5.0
|
data/lib/seed_dump/perform.rb
CHANGED
@@ -6,11 +6,11 @@ module SeedDump
|
|
6
6
|
|
7
7
|
def initialize
|
8
8
|
@opts = {}
|
9
|
-
@ar_options = {}
|
9
|
+
@ar_options = {}
|
10
10
|
@indent = ""
|
11
11
|
@models = []
|
12
12
|
@last_record = []
|
13
|
-
@seed_rb = ""
|
13
|
+
@seed_rb = ""
|
14
14
|
@id_set_string = ""
|
15
15
|
@model_dir = 'app/models/**/*.rb'
|
16
16
|
end
|
@@ -33,6 +33,7 @@ module SeedDump
|
|
33
33
|
@opts['models'] = @opts['models'].split(',').collect {|x| x.underscore.singularize.camelize }
|
34
34
|
@opts['schema'] = env['PG_SCHEMA']
|
35
35
|
@opts['model_dir'] = env['MODEL_DIR'] || @model_dir
|
36
|
+
@opts['create_method'] = env['CREATE_METHOD'] || 'create'
|
36
37
|
end
|
37
38
|
|
38
39
|
def loadModels
|
@@ -57,7 +58,7 @@ module SeedDump
|
|
57
58
|
require f
|
58
59
|
|
59
60
|
puts "Detected model #{model}" if @opts['debug']
|
60
|
-
@models.push model if @opts['models'].include?(model) || @opts['models'].empty?
|
61
|
+
@models.push model if @opts['models'].include?(model) || @opts['models'].empty?
|
61
62
|
end
|
62
63
|
end
|
63
64
|
|
@@ -74,13 +75,13 @@ module SeedDump
|
|
74
75
|
v = v.to_s
|
75
76
|
else
|
76
77
|
v = attribute_for_inspect(r,k)
|
77
|
-
end
|
78
|
+
end
|
78
79
|
|
79
80
|
unless k == 'id' && !@opts['with_id']
|
80
81
|
if (!(k == 'created_at' || k == 'updated_at') || @opts['timestamps'])
|
81
82
|
a_s.push("#{k.to_sym.inspect} => #{v}")
|
82
83
|
end
|
83
|
-
end
|
84
|
+
end
|
84
85
|
end
|
85
86
|
|
86
87
|
def dumpModel(model)
|
@@ -91,34 +92,34 @@ module SeedDump
|
|
91
92
|
rows = []
|
92
93
|
arr = []
|
93
94
|
arr = model.find(:all, @ar_options) unless @opts['no-data']
|
94
|
-
arr = arr.empty? ? [model.new] : arr
|
95
|
+
arr = arr.empty? ? [model.new] : arr
|
95
96
|
|
96
|
-
arr.each_with_index { |r,i|
|
97
|
+
arr.each_with_index { |r,i|
|
97
98
|
attr_s = [];
|
98
99
|
r.attributes.each do |k,v|
|
99
100
|
if ((model.attr_accessible[:default].include? k) || @opts['without_protection'] || @opts['with_id'])
|
100
101
|
dumpAttribute(attr_s,r,k,v)
|
101
|
-
@last_record.push k
|
102
|
+
@last_record.push k
|
102
103
|
end
|
103
104
|
end
|
104
105
|
rows.push "#{@indent}{ " << attr_s.join(', ') << " }"
|
105
|
-
}
|
106
|
+
}
|
106
107
|
|
107
108
|
if @opts['without_protection']
|
108
109
|
options = ', :without_protection => true '
|
109
110
|
end
|
110
|
-
|
111
|
+
|
111
112
|
if @opts['max']
|
112
113
|
splited_rows = rows.each_slice(@opts['max']).to_a
|
113
114
|
maxsarr = []
|
114
115
|
splited_rows.each do |sr|
|
115
|
-
maxsarr << "\n#{model}
|
116
|
-
end
|
116
|
+
maxsarr << "\n#{model}.#{@opts['create_method']}([\n" << sr.join(",\n") << "\n]#{options})\n"
|
117
|
+
end
|
117
118
|
maxsarr.join('')
|
118
119
|
else
|
119
|
-
"\n#{model}
|
120
|
+
"\n#{model}.#{@opts['create_method']}([\n" << rows.join(",\n") << "\n]#{options})\n"
|
120
121
|
end
|
121
|
-
|
122
|
+
|
122
123
|
end
|
123
124
|
|
124
125
|
def dumpModels
|
@@ -152,7 +153,7 @@ module SeedDump
|
|
152
153
|
#override the rails version of this function to NOT truncate strings
|
153
154
|
def attribute_for_inspect(r,k)
|
154
155
|
value = r.attributes[k]
|
155
|
-
|
156
|
+
|
156
157
|
if value.is_a?(String) && value.length > 50
|
157
158
|
"#{value}".inspect
|
158
159
|
elsif value.is_a?(Date) || value.is_a?(Time)
|
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.
|
8
|
+
s.version = "0.5.0"
|
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 = "2013-
|
12
|
+
s.date = "2013-06-12"
|
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 = [
|
data/test/seed_dump_test.rb
CHANGED
@@ -10,20 +10,20 @@ class SeedDumpTest < ActiveSupport::TestCase
|
|
10
10
|
"MODEL_DIR" => 'test/models/**.rb',
|
11
11
|
"FILE" => Dir.pwd + '/test/db/seeds.rb',
|
12
12
|
"VERBOSE" => false,
|
13
|
-
"DEBUG" => false
|
13
|
+
"DEBUG" => false
|
14
14
|
}
|
15
15
|
end
|
16
16
|
|
17
17
|
test "load sample model" do
|
18
18
|
@env['MODEL_DIR'] = 'test/models/*.rb'
|
19
|
-
@sd.setup @env
|
19
|
+
@sd.setup @env
|
20
20
|
@sd.loadModels
|
21
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
|
-
@sd.setup @env
|
26
|
+
@sd.setup @env
|
27
27
|
@sd.loadModels
|
28
28
|
assert_equal ["AbstractSample", "ChildSample", "Nested::Sample", "Sample"], @sd.models
|
29
29
|
end
|
@@ -65,5 +65,12 @@ class SeedDumpTest < ActiveSupport::TestCase
|
|
65
65
|
assert_equal [], @sd.last_record
|
66
66
|
end
|
67
67
|
|
68
|
-
|
68
|
+
test "create method" do
|
69
|
+
@env['MODEL_DIR'] = 'test/models/*.rb'
|
70
|
+
@env['CREATE_METHOD'] = 'create!'
|
71
|
+
@sd.setup @env
|
72
|
+
@sd.loadModels
|
73
|
+
@sd.dumpModels
|
74
|
+
assert @sd.instance_variable_get(:@seed_rb) =~ /create!/, 'CREATE_METHOD must specify the creation method'
|
75
|
+
end
|
69
76
|
end
|
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
|
+
version: 0.5.0
|
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: 2013-
|
12
|
+
date: 2013-06-12 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
|