redis_importer 1.1.2 → 1.1.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -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.