attachment_saver 1.0.0 → 1.0.1
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.
- checksums.yaml +7 -0
- data/Rakefile +1 -1
- data/lib/attachment_saver.rb +2 -2
- data/lib/attachment_saver/version.rb +1 -1
- data/test/attachment_saver_test.rb +17 -0
- data/test/image_fixtures.rb +2 -1
- data/test/model_test.rb +2 -1
- metadata +98 -119
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 5a22b412009475caf986f038cc3613ce59ff940c
|
4
|
+
data.tar.gz: 072903d7678d8305718b416d62058623f4e7bc2d
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: b945b2d6f38082b9bd9befa2fb20f9f58ba150c63382d46d2860228b573a1851f6a0197ce43866052dd5f1a089d1226e88faeae706d81990b39a0a52ad71e19c
|
7
|
+
data.tar.gz: cbabbc1710ec1bf2547104eb825baaa96939c73a8a4182dee0e4500fc067988292d562e52c923e8a81c5987ca11c0cd1cf821b33cab78a77aaf31581faf46261
|
data/Rakefile
CHANGED
data/lib/attachment_saver.rb
CHANGED
@@ -46,7 +46,7 @@ module AttachmentSaver
|
|
46
46
|
# until we have all the attributes, and then until validation passes - so we just retain
|
47
47
|
# the data or file reference for now.
|
48
48
|
if uploaded.is_a?(String) # we allow people to upload into the file field using a normal input element (eg. a textarea)
|
49
|
-
return if uploaded.
|
49
|
+
return if uploaded.empty? # this handles the case when a form has a file field but no file is selected - most browsers submit an empty string then (annoyingly)
|
50
50
|
@uploaded_data = uploaded
|
51
51
|
@uploaded_file = nil
|
52
52
|
elsif uploaded.is_a?(StringIO)
|
@@ -62,7 +62,7 @@ module AttachmentSaver
|
|
62
62
|
end
|
63
63
|
@save_upload = true
|
64
64
|
|
65
|
-
self.size = uploaded.size
|
65
|
+
self.size = uploaded.respond_to?(:bytesize) ? uploaded.bytesize : uploaded.size if respond_to?(:size=)
|
66
66
|
self.content_type = uploaded.content_type.strip.downcase if respond_to?(:content_type=) && uploaded.respond_to?(:content_type)
|
67
67
|
self.original_filename = trim_original_filename(uploaded.original_filename) if respond_to?(:original_filename=) && uploaded.respond_to?(:original_filename)
|
68
68
|
end
|
@@ -79,6 +79,23 @@ class AttachmentSaverTest < Test::Unit::TestCase
|
|
79
79
|
model.file_extension = 'ext'
|
80
80
|
assert_equal 'ext', model.file_extension
|
81
81
|
|
82
|
+
model = SomeModel.new
|
83
|
+
data = File.open(ImageFixtures::valid[:path], "rb").read
|
84
|
+
model.uploaded_data = data
|
85
|
+
assert_equal ImageFixtures::valid[:size], model.size
|
86
|
+
assert_equal nil, model.content_type
|
87
|
+
assert_equal nil, model.original_filename
|
88
|
+
assert_equal data, model.uploaded_data # before converting to an uploaded_file
|
89
|
+
assert_not_equal nil, model.uploaded_file
|
90
|
+
assert model.uploaded_file.is_a?(Tempfile)
|
91
|
+
assert_equal model.uploaded_file.object_id, model.uploaded_file.object_id, 'uploaded_file should return the same instance each time'
|
92
|
+
assert_equal data, model.uploaded_data # after converting to an uploaded_file
|
93
|
+
assert_equal data, contents_of(model.uploaded_file)
|
94
|
+
assert_equal data, model.uploaded_data
|
95
|
+
assert_equal 'bin', model.file_extension
|
96
|
+
model.file_extension = 'ext'
|
97
|
+
assert_equal 'ext', model.file_extension
|
98
|
+
|
82
99
|
model = SomeModel.new
|
83
100
|
model.uploaded_data = StringIO.new('test #2')
|
84
101
|
assert_equal 7, model.size
|
data/test/image_fixtures.rb
CHANGED
data/test/model_test.rb
CHANGED
@@ -72,7 +72,7 @@ class ModelTest < Test::Unit::TestCase
|
|
72
72
|
end
|
73
73
|
|
74
74
|
def uploaded_file_from(fixture)
|
75
|
-
f = File.open(fixture[:path])
|
75
|
+
f = File.open(fixture[:path], "rb")
|
76
76
|
f.extend ValidUploadedFileAttributes
|
77
77
|
f.fixture = fixture
|
78
78
|
f
|
@@ -83,6 +83,7 @@ class ModelTest < Test::Unit::TestCase
|
|
83
83
|
assert_equal ImageFixtures::valid[:expected_content_type], model.content_type
|
84
84
|
assert_equal ImageFixtures::valid[:expected_extension], model.file_extension
|
85
85
|
assert_equal ImageFixtures::valid[:expected_extension], AttachmentSaver::split_filename(model.storage_filename).last
|
86
|
+
assert_equal ImageFixtures::valid[:size], model.size
|
86
87
|
assert File.read(ImageFixtures::valid[:path]) == File.read(model.storage_filename), "stored data doesn't match!"
|
87
88
|
end
|
88
89
|
|
metadata
CHANGED
@@ -1,106 +1,99 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: attachment_saver
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 1
|
8
|
-
- 0
|
9
|
-
- 0
|
10
|
-
version: 1.0.0
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.1
|
11
5
|
platform: ruby
|
12
|
-
authors:
|
6
|
+
authors:
|
13
7
|
- Will Bryant
|
14
8
|
autorequire:
|
15
9
|
bindir: bin
|
16
10
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
- !ruby/object:Gem::Dependency
|
11
|
+
date: 2013-05-21 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
21
14
|
name: activerecord
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
hash: 3
|
29
|
-
segments:
|
30
|
-
- 0
|
31
|
-
version: "0"
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
32
20
|
type: :runtime
|
33
|
-
version_requirements: *id001
|
34
|
-
- !ruby/object:Gem::Dependency
|
35
|
-
name: rake
|
36
21
|
prerelease: false
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
46
34
|
type: :development
|
47
|
-
version_requirements: *id002
|
48
|
-
- !ruby/object:Gem::Dependency
|
49
|
-
name: image_science
|
50
35
|
prerelease: false
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: image_science
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
60
48
|
type: :development
|
61
|
-
version_requirements: *id003
|
62
|
-
- !ruby/object:Gem::Dependency
|
63
|
-
name: rmagick
|
64
49
|
prerelease: false
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rmagick
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
74
62
|
type: :development
|
75
|
-
version_requirements: *id004
|
76
|
-
- !ruby/object:Gem::Dependency
|
77
|
-
name: mini_magick
|
78
63
|
prerelease: false
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: mini_magick
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - '>='
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
88
76
|
type: :development
|
89
|
-
version_requirements: *id005
|
90
|
-
- !ruby/object:Gem::Dependency
|
91
|
-
name: sqlite3
|
92
77
|
prerelease: false
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: sqlite3
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
102
90
|
type: :development
|
103
|
-
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
104
97
|
description: |
|
105
98
|
This plugin implements attachment storage and processing, integrated with
|
106
99
|
ActiveRecord models and Ruby CGI/Rails-style uploads. Image processing
|
@@ -108,24 +101,20 @@ description: |
|
|
108
101
|
provided, and the architecture simplifies clean implementation of other types
|
109
102
|
of processing. Errors are carefully handled to minimize the possibility of
|
110
103
|
broken uploads leaving incomplete or corrupt data.
|
111
|
-
|
104
|
+
|
112
105
|
RMagick, MiniMagick, and ImageScience image processors are supported.
|
113
|
-
|
114
|
-
|
106
|
+
|
107
|
+
|
115
108
|
Compatibility
|
116
109
|
=============
|
117
|
-
|
110
|
+
|
118
111
|
Currently tested against Rails 3.2.13 and 3.1.8, on Ruby 1.8.7 and 2.0.0p0.
|
119
112
|
Was also tested compatible with 2.3.14 and 3.0.17.
|
120
|
-
|
121
113
|
email: will.bryant@gmail.com
|
122
114
|
executables: []
|
123
|
-
|
124
115
|
extensions: []
|
125
|
-
|
126
116
|
extra_rdoc_files: []
|
127
|
-
|
128
|
-
files:
|
117
|
+
files:
|
129
118
|
- .gitignore
|
130
119
|
- MIT-LICENSE
|
131
120
|
- README
|
@@ -168,38 +157,28 @@ files:
|
|
168
157
|
- test/test_helper.rb
|
169
158
|
homepage: http://github.com/willbryant/attachment_saver
|
170
159
|
licenses: []
|
171
|
-
|
160
|
+
metadata: {}
|
172
161
|
post_install_message:
|
173
162
|
rdoc_options: []
|
174
|
-
|
175
|
-
require_paths:
|
163
|
+
require_paths:
|
176
164
|
- lib
|
177
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
none: false
|
188
|
-
requirements:
|
189
|
-
- - ">="
|
190
|
-
- !ruby/object:Gem::Version
|
191
|
-
hash: 3
|
192
|
-
segments:
|
193
|
-
- 0
|
194
|
-
version: "0"
|
165
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
166
|
+
requirements:
|
167
|
+
- - '>='
|
168
|
+
- !ruby/object:Gem::Version
|
169
|
+
version: '0'
|
170
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
171
|
+
requirements:
|
172
|
+
- - '>='
|
173
|
+
- !ruby/object:Gem::Version
|
174
|
+
version: '0'
|
195
175
|
requirements: []
|
196
|
-
|
197
176
|
rubyforge_project:
|
198
|
-
rubygems_version:
|
177
|
+
rubygems_version: 2.0.2
|
199
178
|
signing_key:
|
200
|
-
specification_version:
|
179
|
+
specification_version: 4
|
201
180
|
summary: Saves attachments in files, models, or columns.
|
202
|
-
test_files:
|
181
|
+
test_files:
|
203
182
|
- test/attachment_saver_test.rb
|
204
183
|
- test/database.yml
|
205
184
|
- test/file_system_datastore_test.rb
|