filey-diff 1.1.2 → 1.2.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: d69bd737e5e7e76cac4dd58fa4b5be027d1622e0
4
+ data.tar.gz: 0bc0f5896d1ce23b132dfcce1dcad9e8e89e2606
5
+ SHA512:
6
+ metadata.gz: 1baf0d708088e4399c96aab9cf24460b86a97c0b1c9833785ecec020e318927eb417b551a3d2ddad63ac9fd21474e54e192a57a8b7f4bc11744cf3263a575d5e
7
+ data.tar.gz: 02215cc721dc9cd6e7733b68272c0b62c0ee76dbf0417a7a3a6ced5c0fc7f4a1830c689ce7a557c8610f1728e88d45c46d409abbfab10d3ceb36d5b9423700e7
data/changelog.md CHANGED
@@ -2,6 +2,10 @@
2
2
 
3
3
  This project is [Semantically Versioned](http://semver.org).
4
4
 
5
+ ## 1.2.0
6
+
7
+ * Improve performance by loading S3 objects in parallel
8
+
5
9
  ## 1.1.2
6
10
 
7
11
  * Co-operate with Ruby 2.0.0 automatic gzip decoding
data/filey-diff.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'filey-diff'
3
- s.version = '1.1.2'
3
+ s.version = '1.2.0'
4
4
 
5
5
  s.summary = "Compare two data sources that contain file-like objects"
6
6
  s.description =
@@ -8,31 +8,40 @@ module Filey
8
8
  private
9
9
 
10
10
  def do_internal_load
11
- @s3_bucket.objects.map { |s3_object|
12
- if (s3_object.key.include?'/')
13
- path = s3_object.key.scan(/(.*\/).*/).first.first
14
- name = s3_object.key.scan(/.*\/(.*)/).first.first
15
- else
16
- path = ''
17
- name = s3_object.key
18
- end
11
+ fileys = []
12
+ threads = @s3_bucket.objects.map { |s3_object|
13
+ Thread.new(s3_object) {
14
+ fileys << map_s3_object_to_filey(s3_object)
15
+ }
16
+ }
17
+ threads.each { |thread| thread.join }
18
+ fileys
19
+ end
19
20
 
20
- if (s3_object.head[:content_encoding] == "gzip")
21
- last_modified, md5 = last_modified_and_md5_from_gzipped(
22
- s3_object, path
23
- )
24
- else
25
- last_modified, md5 = last_modified_and_md5(s3_object)
26
- end
21
+ def map_s3_object_to_filey(s3_object)
22
+ if (s3_object.key.include?'/')
23
+ path = s3_object.key.scan(/(.*\/).*/).first.first
24
+ name = s3_object.key.scan(/.*\/(.*)/).first.first
25
+ else
26
+ path = ''
27
+ name = s3_object.key
28
+ end
27
29
 
28
- normalised_path = "./#{path}"
29
- Filey.new(
30
- normalised_path,
31
- name,
32
- last_modified,
33
- md5
30
+ if (s3_object.head[:content_encoding] == "gzip")
31
+ last_modified, md5 = last_modified_and_md5_from_gzipped(
32
+ s3_object, path
34
33
  )
35
- }
34
+ else
35
+ last_modified, md5 = last_modified_and_md5(s3_object)
36
+ end
37
+
38
+ normalised_path = "./#{path}"
39
+ Filey.new(
40
+ normalised_path,
41
+ name,
42
+ last_modified,
43
+ md5
44
+ )
36
45
  end
37
46
 
38
47
  def last_modified_and_md5(s3_object)
metadata CHANGED
@@ -1,20 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: filey-diff
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
5
- prerelease:
4
+ version: 1.2.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Lauri Lehmijoki
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-06-16 00:00:00.000000000 Z
11
+ date: 2013-06-17 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rake
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :development
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ~>
28
25
  - !ruby/object:Gem::Version
@@ -30,7 +27,6 @@ dependencies:
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: rspec
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
31
  - - ~>
36
32
  - !ruby/object:Gem::Version
@@ -38,12 +34,11 @@ dependencies:
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
38
  - - ~>
44
39
  - !ruby/object:Gem::Version
45
40
  version: '2.11'
46
- description: ! "\n Find missing or outdated files.\n For example, compare your
41
+ description: "\n Find missing or outdated files.\n For example, compare your
47
42
  local file system to an AWS S3 bucket.\n "
48
43
  email: lauri.lehmijoki@iki.fi
49
44
  executables: []
@@ -69,33 +64,26 @@ files:
69
64
  - spec/spec_helper.rb
70
65
  homepage: http://github.com/laurilehmijoki/filey-diff
71
66
  licenses: []
67
+ metadata: {}
72
68
  post_install_message:
73
69
  rdoc_options: []
74
70
  require_paths:
75
71
  - lib
76
72
  required_ruby_version: !ruby/object:Gem::Requirement
77
- none: false
78
73
  requirements:
79
- - - ! '>='
74
+ - - '>='
80
75
  - !ruby/object:Gem::Version
81
76
  version: '0'
82
- segments:
83
- - 0
84
- hash: 4447757573038540080
85
77
  required_rubygems_version: !ruby/object:Gem::Requirement
86
- none: false
87
78
  requirements:
88
- - - ! '>='
79
+ - - '>='
89
80
  - !ruby/object:Gem::Version
90
81
  version: '0'
91
- segments:
92
- - 0
93
- hash: 4447757573038540080
94
82
  requirements: []
95
83
  rubyforge_project:
96
- rubygems_version: 1.8.25
84
+ rubygems_version: 2.0.3
97
85
  signing_key:
98
- specification_version: 3
86
+ specification_version: 4
99
87
  summary: Compare two data sources that contain file-like objects
100
88
  test_files:
101
89
  - spec/comparison_spec.rb