paperclip-cloudfiles 2.3.1.1.6 → 2.3.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.
- data/README.rdoc +5 -0
- data/Rakefile +9 -38
- data/lib/paperclip.rb +51 -18
- data/lib/paperclip/attachment.rb +6 -13
- data/lib/paperclip/callback_compatability.rb +50 -22
- data/lib/paperclip/geometry.rb +1 -1
- data/lib/paperclip/interpolations.rb +4 -4
- data/lib/paperclip/iostream.rb +1 -1
- data/lib/paperclip/matchers.rb +29 -0
- data/lib/paperclip/matchers/have_attached_file_matcher.rb +8 -0
- data/lib/paperclip/matchers/validate_attachment_content_type_matcher.rb +11 -1
- data/lib/paperclip/matchers/validate_attachment_presence_matcher.rb +9 -2
- data/lib/paperclip/matchers/validate_attachment_size_matcher.rb +12 -1
- data/lib/paperclip/storage.rb +17 -17
- data/lib/paperclip/thumbnail.rb +16 -13
- data/lib/paperclip/upfile.rb +5 -1
- data/shoulda_macros/paperclip.rb +4 -2
- data/test/attachment_test.rb +11 -17
- data/test/helper.rb +61 -21
- data/test/interpolations_test.rb +4 -4
- data/test/iostream_test.rb +1 -1
- data/test/matchers/have_attached_file_matcher_test.rb +9 -6
- data/test/matchers/validate_attachment_content_type_matcher_test.rb +14 -8
- data/test/matchers/validate_attachment_presence_matcher_test.rb +8 -5
- data/test/matchers/validate_attachment_size_matcher_test.rb +17 -17
- data/test/paperclip_test.rb +24 -25
- data/test/storage_test.rb +32 -19
- data/test/thumbnail_test.rb +6 -6
- data/test/upfile_test.rb +8 -0
- metadata +30 -19
data/test/interpolations_test.rb
CHANGED
@@ -11,12 +11,12 @@ class InterpolationsTest < Test::Unit::TestCase
|
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
|
-
should "return the
|
15
|
-
assert_equal
|
14
|
+
should "return the Rails.root" do
|
15
|
+
assert_equal Rails.root, Paperclip::Interpolations.rails_root(:attachment, :style)
|
16
16
|
end
|
17
17
|
|
18
|
-
should "return the
|
19
|
-
assert_equal
|
18
|
+
should "return the Rails.env" do
|
19
|
+
assert_equal Rails.env, Paperclip::Interpolations.rails_env(:attachment, :style)
|
20
20
|
end
|
21
21
|
|
22
22
|
should "return the class of the Interpolations module when called with no params" do
|
data/test/iostream_test.rb
CHANGED
@@ -66,7 +66,7 @@ class IOStreamTest < Test::Unit::TestCase
|
|
66
66
|
name = File.basename(@file.path)
|
67
67
|
extension = File.extname(name)
|
68
68
|
basename = File.basename(name, extension)
|
69
|
-
assert_match %r[
|
69
|
+
assert_match %r[^stream.*?#{Regexp.quote(extension)}], File.basename(@tempfile.path)
|
70
70
|
end
|
71
71
|
|
72
72
|
should "have the Tempfile contain the same data as the file" do
|
@@ -8,14 +8,17 @@ class HaveAttachedFileMatcherTest < Test::Unit::TestCase
|
|
8
8
|
@matcher = self.class.have_attached_file(:avatar)
|
9
9
|
end
|
10
10
|
|
11
|
-
|
12
|
-
|
11
|
+
context "given a class with no attachment" do
|
12
|
+
should_reject_dummy_class
|
13
13
|
end
|
14
14
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
15
|
+
context "given a class with an attachment" do
|
16
|
+
setup do
|
17
|
+
modify_table("dummies"){|d| d.string :avatar_file_name }
|
18
|
+
@dummy_class.has_attached_file :avatar
|
19
|
+
end
|
20
|
+
|
21
|
+
should_accept_dummy_class
|
19
22
|
end
|
20
23
|
end
|
21
24
|
end
|
@@ -14,18 +14,24 @@ class ValidateAttachmentContentTypeMatcherTest < Test::Unit::TestCase
|
|
14
14
|
rejecting(%w(audio/mp3 application/octet-stream))
|
15
15
|
end
|
16
16
|
|
17
|
-
|
18
|
-
|
17
|
+
context "given a class with no validation" do
|
18
|
+
should_reject_dummy_class
|
19
19
|
end
|
20
20
|
|
21
|
-
|
22
|
-
|
23
|
-
|
21
|
+
context "given a class with a validation that doesn't match" do
|
22
|
+
setup do
|
23
|
+
@dummy_class.validates_attachment_content_type :avatar, :content_type => %r{audio/.*}
|
24
|
+
end
|
25
|
+
|
26
|
+
should_reject_dummy_class
|
24
27
|
end
|
25
28
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
+
context "given a class with a matching validation" do
|
30
|
+
setup do
|
31
|
+
@dummy_class.validates_attachment_content_type :avatar, :content_type => %r{image/.*}
|
32
|
+
end
|
33
|
+
|
34
|
+
should_accept_dummy_class
|
29
35
|
end
|
30
36
|
end
|
31
37
|
end
|
@@ -11,13 +11,16 @@ class ValidateAttachmentPresenceMatcherTest < Test::Unit::TestCase
|
|
11
11
|
@matcher = self.class.validate_attachment_presence(:avatar)
|
12
12
|
end
|
13
13
|
|
14
|
-
|
15
|
-
|
14
|
+
context "given a class with no validation" do
|
15
|
+
should_reject_dummy_class
|
16
16
|
end
|
17
17
|
|
18
|
-
|
19
|
-
|
20
|
-
|
18
|
+
context "given a class with a matching validation" do
|
19
|
+
setup do
|
20
|
+
@dummy_class.validates_attachment_presence :avatar
|
21
|
+
end
|
22
|
+
|
23
|
+
should_accept_dummy_class
|
21
24
|
end
|
22
25
|
end
|
23
26
|
end
|
@@ -14,37 +14,37 @@ class ValidateAttachmentSizeMatcherTest < Test::Unit::TestCase
|
|
14
14
|
context "of limited size" do
|
15
15
|
setup{ @matcher = self.class.validate_attachment_size(:avatar).in(256..1024) }
|
16
16
|
|
17
|
-
|
18
|
-
|
17
|
+
context "given a class with no validation" do
|
18
|
+
should_reject_dummy_class
|
19
19
|
end
|
20
20
|
|
21
|
-
|
22
|
-
@dummy_class.validates_attachment_size :avatar, :in => 256..2048
|
23
|
-
|
21
|
+
context "given a class with a validation that's too high" do
|
22
|
+
setup { @dummy_class.validates_attachment_size :avatar, :in => 256..2048 }
|
23
|
+
should_reject_dummy_class
|
24
24
|
end
|
25
25
|
|
26
|
-
|
27
|
-
@dummy_class.validates_attachment_size :avatar, :in => 0..1024
|
28
|
-
|
26
|
+
context "given a class with a validation that's too low" do
|
27
|
+
setup { @dummy_class.validates_attachment_size :avatar, :in => 0..1024 }
|
28
|
+
should_reject_dummy_class
|
29
29
|
end
|
30
30
|
|
31
|
-
|
32
|
-
@dummy_class.validates_attachment_size :avatar, :in => 256..1024
|
33
|
-
|
31
|
+
context "given a class with a validation that matches" do
|
32
|
+
setup { @dummy_class.validates_attachment_size :avatar, :in => 256..1024 }
|
33
|
+
should_accept_dummy_class
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
37
37
|
context "validates_attachment_size with infinite range" do
|
38
38
|
setup{ @matcher = self.class.validate_attachment_size(:avatar) }
|
39
39
|
|
40
|
-
|
41
|
-
@dummy_class.validates_attachment_size :avatar, :less_than => 1
|
42
|
-
|
40
|
+
context "given a class with an upper limit" do
|
41
|
+
setup { @dummy_class.validates_attachment_size :avatar, :less_than => 1 }
|
42
|
+
should_accept_dummy_class
|
43
43
|
end
|
44
44
|
|
45
|
-
|
46
|
-
@dummy_class.validates_attachment_size :avatar, :greater_than => 1
|
47
|
-
|
45
|
+
context "given a class with no upper limit" do
|
46
|
+
setup { @dummy_class.validates_attachment_size :avatar, :greater_than => 1 }
|
47
|
+
should_accept_dummy_class
|
48
48
|
end
|
49
49
|
end
|
50
50
|
end
|
data/test/paperclip_test.rb
CHANGED
@@ -16,8 +16,8 @@ class PaperclipTest < Test::Unit::TestCase
|
|
16
16
|
should "execute the right command" do
|
17
17
|
Paperclip.expects(:path_for_command).with("convert").returns("/usr/bin/convert")
|
18
18
|
Paperclip.expects(:bit_bucket).returns("/dev/null")
|
19
|
-
Paperclip.expects(:"`").with("/usr/bin/convert one.jpg two.jpg 2>/dev/null")
|
20
|
-
Paperclip.run("convert", "one.jpg two.jpg")
|
19
|
+
Paperclip.expects(:"`").with("/usr/bin/convert 'one.jpg' 'two.jpg' 2>/dev/null")
|
20
|
+
Paperclip.run("convert", "one.jpg", "two.jpg")
|
21
21
|
end
|
22
22
|
end
|
23
23
|
end
|
@@ -35,43 +35,42 @@ class PaperclipTest < Test::Unit::TestCase
|
|
35
35
|
should "execute the right command" do
|
36
36
|
Paperclip.expects(:path_for_command).with("convert").returns("convert")
|
37
37
|
Paperclip.expects(:bit_bucket).returns("/dev/null")
|
38
|
-
Paperclip.expects(:"`").with("convert one.jpg two.jpg 2>/dev/null")
|
39
|
-
Paperclip.run("convert", "one.jpg two.jpg")
|
38
|
+
Paperclip.expects(:"`").with("convert 'one.jpg' 'two.jpg' 2>/dev/null")
|
39
|
+
Paperclip.run("convert", "one.jpg", "two.jpg")
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
43
43
|
context "Calling Paperclip.run and logging" do
|
44
|
-
|
44
|
+
should "log the command when :log_command is true" do
|
45
45
|
Paperclip.options[:image_magick_path] = nil
|
46
46
|
Paperclip.options[:command_path] = nil
|
47
47
|
Paperclip.stubs(:bit_bucket).returns("/dev/null")
|
48
|
-
Paperclip.
|
49
|
-
Paperclip.
|
50
|
-
end
|
51
|
-
|
52
|
-
should "log the command when :log_command is true" do
|
48
|
+
Paperclip.expects(:log).with("this 'is the command' 2>/dev/null")
|
49
|
+
Paperclip.expects(:"`").with("this 'is the command' 2>/dev/null")
|
53
50
|
Paperclip.options[:log_command] = true
|
54
51
|
Paperclip.run("this","is the command")
|
55
|
-
assert_received(Paperclip, :log) do |p|
|
56
|
-
p.with("this is the command 2>/dev/null")
|
57
|
-
end
|
58
|
-
assert_received(Paperclip, :`) do |p|
|
59
|
-
p.with("this is the command 2>/dev/null")
|
60
|
-
end
|
61
52
|
end
|
62
53
|
|
63
54
|
should "not log the command when :log_command is false" do
|
55
|
+
Paperclip.options[:image_magick_path] = nil
|
56
|
+
Paperclip.options[:command_path] = nil
|
57
|
+
Paperclip.stubs(:bit_bucket).returns("/dev/null")
|
58
|
+
Paperclip.expects(:log).with("this 'is the command' 2>/dev/null").never
|
59
|
+
Paperclip.expects(:"`").with("this 'is the command' 2>/dev/null")
|
64
60
|
Paperclip.options[:log_command] = false
|
65
61
|
Paperclip.run("this","is the command")
|
66
|
-
assert_received(Paperclip, :log) do |p|
|
67
|
-
p.with("this is the command 2>/dev/null").never
|
68
|
-
end
|
69
|
-
assert_received(Paperclip, :`) do |p|
|
70
|
-
p.with("this is the command 2>/dev/null")
|
71
|
-
end
|
72
62
|
end
|
73
63
|
end
|
74
64
|
|
65
|
+
should "prevent dangerous characters in the command via quoting" do
|
66
|
+
Paperclip.options[:image_magick_path] = nil
|
67
|
+
Paperclip.options[:command_path] = nil
|
68
|
+
Paperclip.options[:log_command] = false
|
69
|
+
Paperclip.options[:swallow_stderr] = false
|
70
|
+
Paperclip.expects(:"`").with(%q[this 'is' 'jack'\''s' '`command`' 'line!'])
|
71
|
+
Paperclip.run("this", "is", "jack's", "`command`", "line!")
|
72
|
+
end
|
73
|
+
|
75
74
|
context "Paperclip.bit_bucket" do
|
76
75
|
context "on systems without /dev/null" do
|
77
76
|
setup do
|
@@ -257,11 +256,11 @@ class PaperclipTest < Test::Unit::TestCase
|
|
257
256
|
end
|
258
257
|
if validation == :presence
|
259
258
|
should "have an error on the attachment" do
|
260
|
-
assert @dummy.errors
|
259
|
+
assert @dummy.errors[:avatar_file_name]
|
261
260
|
end
|
262
261
|
else
|
263
262
|
should "not have an error on the attachment" do
|
264
|
-
|
263
|
+
assert @dummy.errors[:avatar_file_name].blank?, @dummy.errors.full_messages.join(", ")
|
265
264
|
end
|
266
265
|
end
|
267
266
|
end
|
@@ -310,7 +309,7 @@ class PaperclipTest < Test::Unit::TestCase
|
|
310
309
|
end
|
311
310
|
|
312
311
|
should "have a file size min/max error message" do
|
313
|
-
|
312
|
+
assert @dummy.errors[:avatar_file_size].any?{|e| e.match %r/between 0 and 10240 bytes/ }
|
314
313
|
end
|
315
314
|
end
|
316
315
|
end
|
data/test/storage_test.rb
CHANGED
@@ -4,7 +4,7 @@ require 'aws/s3'
|
|
4
4
|
class StorageTest < Test::Unit::TestCase
|
5
5
|
def rails_env(env)
|
6
6
|
silence_warnings do
|
7
|
-
Object.const_set(:
|
7
|
+
Object.const_set(:Rails, stub('Rails', :env => env))
|
8
8
|
end
|
9
9
|
end
|
10
10
|
|
@@ -17,12 +17,6 @@ class StorageTest < Test::Unit::TestCase
|
|
17
17
|
|
18
18
|
@dummy = Dummy.new
|
19
19
|
@avatar = @dummy.avatar
|
20
|
-
|
21
|
-
@current_env = RAILS_ENV
|
22
|
-
end
|
23
|
-
|
24
|
-
teardown do
|
25
|
-
rails_env(@current_env)
|
26
20
|
end
|
27
21
|
|
28
22
|
should "get the correct credentials when RAILS_ENV is production" do
|
@@ -100,7 +94,7 @@ class StorageTest < Test::Unit::TestCase
|
|
100
94
|
assert_match %r{^http://s3.amazonaws.com/bucket/avatars/stringio.txt}, @dummy.avatar.url
|
101
95
|
end
|
102
96
|
end
|
103
|
-
|
97
|
+
|
104
98
|
context "" do
|
105
99
|
setup do
|
106
100
|
container = mock
|
@@ -161,7 +155,7 @@ class StorageTest < Test::Unit::TestCase
|
|
161
155
|
assert_match %r{^http://something.something.com/avatars/stringio.txt}, @dummy.avatar.url
|
162
156
|
end
|
163
157
|
end
|
164
|
-
|
158
|
+
|
165
159
|
context "Generating a url with an expiration" do
|
166
160
|
setup do
|
167
161
|
AWS::S3::Base.stubs(:establish_connection!)
|
@@ -173,17 +167,17 @@ class StorageTest < Test::Unit::TestCase
|
|
173
167
|
:s3_host_alias => "something.something.com",
|
174
168
|
:path => ":attachment/:basename.:extension",
|
175
169
|
:url => ":s3_alias_url"
|
176
|
-
|
170
|
+
|
177
171
|
rails_env("production")
|
178
|
-
|
172
|
+
|
179
173
|
@dummy = Dummy.new
|
180
174
|
@dummy.avatar = StringIO.new(".")
|
181
|
-
|
175
|
+
|
182
176
|
AWS::S3::S3Object.expects(:url_for).with("avatars/stringio.txt", "prod_bucket", { :expires_in => 3600 })
|
183
|
-
|
177
|
+
|
184
178
|
@dummy.avatar.expiring_url
|
185
179
|
end
|
186
|
-
|
180
|
+
|
187
181
|
should "should succeed" do
|
188
182
|
assert true
|
189
183
|
end
|
@@ -198,11 +192,8 @@ class StorageTest < Test::Unit::TestCase
|
|
198
192
|
:development => { :bucket => "dev_bucket" }
|
199
193
|
}
|
200
194
|
@dummy = Dummy.new
|
201
|
-
@old_env = RAILS_ENV
|
202
195
|
end
|
203
196
|
|
204
|
-
teardown{ rails_env(@old_env) }
|
205
|
-
|
206
197
|
should "get the right bucket in production" do
|
207
198
|
rails_env("production")
|
208
199
|
assert_equal "prod_bucket", @dummy.avatar.bucket_name
|
@@ -285,7 +276,7 @@ class StorageTest < Test::Unit::TestCase
|
|
285
276
|
assert true
|
286
277
|
end
|
287
278
|
end
|
288
|
-
|
279
|
+
|
289
280
|
context "and remove" do
|
290
281
|
setup do
|
291
282
|
AWS::S3::S3Object.stubs(:exists?).returns(true)
|
@@ -376,7 +367,7 @@ class StorageTest < Test::Unit::TestCase
|
|
376
367
|
:bucket => lambda { |attachment| "bucket_#{attachment.instance.other}" },
|
377
368
|
:s3_credentials => {:not => :important}
|
378
369
|
end
|
379
|
-
|
370
|
+
|
380
371
|
should "get the right bucket name" do
|
381
372
|
assert "bucket_a", Dummy.new(:other => 'a').avatar.bucket_name
|
382
373
|
assert "bucket_b", Dummy.new(:other => 'b').avatar.bucket_name
|
@@ -439,6 +430,28 @@ class StorageTest < Test::Unit::TestCase
|
|
439
430
|
end
|
440
431
|
end
|
441
432
|
|
433
|
+
context "with S3 credentials supplied as Pathname" do
|
434
|
+
setup do
|
435
|
+
ENV['S3_KEY'] = 'pathname_key'
|
436
|
+
ENV['S3_BUCKET'] = 'pathname_bucket'
|
437
|
+
ENV['S3_SECRET'] = 'pathname_secret'
|
438
|
+
|
439
|
+
rails_env('test')
|
440
|
+
|
441
|
+
rebuild_model :storage => :s3,
|
442
|
+
:s3_credentials => Pathname.new(File.join(File.dirname(__FILE__))).join("fixtures/s3.yml")
|
443
|
+
|
444
|
+
Dummy.delete_all
|
445
|
+
@dummy = Dummy.new
|
446
|
+
end
|
447
|
+
|
448
|
+
should "parse the credentials" do
|
449
|
+
assert_equal 'pathname_bucket', @dummy.avatar.bucket_name
|
450
|
+
assert_equal 'pathname_key', AWS::S3::Base.connection.options[:access_key_id]
|
451
|
+
assert_equal 'pathname_secret', AWS::S3::Base.connection.options[:secret_access_key]
|
452
|
+
end
|
453
|
+
end
|
454
|
+
|
442
455
|
context "with S3 credentials in a YAML file" do
|
443
456
|
setup do
|
444
457
|
ENV['S3_KEY'] = 'env_key'
|
data/test/thumbnail_test.rb
CHANGED
@@ -92,7 +92,7 @@ class ThumbnailTest < Test::Unit::TestCase
|
|
92
92
|
|
93
93
|
should "send the right command to convert when sent #make" do
|
94
94
|
Paperclip.expects(:"`").with do |arg|
|
95
|
-
arg.match %r{convert
|
95
|
+
arg.match %r{convert '#{File.expand_path(@thumb.file.path)}\[0\]' '-resize' 'x50' '-crop' '100x50\+114\+0' '\+repage' '.*?'}
|
96
96
|
end
|
97
97
|
@thumb.make
|
98
98
|
end
|
@@ -111,12 +111,12 @@ class ThumbnailTest < Test::Unit::TestCase
|
|
111
111
|
end
|
112
112
|
|
113
113
|
should "have source_file_options value set" do
|
114
|
-
assert_equal "-strip", @thumb.source_file_options
|
114
|
+
assert_equal ["-strip"], @thumb.source_file_options
|
115
115
|
end
|
116
116
|
|
117
117
|
should "send the right command to convert when sent #make" do
|
118
118
|
Paperclip.expects(:"`").with do |arg|
|
119
|
-
arg.match %r{convert
|
119
|
+
arg.match %r{convert '-strip' '#{File.expand_path(@thumb.file.path)}\[0\]' '-resize' 'x50' '-crop' '100x50\+114\+0' '\+repage' '.*?'}
|
120
120
|
end
|
121
121
|
@thumb.make
|
122
122
|
end
|
@@ -149,12 +149,12 @@ class ThumbnailTest < Test::Unit::TestCase
|
|
149
149
|
end
|
150
150
|
|
151
151
|
should "have convert_options value set" do
|
152
|
-
assert_equal "-strip -depth 8", @thumb.convert_options
|
152
|
+
assert_equal %w"-strip -depth 8", @thumb.convert_options
|
153
153
|
end
|
154
154
|
|
155
155
|
should "send the right command to convert when sent #make" do
|
156
156
|
Paperclip.expects(:"`").with do |arg|
|
157
|
-
arg.match %r{convert
|
157
|
+
arg.match %r{convert '#{File.expand_path(@thumb.file.path)}\[0\]' '-resize' 'x50' '-crop' '100x50\+114\+0' '\+repage' '-strip' '-depth' '8' '.*?'}
|
158
158
|
end
|
159
159
|
@thumb.make
|
160
160
|
end
|
@@ -187,7 +187,7 @@ class ThumbnailTest < Test::Unit::TestCase
|
|
187
187
|
end
|
188
188
|
|
189
189
|
should "not get resized by default" do
|
190
|
-
|
190
|
+
assert !@thumb.transformation_command.include?("-resize")
|
191
191
|
end
|
192
192
|
end
|
193
193
|
end
|
data/test/upfile_test.rb
CHANGED
@@ -25,4 +25,12 @@ class UpfileTest < Test::Unit::TestCase
|
|
25
25
|
end
|
26
26
|
end
|
27
27
|
end
|
28
|
+
|
29
|
+
should "return a content_type of text/plain on a real file whose content_type is determined with the file command" do
|
30
|
+
file = File.new(File.join(File.dirname(__FILE__), "..", "LICENSE"))
|
31
|
+
class << file
|
32
|
+
include Paperclip::Upfile
|
33
|
+
end
|
34
|
+
assert_equal 'text/plain', file.content_type
|
35
|
+
end
|
28
36
|
end
|
metadata
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: paperclip-cloudfiles
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
+
hash: 7
|
4
5
|
prerelease: false
|
5
6
|
segments:
|
6
7
|
- 2
|
7
8
|
- 3
|
8
|
-
-
|
9
|
-
|
10
|
-
- 6
|
11
|
-
version: 2.3.1.1.6
|
9
|
+
- 2
|
10
|
+
version: 2.3.2
|
12
11
|
platform: ruby
|
13
12
|
authors:
|
14
13
|
- Jon Yurek
|
@@ -17,44 +16,46 @@ autorequire:
|
|
17
16
|
bindir: bin
|
18
17
|
cert_chain: []
|
19
18
|
|
20
|
-
date: 2010-
|
19
|
+
date: 2010-05-27 00:00:00 -05:00
|
21
20
|
default_executable:
|
22
21
|
dependencies:
|
23
22
|
- !ruby/object:Gem::Dependency
|
24
23
|
name: shoulda
|
25
24
|
prerelease: false
|
26
25
|
requirement: &id001 !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
27
|
requirements:
|
28
28
|
- - ">="
|
29
29
|
- !ruby/object:Gem::Version
|
30
|
+
hash: 3
|
30
31
|
segments:
|
31
32
|
- 0
|
32
33
|
version: "0"
|
33
34
|
type: :development
|
34
35
|
version_requirements: *id001
|
35
36
|
- !ruby/object:Gem::Dependency
|
36
|
-
name:
|
37
|
+
name: mocha
|
37
38
|
prerelease: false
|
38
39
|
requirement: &id002 !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
39
41
|
requirements:
|
40
42
|
- - ">="
|
41
43
|
- !ruby/object:Gem::Version
|
44
|
+
hash: 3
|
42
45
|
segments:
|
43
46
|
- 0
|
44
|
-
|
45
|
-
- 5
|
46
|
-
- 0
|
47
|
-
- 1241126838
|
48
|
-
version: 0.9.5.0.1241126838
|
47
|
+
version: "0"
|
49
48
|
type: :development
|
50
49
|
version_requirements: *id002
|
51
50
|
- !ruby/object:Gem::Dependency
|
52
51
|
name: aws-s3
|
53
52
|
prerelease: false
|
54
53
|
requirement: &id003 !ruby/object:Gem::Requirement
|
54
|
+
none: false
|
55
55
|
requirements:
|
56
56
|
- - ">="
|
57
57
|
- !ruby/object:Gem::Version
|
58
|
+
hash: 3
|
58
59
|
segments:
|
59
60
|
- 0
|
60
61
|
version: "0"
|
@@ -64,53 +65,59 @@ dependencies:
|
|
64
65
|
name: cloudfiles
|
65
66
|
prerelease: false
|
66
67
|
requirement: &id004 !ruby/object:Gem::Requirement
|
68
|
+
none: false
|
67
69
|
requirements:
|
68
70
|
- - ">="
|
69
71
|
- !ruby/object:Gem::Version
|
72
|
+
hash: 3
|
70
73
|
segments:
|
71
|
-
-
|
72
|
-
|
73
|
-
- 4
|
74
|
-
version: 1.4.4
|
74
|
+
- 0
|
75
|
+
version: "0"
|
75
76
|
type: :development
|
76
77
|
version_requirements: *id004
|
77
78
|
- !ruby/object:Gem::Dependency
|
78
79
|
name: sqlite3-ruby
|
79
80
|
prerelease: false
|
80
81
|
requirement: &id005 !ruby/object:Gem::Requirement
|
82
|
+
none: false
|
81
83
|
requirements:
|
82
84
|
- - ">="
|
83
85
|
- !ruby/object:Gem::Version
|
86
|
+
hash: 3
|
84
87
|
segments:
|
85
88
|
- 0
|
86
89
|
version: "0"
|
87
90
|
type: :development
|
88
91
|
version_requirements: *id005
|
89
92
|
- !ruby/object:Gem::Dependency
|
90
|
-
name:
|
93
|
+
name: active_record
|
91
94
|
prerelease: false
|
92
95
|
requirement: &id006 !ruby/object:Gem::Requirement
|
96
|
+
none: false
|
93
97
|
requirements:
|
94
98
|
- - ">="
|
95
99
|
- !ruby/object:Gem::Version
|
100
|
+
hash: 3
|
96
101
|
segments:
|
97
102
|
- 0
|
98
103
|
version: "0"
|
99
104
|
type: :development
|
100
105
|
version_requirements: *id006
|
101
106
|
- !ruby/object:Gem::Dependency
|
102
|
-
name:
|
107
|
+
name: active_support
|
103
108
|
prerelease: false
|
104
109
|
requirement: &id007 !ruby/object:Gem::Requirement
|
110
|
+
none: false
|
105
111
|
requirements:
|
106
112
|
- - ">="
|
107
113
|
- !ruby/object:Gem::Version
|
114
|
+
hash: 3
|
108
115
|
segments:
|
109
116
|
- 0
|
110
117
|
version: "0"
|
111
118
|
type: :development
|
112
119
|
version_requirements: *id007
|
113
|
-
description:
|
120
|
+
description: Easy upload management for ActiveRecord with Rackspace Cloud Files support
|
114
121
|
email:
|
115
122
|
- jyurek@thoughtbot.com
|
116
123
|
- minter@lunenburg.org
|
@@ -182,23 +189,27 @@ rdoc_options:
|
|
182
189
|
require_paths:
|
183
190
|
- lib
|
184
191
|
required_ruby_version: !ruby/object:Gem::Requirement
|
192
|
+
none: false
|
185
193
|
requirements:
|
186
194
|
- - ">="
|
187
195
|
- !ruby/object:Gem::Version
|
196
|
+
hash: 3
|
188
197
|
segments:
|
189
198
|
- 0
|
190
199
|
version: "0"
|
191
200
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
201
|
+
none: false
|
192
202
|
requirements:
|
193
203
|
- - ">="
|
194
204
|
- !ruby/object:Gem::Version
|
205
|
+
hash: 3
|
195
206
|
segments:
|
196
207
|
- 0
|
197
208
|
version: "0"
|
198
209
|
requirements:
|
199
210
|
- ImageMagick
|
200
211
|
rubyforge_project: paperclip
|
201
|
-
rubygems_version: 1.3.
|
212
|
+
rubygems_version: 1.3.7
|
202
213
|
signing_key:
|
203
214
|
specification_version: 3
|
204
215
|
summary: File attachments as attributes for ActiveRecord with Rackspace Cloud Files support
|