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.
@@ -11,12 +11,12 @@ class InterpolationsTest < Test::Unit::TestCase
11
11
  end
12
12
  end
13
13
 
14
- should "return the RAILS_ROOT" do
15
- assert_equal RAILS_ROOT, Paperclip::Interpolations.rails_root(:attachment, :style)
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 RAILS_ENV" do
19
- assert_equal RAILS_ENV, Paperclip::Interpolations.rails_env(:attachment, :style)
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
@@ -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[^#{Regexp.quote(basename)}.*?#{Regexp.quote(extension)}], File.basename(@tempfile.path)
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
- should "reject a class with no attachment" do
12
- assert_rejects @matcher, @dummy_class
11
+ context "given a class with no attachment" do
12
+ should_reject_dummy_class
13
13
  end
14
14
 
15
- should "accept a class with an attachment" do
16
- modify_table("dummies"){|d| d.string :avatar_file_name }
17
- @dummy_class.has_attached_file :avatar
18
- assert_accepts @matcher, @dummy_class
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
- should "reject a class with no validation" do
18
- assert_rejects @matcher, @dummy_class
17
+ context "given a class with no validation" do
18
+ should_reject_dummy_class
19
19
  end
20
20
 
21
- should "reject a class with a validation that doesn't match" do
22
- @dummy_class.validates_attachment_content_type :avatar, :content_type => %r{audio/.*}
23
- assert_rejects @matcher, @dummy_class
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
- should "accept a class with a validation" do
27
- @dummy_class.validates_attachment_content_type :avatar, :content_type => %r{image/.*}
28
- assert_accepts @matcher, @dummy_class
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
- should "reject a class with no validation" do
15
- assert_rejects @matcher, @dummy_class
14
+ context "given a class with no validation" do
15
+ should_reject_dummy_class
16
16
  end
17
17
 
18
- should "accept a class with a validation" do
19
- @dummy_class.validates_attachment_presence :avatar
20
- assert_accepts @matcher, @dummy_class
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
- should "reject a class with no validation" do
18
- assert_rejects @matcher, @dummy_class
17
+ context "given a class with no validation" do
18
+ should_reject_dummy_class
19
19
  end
20
20
 
21
- should "reject a class with a validation that's too high" do
22
- @dummy_class.validates_attachment_size :avatar, :in => 256..2048
23
- assert_rejects @matcher, @dummy_class
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
- should "reject a class with a validation that's too low" do
27
- @dummy_class.validates_attachment_size :avatar, :in => 0..1024
28
- assert_rejects @matcher, @dummy_class
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
- should "accept a class with a validation that matches" do
32
- @dummy_class.validates_attachment_size :avatar, :in => 256..1024
33
- assert_accepts @matcher, @dummy_class
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
- should "accept a class with an upper limit" do
41
- @dummy_class.validates_attachment_size :avatar, :less_than => 1
42
- assert_accepts @matcher, @dummy_class
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
- should "accept a class with no upper limit" do
46
- @dummy_class.validates_attachment_size :avatar, :greater_than => 1
47
- assert_accepts @matcher, @dummy_class
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
@@ -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
- setup do
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.stubs(:log)
49
- Paperclip.stubs(:"`").with("this is the command 2>/dev/null")
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.on(:avatar_file_name)
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
- assert_nil @dummy.errors.on(:avatar_file_name), @dummy.errors.full_messages.join(", ")
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
- assert_match %r/between 0 and 10240 bytes/, @dummy.errors.on(:avatar_file_size)
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(:RAILS_ENV, env)
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
- c0045182.cdn.cloudfiles.rackspacecloud.com
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'
@@ -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\s+"#{File.expand_path(@thumb.file.path)}\[0\]"\s+-resize\s+\"x50\"\s+-crop\s+\"100x50\+114\+0\"\s+\+repage\s+".*?"}
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\s+-strip\s+"#{File.expand_path(@thumb.file.path)}\[0\]"\s+-resize\s+"x50"\s+-crop\s+"100x50\+114\+0"\s+\+repage\s+".*?"}
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\s+"#{File.expand_path(@thumb.file.path)}\[0\]"\s+-resize\s+"x50"\s+-crop\s+"100x50\+114\+0"\s+\+repage\s+-strip\s+-depth\s+8\s+".*?"}
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
- assert_no_match(/-resize/, @thumb.transformation_command)
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
- - 1
9
- - 1
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-04-19 00:00:00 -05:00
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: jferris-mocha
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
- - 9
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
- - 1
72
- - 4
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: activerecord
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: activesupport
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: A fork of the Thoughtbot Paperclip gem/plugin, adding support for Rackspace Cloud Files. This fork is maintained by H. Wade Minter <minter@lunenburg.org>
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.6
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