seed_dump 0.5.3 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 7bb4e4606e31915e6334725645e3d7f7f0238309
4
+ data.tar.gz: 509dbc5e4adc981ab4333fff1162067c3889b12b
5
+ SHA512:
6
+ metadata.gz: 53da1240fc843bef8a697ca3e8d6d0f02af2830cbc3646fe7920e57440b37af2532e163694b0810bfc4eb9e35cfdb31edf561c8170a64340d5526f2aabba249f
7
+ data.tar.gz: c2ae668cd7f797c3ab5a5bf66ad2c899697e96d6d3e2780f9b76ac7c82566ba81a0a371cbf87d94dbce4d7756eaef55c2ec143b8ff42ed94c24a7acb32700bbd
data/README.rdoc CHANGED
@@ -1,12 +1,14 @@
1
1
  = SeedDump
2
2
 
3
- Seed dump is a simple plugin that adds a rake task named db:seed:dump.
3
+ Seed dump is a Rails plugin that adds a rake task named db:seed:dump.
4
4
 
5
5
  It allows you to create a db/seeds.rb from your existing data in the database.
6
6
  When there is no data in the database it will generate empty create statements.
7
7
 
8
8
  It mainly exists for people who are too lazy writing create statements in db/seeds.rb themselves
9
- and need something (+seed_dump+) to dump data from the table(s) into seeds.rb
9
+ and need something to dump data from their existing database data into seeds.rb
10
+
11
+ Note: for Rails 4 compatibility please add "RAILS4=true WITHOUT_PROTECTION=false". This will be cleaned up in the future.
10
12
 
11
13
  == Example Usage
12
14
 
@@ -64,6 +66,9 @@ Here is a full example using all of the options above:
64
66
 
65
67
  == All environment variables
66
68
 
69
+ RAILS4:
70
+ Specify as "true" for Rails 4 compatibility.
71
+
67
72
  APPEND:
68
73
  Append the data to db/seeds.rb instead of overwriting it.
69
74
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.5.3
1
+ 0.6.0
@@ -34,9 +34,19 @@ module SeedDump
34
34
  @opts['schema'] = env['PG_SCHEMA']
35
35
  @opts['model_dir'] = env['MODEL_DIR'] || @model_dir
36
36
  @opts['create_method'] = env['CREATE_METHOD'] || 'create'
37
+ @opts['rails4'] = env['RAILS4'].true?
38
+ monkeypatch_AR if @opts['rails4']
37
39
  end
38
40
 
39
- def loadModels
41
+ def monkeypatch_AR
42
+ ActiveRecord::Base.instance_eval do
43
+ def attr_accessible(*opts)
44
+ nil
45
+ end
46
+ end
47
+ end
48
+
49
+ def load_models
40
50
  puts "Searching in #{@opts['model_dir']} for models" if @opts['debug']
41
51
  Dir[Dir.pwd + '/' + @opts['model_dir']].sort.each do |f|
42
52
  puts "Processing file #{f}" if @opts['debug']
@@ -70,7 +80,8 @@ module SeedDump
70
80
  @last_record
71
81
  end
72
82
 
73
- def dumpAttribute(a_s,r,k,v)
83
+ def dump_attribute(a_s, r, k, v)
84
+ pushed = false
74
85
  if v.is_a?(BigDecimal)
75
86
  v = v.to_s
76
87
  else
@@ -80,11 +91,13 @@ module SeedDump
80
91
  unless k == 'id' && !@opts['with_id']
81
92
  if (!(k == 'created_at' || k == 'updated_at') || @opts['timestamps'])
82
93
  a_s.push("#{k.to_sym.inspect} => #{v}")
94
+ pushed = true
83
95
  end
84
96
  end
97
+ pushed
85
98
  end
86
99
 
87
- def dumpModel(model)
100
+ def dump_model(model)
88
101
  @id_set_string = ''
89
102
  @last_record = []
90
103
  create_hash = ""
@@ -97,9 +110,9 @@ module SeedDump
97
110
  arr.each_with_index { |r,i|
98
111
  attr_s = [];
99
112
  r.attributes.each do |k,v|
100
- if ((model.attr_accessible[:default].include? k) || @opts['without_protection'] || @opts['with_id'])
101
- dumpAttribute(attr_s,r,k,v)
102
- @last_record.push k
113
+ if (@opts['rails4'] || (model.attr_accessible[:default].include? k) || @opts['without_protection'] || @opts['with_id'])
114
+ pushed_key = dump_attribute(attr_s,r,k,v)
115
+ @last_record.push k if pushed_key
103
116
  end
104
117
  end
105
118
  rows.push "#{@indent}{ " << attr_s.join(', ') << " }"
@@ -122,7 +135,7 @@ module SeedDump
122
135
 
123
136
  end
124
137
 
125
- def dumpModels
138
+ def dump_models
126
139
  @seed_rb = ""
127
140
  @models.sort.each do |model|
128
141
  m = model.constantize
@@ -135,14 +148,14 @@ module SeedDump
135
148
  puts "Callbacks are disabled." if @opts['verbose']
136
149
  end
137
150
 
138
- @seed_rb << dumpModel(m) << "\n\n"
151
+ @seed_rb << dump_model(m) << "\n\n"
139
152
  else
140
153
  puts "Skipping non-ActiveRecord model #{model}..." if @opts['verbose']
141
154
  end
142
155
  end
143
156
  end
144
157
 
145
- def writeFile
158
+ def write_file
146
159
  File.open(@opts['file'], (@opts['append'] ? "a" : "w")) { |f|
147
160
  f << "# encoding: utf-8\n"
148
161
  f << "# Autogenerated by the db:seed:dump task\n# Do not hesitate to tweak this to your needs\n" unless @opts['append']
@@ -163,7 +176,7 @@ module SeedDump
163
176
  end
164
177
  end
165
178
 
166
- def setSearchPath(path, append_public=true)
179
+ def set_search_path(path, append_public=true)
167
180
  path_parts = [path.to_s, ('public' if append_public)].compact
168
181
  ActiveRecord::Base.connection.schema_search_path = path_parts.join(',')
169
182
  end
@@ -174,15 +187,15 @@ module SeedDump
174
187
 
175
188
  puts "Protection is disabled." if @opts['verbose'] && @opts['without_protection']
176
189
 
177
- setSearchPath @opts['schema'] if @opts['schema']
190
+ set_search_path @opts['schema'] if @opts['schema']
178
191
 
179
- loadModels
192
+ load_models
180
193
 
181
194
  puts "Appending seeds to #{@opts['file']}." if @opts['append']
182
- dumpModels
195
+ dump_models
183
196
 
184
197
  puts "Writing #{@opts['file']}."
185
- writeFile
198
+ write_file
186
199
 
187
200
  puts "Done."
188
201
  end
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.5.3"
8
+ s.version = "0.6.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", "Ryan Oblak"]
12
- s.date = "2013-06-17"
12
+ s.date = "2013-08-01"
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 = "rroblak@gmail.com"
15
15
  s.extra_rdoc_files = [
@@ -38,16 +38,7 @@ Gem::Specification.new do |s|
38
38
  ]
39
39
  s.homepage = "https://github.com/rroblak/seed_dump"
40
40
  s.require_paths = ["lib"]
41
- s.rubygems_version = "1.8.25"
41
+ s.rubygems_version = "2.0.3"
42
42
  s.summary = "{Seed Dumper for Rails}"
43
-
44
- if s.respond_to? :specification_version then
45
- s.specification_version = 3
46
-
47
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
48
- else
49
- end
50
- else
51
- end
52
43
  end
53
44
 
@@ -10,21 +10,22 @@ 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
+ "RAILS4" => ENV['RAILS4']
14
15
  }
15
16
  end
16
17
 
17
18
  test "load sample model" do
18
19
  @env['MODEL_DIR'] = 'test/models/*.rb'
19
20
  @sd.setup @env
20
- @sd.loadModels
21
+ @sd.load_models
21
22
  assert_equal ["AbstractSample", "ChildSample", "Sample"], @sd.models
22
23
  end
23
24
 
24
25
  test "support nested models" do
25
26
  @env['MODEL_DIR'] = 'test/models/**/*.rb'
26
27
  @sd.setup @env
27
- @sd.loadModels
28
+ @sd.load_models
28
29
  assert_equal ["AbstractSample", "ChildSample", "Nested::Sample", "Sample"], @sd.models
29
30
  end
30
31
 
@@ -32,8 +33,8 @@ class SeedDumpTest < ActiveSupport::TestCase
32
33
  @env['MODEL_DIR'] = 'test/models/*.rb'
33
34
  @env['TIMESTAMPS'] = false
34
35
  @sd.setup @env
35
- @sd.loadModels
36
- @sd.dumpModels
36
+ @sd.load_models
37
+ @sd.dump_models
37
38
  assert !@sd.last_record.include?("created_at"), "Should not include created_at if timestamps are off"
38
39
  end
39
40
 
@@ -41,8 +42,8 @@ class SeedDumpTest < ActiveSupport::TestCase
41
42
  @env['MODEL_DIR'] = 'test/models/*.rb'
42
43
  @env['TIMESTAMPS'] = true
43
44
  @sd.setup @env
44
- @sd.loadModels
45
- @sd.dumpModels
45
+ @sd.load_models
46
+ @sd.dump_models
46
47
  assert @sd.last_record.include?("created_at"), "Must include created_at if timestamps are desired"
47
48
  end
48
49
 
@@ -50,8 +51,8 @@ class SeedDumpTest < ActiveSupport::TestCase
50
51
  @env['MODEL_DIR'] = 'test/models/*.rb'
51
52
  @env['WITH_ID'] = true
52
53
  @sd.setup @env
53
- @sd.loadModels
54
- @sd.dumpModels
54
+ @sd.load_models
55
+ @sd.dump_models
55
56
  assert @sd.last_record.include?("id"), "WITH_ID must include id"
56
57
  end
57
58
 
@@ -60,8 +61,8 @@ class SeedDumpTest < ActiveSupport::TestCase
60
61
  @env['MODEL_DIR'] = 'test/models/*.rb'
61
62
  @env['TIMESTAMPS'] = false
62
63
  @sd.setup @env
63
- @sd.loadModels
64
- @sd.dumpModels
64
+ @sd.load_models
65
+ @sd.dump_models
65
66
  assert_equal [], @sd.last_record
66
67
  end
67
68
 
@@ -69,8 +70,8 @@ class SeedDumpTest < ActiveSupport::TestCase
69
70
  @env['MODEL_DIR'] = 'test/models/*.rb'
70
71
  @env['CREATE_METHOD'] = 'create!'
71
72
  @sd.setup @env
72
- @sd.loadModels
73
- @sd.dumpModels
73
+ @sd.load_models
74
+ @sd.dump_models
74
75
  assert @sd.instance_variable_get(:@seed_rb) =~ /create!/, 'CREATE_METHOD must specify the creation method'
75
76
  end
76
77
  end
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: seed_dump
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.3
5
- prerelease:
4
+ version: 0.6.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Rob Halff
@@ -10,7 +9,7 @@ authors:
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2013-06-17 00:00:00.000000000 Z
12
+ date: 2013-08-01 00:00:00.000000000 Z
14
13
  dependencies: []
15
14
  description: Dump (parts) of your database to db/seeds.rb to get a headstart creating
16
15
  a meaningful seeds.rb file
@@ -41,26 +40,25 @@ files:
41
40
  - test/test_helper.rb
42
41
  homepage: https://github.com/rroblak/seed_dump
43
42
  licenses: []
43
+ metadata: {}
44
44
  post_install_message:
45
45
  rdoc_options: []
46
46
  require_paths:
47
47
  - lib
48
48
  required_ruby_version: !ruby/object:Gem::Requirement
49
- none: false
50
49
  requirements:
51
- - - ! '>='
50
+ - - '>='
52
51
  - !ruby/object:Gem::Version
53
52
  version: '0'
54
53
  required_rubygems_version: !ruby/object:Gem::Requirement
55
- none: false
56
54
  requirements:
57
- - - ! '>='
55
+ - - '>='
58
56
  - !ruby/object:Gem::Version
59
57
  version: '0'
60
58
  requirements: []
61
59
  rubyforge_project:
62
- rubygems_version: 1.8.25
60
+ rubygems_version: 2.0.3
63
61
  signing_key:
64
- specification_version: 3
65
- summary: ! '{Seed Dumper for Rails}'
62
+ specification_version: 4
63
+ summary: '{Seed Dumper for Rails}'
66
64
  test_files: []