redis_importer 1.1.2 → 1.1.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.
@@ -11,30 +11,31 @@ module RedisImporter
11
11
  self.collection = Object::const_get("#{@settings['storage_method'].camelcase}Collection").new()
12
12
 
13
13
  self.files = self.collection.files
14
+ self.errors = []
14
15
  self.commands = []
15
16
  end
16
17
 
17
18
  # Converts each csv file in the collection to objects, which are then saved into the redis store.
18
19
  def import
19
20
  files.each do |file|
21
+ save_remote_file_locally(file)
20
22
  begin
21
23
  convert_to_redis_commands(file) if class_exists?(file.to_class_name.to_sym)
22
- rescue NoMethodError
23
- add_errors($!)
24
24
  rescue NameError
25
25
  add_errors("#{file.name} is not matched by a class #{file.to_class_name} in the system.")
26
+ add_errors($!)
26
27
  end
27
28
  end
28
- pipeline
29
+
30
+ pipeline if !@prevent_pipeline
29
31
  end
30
-
32
+
31
33
  private
32
34
 
33
- attr_writer :files, :commands
35
+ attr_writer :files, :commands, :errors
34
36
 
35
37
  def add_errors(errors)
36
- @errors ||= []
37
- @errors << errors
38
+ self.errors << errors
38
39
  end
39
40
 
40
41
  def class_exists?(c)
@@ -42,9 +43,7 @@ module RedisImporter
42
43
  end
43
44
 
44
45
  def convert_to_redis_commands(file)
45
- local_path = local_storage_path(file)
46
- file.save_to(local_path)
47
- convert_objects_to_redis_commands(get_objects(local_path))
46
+ convert_objects_to_redis_commands(get_objects(local_storage_path(file)))
48
47
  end
49
48
 
50
49
  def default_settings
@@ -57,7 +56,12 @@ module RedisImporter
57
56
 
58
57
  def convert_objects_to_redis_commands(objects)
59
58
  objects.each do |obj|
60
- self.commands << obj.to_redis
59
+ begin
60
+ self.commands << obj.to_redis
61
+ rescue
62
+ @prevent_pipeline = true
63
+ add_errors($!)
64
+ end
61
65
  end
62
66
  end
63
67
 
@@ -76,8 +80,13 @@ module RedisImporter
76
80
  true
77
81
  end
78
82
  else
79
- self.commands
83
+ add_errors("No commands")
84
+ false
80
85
  end
81
86
  end
87
+
88
+ def save_remote_file_locally(file)
89
+ file.save_to(local_storage_path(file))
90
+ end
82
91
  end
83
92
  end
@@ -1,3 +1,3 @@
1
1
  module RedisImporter
2
- VERSION = "1.1.2"
2
+ VERSION = "1.1.3"
3
3
  end
@@ -45,6 +45,11 @@ describe RedisImporter do
45
45
  @ri.errors.should include "foo.csv is not matched by a class Foo in the system."
46
46
  end
47
47
 
48
+ it "passes files to csv_to_object that are matched by a class in the system" do
49
+ @ri.import
50
+ @ri.errors.should_not include "person.csv is not matched by a class Person in the system."
51
+ end
52
+
48
53
  it "passes the redis commands to the redis pipeline" do
49
54
  @ri.should_receive(:pipeline)
50
55
  @ri.import
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redis_importer
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
4
+ version: 1.1.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,11 +10,11 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-09-17 00:00:00.000000000Z
13
+ date: 2012-10-16 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rspec
17
- requirement: &2160663260 !ruby/object:Gem::Requirement
17
+ requirement: !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,15 @@ dependencies:
22
22
  version: '0'
23
23
  type: :development
24
24
  prerelease: false
25
- version_requirements: *2160663260
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ! '>='
29
+ - !ruby/object:Gem::Version
30
+ version: '0'
26
31
  - !ruby/object:Gem::Dependency
27
32
  name: redis_backed_model
28
- requirement: &2160662760 !ruby/object:Gem::Requirement
33
+ requirement: !ruby/object:Gem::Requirement
29
34
  none: false
30
35
  requirements:
31
36
  - - ~>
@@ -33,10 +38,15 @@ dependencies:
33
38
  version: '1.0'
34
39
  type: :development
35
40
  prerelease: false
36
- version_requirements: *2160662760
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ~>
45
+ - !ruby/object:Gem::Version
46
+ version: '1.0'
37
47
  - !ruby/object:Gem::Dependency
38
48
  name: gem_configurator
39
- requirement: &2160662260 !ruby/object:Gem::Requirement
49
+ requirement: !ruby/object:Gem::Requirement
40
50
  none: false
41
51
  requirements:
42
52
  - - ~>
@@ -44,10 +54,15 @@ dependencies:
44
54
  version: '1.2'
45
55
  type: :runtime
46
56
  prerelease: false
47
- version_requirements: *2160662260
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ~>
61
+ - !ruby/object:Gem::Version
62
+ version: '1.2'
48
63
  - !ruby/object:Gem::Dependency
49
64
  name: csv_to_object
50
- requirement: &2160661800 !ruby/object:Gem::Requirement
65
+ requirement: !ruby/object:Gem::Requirement
51
66
  none: false
52
67
  requirements:
53
68
  - - ~>
@@ -55,10 +70,15 @@ dependencies:
55
70
  version: '1.0'
56
71
  type: :runtime
57
72
  prerelease: false
58
- version_requirements: *2160661800
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ~>
77
+ - !ruby/object:Gem::Version
78
+ version: '1.0'
59
79
  - !ruby/object:Gem::Dependency
60
80
  name: redis_pipeline
61
- requirement: &2160661340 !ruby/object:Gem::Requirement
81
+ requirement: !ruby/object:Gem::Requirement
62
82
  none: false
63
83
  requirements:
64
84
  - - ~>
@@ -66,10 +86,15 @@ dependencies:
66
86
  version: '1.0'
67
87
  type: :runtime
68
88
  prerelease: false
69
- version_requirements: *2160661340
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ none: false
91
+ requirements:
92
+ - - ~>
93
+ - !ruby/object:Gem::Version
94
+ version: '1.0'
70
95
  - !ruby/object:Gem::Dependency
71
96
  name: aws-s3
72
- requirement: &2160660880 !ruby/object:Gem::Requirement
97
+ requirement: !ruby/object:Gem::Requirement
73
98
  none: false
74
99
  requirements:
75
100
  - - ~>
@@ -77,7 +102,12 @@ dependencies:
77
102
  version: 0.6.3
78
103
  type: :runtime
79
104
  prerelease: false
80
- version_requirements: *2160660880
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ none: false
107
+ requirements:
108
+ - - ~>
109
+ - !ruby/object:Gem::Version
110
+ version: 0.6.3
81
111
  description: Creates objects, converts them to Redis commands and executes the redis
82
112
  commands.
83
113
  email:
@@ -132,7 +162,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
132
162
  version: '0'
133
163
  requirements: []
134
164
  rubyforge_project:
135
- rubygems_version: 1.8.16
165
+ rubygems_version: 1.8.24
136
166
  signing_key:
137
167
  specification_version: 3
138
168
  summary: Creates objects, converts them to Redis commands and executes the redis commands.