file_upload_cache 1.0.1 → 1.0.2

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.
@@ -0,0 +1,19 @@
1
+ module FileUploadCache
2
+ class Tempfile < ::Tempfile
3
+
4
+ # mode should be :binmode or :text
5
+ def self.for(data, mode = :binmode, &block)
6
+ file = self.new("tempfile")
7
+ begin
8
+ file.binmode if mode == :binmode
9
+ file.write(data)
10
+
11
+ file.rewind
12
+ block.call(file)
13
+ ensure
14
+ file.close
15
+ end
16
+ end
17
+
18
+ end
19
+ end
@@ -15,21 +15,15 @@ module FileUploadCache
15
15
 
16
16
  before_validation lambda {
17
17
  original = self.instance_variable_get("@#{field}_original")
18
+ original.rewind if original && original.respond_to?(:rewind)
19
+
18
20
  self.send("cached_#{field}=", CachedFile.store(original)) unless original.blank?
19
21
  if( ! self.send("#{field}_cache_id").blank? && original.blank? )
20
22
  cached_file = CachedFile.find(self.send("#{field}_cache_id"))
21
23
 
22
- tf = Tempfile.new("temp_file")
23
-
24
- begin
25
- tf.binmode
26
- tf.write(cached_file.read)
27
-
28
- tf.rewind
24
+ FileUploadCache::Tempfile.for(cached_file.read) do |tf|
29
25
  self.send("#{field}=", tf)
30
26
  self.send("cached_#{field}=", cached_file)
31
- ensure
32
- tf.close
33
27
  end
34
28
 
35
29
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: file_upload_cache
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-04-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: uuid
16
- requirement: &70287586458640 !ruby/object:Gem::Requirement
16
+ requirement: &70340930096300 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70287586458640
24
+ version_requirements: *70340930096300
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rails
27
- requirement: &70287586457760 !ruby/object:Gem::Requirement
27
+ requirement: &70340930095820 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70287586457760
35
+ version_requirements: *70340930095820
36
36
  description: Insert FileUploadCache description.
37
37
  email:
38
38
  executables: []
@@ -42,6 +42,7 @@ files:
42
42
  - app/controllers/file_upload_cache/cached_files_controller.rb
43
43
  - app/inputs/uploader_input.rb
44
44
  - app/models/file_upload_cache/cached_file.rb
45
+ - app/models/file_upload_cache/tempfile.rb
45
46
  - lib/file_upload_cache/cached_attributes.rb
46
47
  - lib/file_upload_cache/engine.rb
47
48
  - lib/file_upload_cache.rb