paperclip-cloudfiles 2.3.1.1.6 → 2.3.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -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