rseed 1.0.4 → 1.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/README.rdoc +31 -30
- data/lib/generators/rseed/templates/converter.rb.erb +2 -2
- data/lib/rseed/converter.rb +1 -1
- data/lib/rseed/helpers.rb +5 -3
- data/lib/rseed/processor.rb +2 -2
- data/lib/rseed/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
OGI0MmQ1MjQ1NDBjM2Q4YTk1Zjc4ZTgyNWEyYjc3YjNmZjZiNWQ5Mg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZDRmODFkM2EwNTE2NWY4YjFiYmUzZDM1YzlmYWZjYTNmMjYxYWMxNQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
MGNiODY1NWZmMmIzZjQxY2VkYTAwYTZjM2IxNzI5OTVkNmQyYWFhMmY5NzE5
|
10
|
+
YTNmNDI5YjcwNWE0NGQ2MTlhNzkxZDA2MmUzZjJhMmJkMDRiMDNmMjIyMTQ3
|
11
|
+
ZTZkNWJiNTM5NGI5MjY3ODVkNDRmMmY2Y2U1YTcwNDJjYmI1MTQ=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MmI2MTk0ZmQyZjNlMTAxNzk0NGExMTYzNGFjYTVjOTVlZmE1NWMwYzc2OTJk
|
14
|
+
NzFkOGE3ODg2MmYyNWZjZDFmMGVjY2RhNGI2NThkNjlhOWIwOThlNjA1MTlj
|
15
|
+
YjAzNWY1YWVjYzlmMjA4MTU3ZjZkNWQ2NmQ0ZGE5ZjBlOTc5NDY=
|
data/README.rdoc
CHANGED
@@ -45,36 +45,6 @@ This will cause the generator to create a file with fewer
|
|
45
45
|
|
46
46
|
== The Converter File
|
47
47
|
|
48
|
-
=== before_deserialize
|
49
|
-
|
50
|
-
If you define a function called before_serialize you can do any preprocessing you require. One example of this is
|
51
|
-
marking an archive flag on existing data:
|
52
|
-
|
53
|
-
def before_deserialize
|
54
|
-
HtmlColor.where(import_archive: true).update_all({:import_archive => false})
|
55
|
-
true
|
56
|
-
end
|
57
|
-
|
58
|
-
Note that you must return true from this function. Returning false will cause the processor to give up and log an error.
|
59
|
-
Thus you can also use the following:
|
60
|
-
|
61
|
-
def before_deserialize
|
62
|
-
return fail_with_error "Mandatory option is missing" unless options["mandatory_option"]
|
63
|
-
true
|
64
|
-
end
|
65
|
-
|
66
|
-
=== after_deserialize
|
67
|
-
|
68
|
-
You can define this function to be called at the end of processing. Following from the example above, if you set
|
69
|
-
*import_archive* to be false for each model in the deserialize method, you could do the following to remove old
|
70
|
-
records:
|
71
|
-
|
72
|
-
def after_deserialize
|
73
|
-
HtmlColor.where(import_archive: true).destroy_all
|
74
|
-
end
|
75
|
-
|
76
|
-
This is obviously fairly destructive and there are better ways to deal with this situation than destroying the records.
|
77
|
-
|
78
48
|
=== Attribute Options
|
79
49
|
|
80
50
|
* :header
|
@@ -107,6 +77,37 @@ You may use any active record method in this case, such as :first_or_create, or
|
|
107
77
|
* :optional
|
108
78
|
Defines the attribute as optionsal. This has no effect in the *HashAdapter*.
|
109
79
|
|
80
|
+
=== before_deserialize
|
81
|
+
|
82
|
+
If you define a function called before_serialize you can do any preprocessing you require. One example of this is
|
83
|
+
marking an archive flag on existing data:
|
84
|
+
|
85
|
+
def before_deserialize
|
86
|
+
HtmlColor.where(import_archive: true).update_all({:import_archive => false})
|
87
|
+
true
|
88
|
+
end
|
89
|
+
|
90
|
+
Note that you must return true from this function. Returning false will cause the processor to give up and log an error.
|
91
|
+
Thus you can also use the following:
|
92
|
+
|
93
|
+
def before_deserialize
|
94
|
+
return fail_with_error "Mandatory option is missing" unless options["mandatory_option"]
|
95
|
+
true
|
96
|
+
end
|
97
|
+
|
98
|
+
=== after_deserialize
|
99
|
+
|
100
|
+
You can define this function to be called at the end of processing. Following from the example above, if you set
|
101
|
+
*import_archive* to be false for each model in the deserialize method, you could do the following to remove old
|
102
|
+
records:
|
103
|
+
|
104
|
+
def after_deserialize
|
105
|
+
HtmlColor.where(import_archive: true).destroy_all
|
106
|
+
end
|
107
|
+
|
108
|
+
This example is obviously fairly destructive and there are better ways to deal with this situation than destroying the
|
109
|
+
records.
|
110
|
+
|
110
111
|
== Rake Tasks
|
111
112
|
|
112
113
|
These rake tasks allow you to run seeds manually:
|
@@ -39,7 +39,7 @@ class <%= @converter_name.camelize %>Converter < Rseed::Converter
|
|
39
39
|
# <%= @model_name %> = ::<%= @class_name %>.new
|
40
40
|
#
|
41
41
|
# For create or update, use the following instead and change the match attribute name as required
|
42
|
-
# <%= @model_name %> = ::<%= @class_name %>.where(:
|
42
|
+
# <%= @model_name %> = ::<%= @class_name %>.where(id: values[:id]).first_or_initialize
|
43
43
|
<% end -%>
|
44
44
|
|
45
45
|
<% if @match_attribute -%>
|
@@ -51,7 +51,7 @@ class <%= @converter_name.camelize %>Converter < Rseed::Converter
|
|
51
51
|
success = <%= @model_name %>.update_attributes <%= @model_name %>_attributes(values)
|
52
52
|
|
53
53
|
# This will return false and set errors if the record fails to update, signalling a failed import
|
54
|
-
return fail_with_error <%= @model_name %>.errors unless success
|
54
|
+
return fail_with_error <%= @model_name %>.errors.to_a.join(', ') unless success
|
55
55
|
|
56
56
|
# Return true signalling a successful import
|
57
57
|
true
|
data/lib/rseed/converter.rb
CHANGED
@@ -49,7 +49,7 @@ module Rseed
|
|
49
49
|
# Takes the raw values coming out of an adapter and converts them based on the attribute definitions in the
|
50
50
|
# converter.
|
51
51
|
def deserialize_raw values
|
52
|
-
converted_values =
|
52
|
+
converted_values = HashWithIndifferentAccess.new
|
53
53
|
self.class.converter_attributes.each do |attribute|
|
54
54
|
converted_values[attribute.name] = attribute.deserialize(values)
|
55
55
|
end
|
data/lib/rseed/helpers.rb
CHANGED
@@ -19,7 +19,7 @@ module Rseed
|
|
19
19
|
title = options[:title] ? options[:title].dup : "Seed"
|
20
20
|
title = "#{processor.converter.name.cyan} #{title.blue}"
|
21
21
|
record_count = 0
|
22
|
-
progress_bar = ProgressBar.create(starting_at: nil, total: nil, format: "#{"Preprocessing".magenta} %t <%B>", title: title)
|
22
|
+
progress_bar = ProgressBar.create(starting_at: nil, total: nil, format: "#{"Preprocessing".magenta} %t <%B>", title: title, throttle_rate: 1)
|
23
23
|
processor.logger = Logger.new(ProgressBarLogger.new(progress_bar))
|
24
24
|
processor.deserialize do |status, result, meta|
|
25
25
|
eta = meta ? meta[:eta] : nil
|
@@ -47,8 +47,10 @@ module Rseed
|
|
47
47
|
end
|
48
48
|
|
49
49
|
def from_file file, options = {}
|
50
|
-
f = import_file(file)
|
51
|
-
|
50
|
+
unless f = import_file(file)
|
51
|
+
logger.error "Cannot locate file: ".red + file.to_s
|
52
|
+
return false
|
53
|
+
end
|
52
54
|
p = Processor.new(options)
|
53
55
|
return nil unless p
|
54
56
|
p.adapter.file = f
|
data/lib/rseed/processor.rb
CHANGED
@@ -20,7 +20,7 @@ module Rseed
|
|
20
20
|
converter_options[s[0].strip] = s[1].strip
|
21
21
|
end
|
22
22
|
end
|
23
|
-
converter.options = converter_options
|
23
|
+
converter.options = HashWithIndifferentAccess.new(converter_options)
|
24
24
|
end
|
25
25
|
@adapter = adapter
|
26
26
|
@converter = converter
|
@@ -72,7 +72,7 @@ module Rseed
|
|
72
72
|
unless result[:success]
|
73
73
|
logger.error result[:message].to_s.red
|
74
74
|
logger.error result[:error].to_s.red
|
75
|
-
logger.error result[:backtrace].to_s
|
75
|
+
logger.error result[:backtrace].to_s unless result[:backtrace].to_s.blank?
|
76
76
|
end
|
77
77
|
yield :processing, result, meta
|
78
78
|
end
|
data/lib/rseed/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rseed
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Monagle
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-11-
|
11
|
+
date: 2013-11-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: colorize
|