paperclip-azure 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b81f27902f4dd3e53c6cf261424f669ef9e12691
4
- data.tar.gz: ea0e4b80cd819d7aa37c7055e69489628e9f8361
3
+ metadata.gz: 8285df5718393e0e9cda5f0cfd3465eb49cd2347
4
+ data.tar.gz: 74a802a4572dbaab662b6d1bebaf5cdf750ebfce
5
5
  SHA512:
6
- metadata.gz: 24b0de19b078bb55685eed33a07e7e8633d380e3a904c53e3f8b14480085c684f474216400a98c81c327011f4ff6f06c65768e3b7f103da7d4137a088bd2d389
7
- data.tar.gz: 2fd2fca79cdaf86e804d9a4f270c32c73701e89dc65ff1c771185a02cfceee2ff4d1b6fa3e6e368873c4a9983b889a01ebb07d9937d95fa4d235e4067384ea16
6
+ metadata.gz: 03e5de1b225b119b900d3d64cac609bfc84859a597cb1cb710690bfb36a1b27ea0219172e7910fe539fca5cbb03c1ab417e8c6e77177b31cd56f0e6d45a6ea82
7
+ data.tar.gz: 9233945f21ebd52697428d7b472c40b13c02250569c11cb29833901235a8f68fe4e6e4f1c8dff19c763eaafef76af63309ccdb936b5dcf3e10c372c3a21b1bf8
data/README.md CHANGED
@@ -41,7 +41,7 @@ Or, at the level of the model such as in the following example:
41
41
 
42
42
  In the even that are using a Blob that has been configured for Private access, you will need to use the Shared Access Signature functionality of Azure. This functionality has been baked in to the `Attachment#expiring_url` method. Simply specify a time and a style and you will get a proper URL as follows:
43
43
 
44
- object.attachment.expiring_url(30.minutes.since, :thumb)
44
+ object.attachment.expiring_url(30.minutes.since, :thumb)
45
45
 
46
46
  For more information about Azure Shared Access Signatures, please refer to [here](http://azure.microsoft.com/en-us/documentation/articles/storage-dotnet-shared-access-signature-part-1/).
47
47
 
@@ -58,6 +58,6 @@ For more information about Azure Shared Access Signatures, please refer to [here
58
58
 
59
59
  ## Copyright
60
60
 
61
- Copyright (c) 2015 Jordan. See [LICENSE](LICENSE.txt) for
61
+ Copyright (c) 2015. See [LICENSE](LICENSE.txt) for
62
62
  further details.
63
63
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.2
1
+ 0.2.3
@@ -86,6 +86,11 @@ module Paperclip
86
86
  end
87
87
  end
88
88
 
89
+ def auto_connect_duration
90
+ @auto_connect_duration ||= @options[:auto_connect_duration] || azure_credentials[:auto_connect_duration] || 10
91
+ @auto_connect_duration
92
+ end
93
+
89
94
  def azure_credentials
90
95
  @azure_credentials ||= parse_credentials(@options[:azure_credentials])
91
96
  end
@@ -135,7 +140,7 @@ module Paperclip
135
140
  end
136
141
 
137
142
  def azure_container
138
- @azure_container ||= azure_interface.get_container_properties container_name
143
+ @azure_container ||= with_azure_error_handling { azure_interface.get_container_properties container_name }
139
144
  end
140
145
 
141
146
  def azure_object(style_name = default_style)
@@ -162,7 +167,7 @@ module Paperclip
162
167
  end
163
168
 
164
169
  def create_container
165
- azure_interface.create_container container_name
170
+ with_azure_error_handling { azure_interface.create_container container_name }
166
171
  end
167
172
 
168
173
  def flush_writes #:nodoc:
@@ -191,19 +196,21 @@ module Paperclip
191
196
  end
192
197
 
193
198
  def save_blob(container_name, storage_path, file)
194
- if file.size < 64.megabytes
195
- azure_interface.create_block_blob container_name, storage_path, file.read
196
- else
197
- blocks = []; count = 0
198
- while data = file.read(4.megabytes)
199
- block_id = "block_#{(count += 1).to_s.rjust(5, '0')}"
200
-
201
- azure_interface.create_blob_block container_name, storage_path, block_id, data
202
-
203
- blocks << [block_id]
204
- end
199
+ with_azure_error_handling do
200
+ if file.size < 64.megabytes
201
+ azure_interface.create_block_blob container_name, storage_path, file.read
202
+ else
203
+ blocks = []; count = 0
204
+ while data = file.read(4.megabytes)
205
+ block_id = "block_#{(count += 1).to_s.rjust(5, '0')}"
206
+
207
+ azure_interface.create_blob_block container_name, storage_path, block_id, data
208
+
209
+ blocks << [block_id]
210
+ end
205
211
 
206
- azure_interface.commit_blob_blocks container_name, storage_path, blocks
212
+ azure_interface.commit_blob_blocks container_name, storage_path, blocks
213
+ end
207
214
  end
208
215
  end
209
216
 
@@ -211,7 +218,8 @@ module Paperclip
211
218
  @queued_for_delete.each do |path|
212
219
  begin
213
220
  log("deleting #{path}")
214
- azure_interface.delete_blob container_name, path
221
+
222
+ with_azure_error_handling { azure_interface.delete_blob container_name, path }
215
223
  rescue ::Azure::Core::Http::HTTPError => e
216
224
  raise unless e.status_code == 404
217
225
  end
@@ -222,10 +230,12 @@ module Paperclip
222
230
  def copy_to_local_file(style, local_dest_path)
223
231
  log("copying #{path(style)} to local file #{local_dest_path}")
224
232
 
225
- blob, content = azure_interface.get_blob(container_name, path(style).sub(%r{\A/},''))
233
+ with_azure_error_handling do
234
+ blob, content = azure_interface.get_blob(container_name, path(style).sub(%r{\A/},''))
226
235
 
227
- ::File.open(local_dest_path, 'wb') do |local_file|
228
- local_file.write(content)
236
+ ::File.open(local_dest_path, 'wb') do |local_file|
237
+ local_file.write(content)
238
+ end
229
239
  end
230
240
  rescue ::Azure::Core::Http::HTTPError => e
231
241
  raise unless e.status_code == 404
@@ -250,6 +260,22 @@ module Paperclip
250
260
  raise ArgumentError, "Credentials given are not a path, file, proc, or hash."
251
261
  end
252
262
  end
263
+
264
+ def with_azure_error_handling
265
+ count = 0
266
+
267
+ begin
268
+ yield
269
+ rescue Exception => e
270
+ if count <= auto_connect_duration
271
+ sleep 2** count
272
+ count += 1
273
+ retry
274
+ end
275
+
276
+ raise
277
+ end
278
+ end
253
279
  end
254
280
  end
255
281
  end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "paperclip-azure"
8
- s.version = "0.2.2"
8
+ s.version = "0.2.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Jordan Yaker", "Supportify, Inc."]
12
- s.date = "2015-01-19"
12
+ s.date = "2015-01-29"
13
13
  s.description = "An Azure Blob Storage implementation for Paperclip."
14
14
  s.email = "help@supportify.io"
15
15
  s.extra_rdoc_files = [
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: paperclip-azure
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jordan Yaker
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-01-19 00:00:00.000000000 Z
12
+ date: 2015-01-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: azure