andrewtimberlake-carrierwave 0.3.2.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.
Files changed (59) hide show
  1. data/Generators +4 -0
  2. data/LICENSE +20 -0
  3. data/README.rdoc +314 -0
  4. data/Rakefile +29 -0
  5. data/lib/carrierwave.rb +140 -0
  6. data/lib/carrierwave/compatibility/paperclip.rb +95 -0
  7. data/lib/carrierwave/core_ext/blank.rb +46 -0
  8. data/lib/carrierwave/core_ext/inheritable_attributes.rb +104 -0
  9. data/lib/carrierwave/core_ext/module_setup.rb +51 -0
  10. data/lib/carrierwave/mount.rb +332 -0
  11. data/lib/carrierwave/orm/activerecord.rb +73 -0
  12. data/lib/carrierwave/orm/datamapper.rb +27 -0
  13. data/lib/carrierwave/orm/sequel.rb +57 -0
  14. data/lib/carrierwave/processing/image_science.rb +72 -0
  15. data/lib/carrierwave/processing/rmagick.rb +286 -0
  16. data/lib/carrierwave/sanitized_file.rb +272 -0
  17. data/lib/carrierwave/storage/abstract.rb +32 -0
  18. data/lib/carrierwave/storage/file.rb +50 -0
  19. data/lib/carrierwave/storage/s3.rb +215 -0
  20. data/lib/carrierwave/test/matchers.rb +114 -0
  21. data/lib/carrierwave/uploader.rb +43 -0
  22. data/lib/carrierwave/uploader/cache.rb +116 -0
  23. data/lib/carrierwave/uploader/callbacks.rb +42 -0
  24. data/lib/carrierwave/uploader/default_path.rb +23 -0
  25. data/lib/carrierwave/uploader/extension_whitelist.rb +37 -0
  26. data/lib/carrierwave/uploader/mountable.rb +39 -0
  27. data/lib/carrierwave/uploader/paths.rb +27 -0
  28. data/lib/carrierwave/uploader/processing.rb +81 -0
  29. data/lib/carrierwave/uploader/proxy.rb +62 -0
  30. data/lib/carrierwave/uploader/remove.rb +23 -0
  31. data/lib/carrierwave/uploader/store.rb +156 -0
  32. data/lib/carrierwave/uploader/url.rb +24 -0
  33. data/lib/carrierwave/uploader/versions.rb +147 -0
  34. data/lib/generators/uploader_generator.rb +22 -0
  35. data/rails_generators/uploader/USAGE +2 -0
  36. data/rails_generators/uploader/templates/uploader.rb +47 -0
  37. data/rails_generators/uploader/uploader_generator.rb +21 -0
  38. data/spec/compatibility/paperclip_spec.rb +43 -0
  39. data/spec/fixtures/bork.txt +1 -0
  40. data/spec/fixtures/test.jpeg +1 -0
  41. data/spec/fixtures/test.jpg +1 -0
  42. data/spec/mount_spec.rb +517 -0
  43. data/spec/orm/activerecord_spec.rb +271 -0
  44. data/spec/orm/datamapper_spec.rb +161 -0
  45. data/spec/orm/sequel_spec.rb +192 -0
  46. data/spec/sanitized_file_spec.rb +612 -0
  47. data/spec/spec_helper.rb +99 -0
  48. data/spec/uploader/cache_spec.rb +196 -0
  49. data/spec/uploader/default_path_spec.rb +68 -0
  50. data/spec/uploader/extension_whitelist_spec.rb +44 -0
  51. data/spec/uploader/mountable_spec.rb +33 -0
  52. data/spec/uploader/paths_spec.rb +22 -0
  53. data/spec/uploader/processing_spec.rb +62 -0
  54. data/spec/uploader/proxy_spec.rb +54 -0
  55. data/spec/uploader/remove_spec.rb +70 -0
  56. data/spec/uploader/store_spec.rb +274 -0
  57. data/spec/uploader/url_spec.rb +87 -0
  58. data/spec/uploader/versions_spec.rb +306 -0
  59. metadata +127 -0
@@ -0,0 +1,87 @@
1
+ # encoding: utf-8
2
+
3
+ require File.dirname(__FILE__) + '/../spec_helper'
4
+
5
+ describe CarrierWave::Uploader do
6
+
7
+ before do
8
+ @uploader_class = Class.new(CarrierWave::Uploader::Base)
9
+ @uploader = @uploader_class.new
10
+ end
11
+
12
+ after do
13
+ FileUtils.rm_rf(public_path)
14
+ end
15
+
16
+ describe '#url' do
17
+ before do
18
+ CarrierWave.stub!(:generate_cache_id).and_return('20071201-1234-345-2255')
19
+ end
20
+
21
+ it "should default to nil" do
22
+ @uploader.url.should be_nil
23
+ end
24
+
25
+ it "should raise ArgumentError when version doesn't exist" do
26
+ lambda { @uploader.url(:thumb) }.should raise_error(ArgumentError)
27
+ end
28
+
29
+ it "should not raise ArgumentError when versions version exists" do
30
+ @uploader_class.version(:thumb)
31
+ lambda { @uploader.url(:thumb) }.should_not raise_error(ArgumentError)
32
+ end
33
+
34
+ it "should get the directory relative to public, prepending a slash" do
35
+ @uploader.cache!(File.open(file_path('test.jpg')))
36
+ @uploader.url.should == '/uploads/tmp/20071201-1234-345-2255/test.jpg'
37
+ end
38
+
39
+ it "should get the directory relative to public for a specific version" do
40
+ @uploader_class.version(:thumb)
41
+ @uploader.cache!(File.open(file_path('test.jpg')))
42
+ @uploader.url(:thumb).should == '/uploads/tmp/20071201-1234-345-2255/thumb_test.jpg'
43
+ end
44
+
45
+ it "should get the directory relative to public for a nested version" do
46
+ @uploader_class.version(:thumb) do
47
+ version(:mini)
48
+ end
49
+ @uploader.cache!(File.open(file_path('test.jpg')))
50
+ @uploader.url(:thumb, :mini).should == '/uploads/tmp/20071201-1234-345-2255/thumb_mini_test.jpg'
51
+ end
52
+
53
+ it "should return file#url if available" do
54
+ @uploader.cache!(File.open(file_path('test.jpg')))
55
+ @uploader.file.stub!(:url).and_return('http://www.example.com/someurl.jpg')
56
+ @uploader.url.should == 'http://www.example.com/someurl.jpg'
57
+ end
58
+
59
+ it "should get the directory relative to public, if file#url is blank" do
60
+ @uploader.cache!(File.open(file_path('test.jpg')))
61
+ @uploader.file.stub!(:url).and_return('')
62
+ @uploader.url.should == '/uploads/tmp/20071201-1234-345-2255/test.jpg'
63
+ end
64
+ end
65
+
66
+ describe '#to_s' do
67
+ before do
68
+ CarrierWave.stub!(:generate_cache_id).and_return('20071201-1234-345-2255')
69
+ end
70
+
71
+ it "should default to nil" do
72
+ @uploader.to_s.should be_nil
73
+ end
74
+
75
+ it "should get the directory relative to public, prepending a slash" do
76
+ @uploader.cache!(File.open(file_path('test.jpg')))
77
+ @uploader.to_s.should == '/uploads/tmp/20071201-1234-345-2255/test.jpg'
78
+ end
79
+
80
+ it "should return file#url if available" do
81
+ @uploader.cache!(File.open(file_path('test.jpg')))
82
+ @uploader.file.stub!(:url).and_return('http://www.example.com/someurl.jpg')
83
+ @uploader.to_s.should == 'http://www.example.com/someurl.jpg'
84
+ end
85
+ end
86
+
87
+ end
@@ -0,0 +1,306 @@
1
+ # encoding: utf-8
2
+
3
+ require File.dirname(__FILE__) + '/../spec_helper'
4
+
5
+ describe CarrierWave::Uploader do
6
+
7
+ before do
8
+ @uploader_class = Class.new(CarrierWave::Uploader::Base)
9
+ @uploader = @uploader_class.new
10
+ end
11
+
12
+ after do
13
+ FileUtils.rm_rf(public_path)
14
+ end
15
+
16
+ describe '.version' do
17
+ it "should add it to .versions" do
18
+ @uploader_class.version :thumb
19
+ @uploader_class.versions[:thumb].should be_a(Class)
20
+ @uploader_class.versions[:thumb].ancestors.should include(@uploader_class)
21
+ end
22
+
23
+ it "should add an accessor which returns the version" do
24
+ @uploader_class.version :thumb
25
+ @uploader.thumb.should be_a(@uploader_class)
26
+ end
27
+
28
+ it "should add it to #versions which returns the version" do
29
+ @uploader_class.version :thumb
30
+ @uploader.versions[:thumb].should be_a(@uploader_class)
31
+ end
32
+
33
+ it "should set the version name" do
34
+ @uploader_class.version :thumb
35
+ @uploader.version_name.should == nil
36
+ @uploader.thumb.version_name.should == :thumb
37
+ end
38
+
39
+ it "should set the version names on the class" do
40
+ @uploader_class.version :thumb
41
+ @uploader.class.version_names.should == []
42
+ @uploader.thumb.class.version_names.should == [:thumb]
43
+ end
44
+
45
+ it "should remember mount options" do
46
+ model = mock('a model')
47
+ @uploader_class.version :thumb
48
+ @uploader = @uploader_class.new(model, :gazelle)
49
+
50
+ @uploader.thumb.model.should == model
51
+ @uploader.thumb.mounted_as.should == :gazelle
52
+ end
53
+
54
+ it "should apply any overrides given in a block" do
55
+ @uploader_class.version :thumb do
56
+ def store_dir
57
+ public_path('monkey/apache')
58
+ end
59
+ end
60
+ @uploader.store_dir.should == 'uploads'
61
+ @uploader.thumb.store_dir.should == public_path('monkey/apache')
62
+ end
63
+
64
+ it "should reopen the same class when called multiple times" do
65
+ @uploader_class.version :thumb do
66
+ def self.monkey
67
+ "monkey"
68
+ end
69
+ end
70
+ @uploader_class.version :thumb do
71
+ def self.llama
72
+ "llama"
73
+ end
74
+ end
75
+ @uploader_class.version(:thumb).monkey.should == "monkey"
76
+ @uploader_class.version(:thumb).llama.should == "llama"
77
+ end
78
+
79
+ describe 'with nested versions' do
80
+ before do
81
+ @uploader_class.version :thumb do
82
+ version :mini
83
+ version :micro
84
+ end
85
+ end
86
+
87
+ it "should add an array of version names" do
88
+ @uploader.class.version_names.should == []
89
+ @uploader.thumb.class.version_names.should == [:thumb]
90
+ @uploader.thumb.mini.class.version_names.should == [:thumb, :mini]
91
+ @uploader.thumb.micro.class.version_names.should == [:thumb, :micro]
92
+ end
93
+
94
+ it "should set the version name for the instances" do
95
+ @uploader.version_name.should be_nil
96
+ @uploader.thumb.version_name.should == :thumb
97
+ @uploader.thumb.mini.version_name.should == :thumb_mini
98
+ @uploader.thumb.micro.version_name.should == :thumb_micro
99
+ end
100
+
101
+ end
102
+
103
+ end
104
+
105
+ describe 'with a version' do
106
+ before do
107
+ @uploader_class.version(:thumb)
108
+ end
109
+
110
+ describe '#cache!' do
111
+
112
+ before do
113
+ CarrierWave.stub!(:generate_cache_id).and_return('20071201-1234-345-2255')
114
+ end
115
+
116
+ it "should set store_path with versions" do
117
+ @uploader.cache!(File.open(file_path('test.jpg')))
118
+ @uploader.store_path.should == 'uploads/test.jpg'
119
+ @uploader.thumb.store_path.should == 'uploads/thumb_test.jpg'
120
+ @uploader.thumb.store_path('kebab.png').should == 'uploads/thumb_kebab.png'
121
+ end
122
+
123
+ it "should move it to the tmp dir with the filename prefixed" do
124
+ @uploader.cache!(File.open(file_path('test.jpg')))
125
+ @uploader.current_path.should == public_path('uploads/tmp/20071201-1234-345-2255/test.jpg')
126
+ @uploader.thumb.current_path.should == public_path('uploads/tmp/20071201-1234-345-2255/thumb_test.jpg')
127
+ @uploader.file.exists?.should be_true
128
+ @uploader.thumb.file.exists?.should be_true
129
+ end
130
+ end
131
+
132
+ describe '#retrieve_from_cache!' do
133
+ it "should set the path to the tmp dir" do
134
+ @uploader.retrieve_from_cache!('20071201-1234-345-2255/test.jpg')
135
+ @uploader.current_path.should == public_path('uploads/tmp/20071201-1234-345-2255/test.jpg')
136
+ @uploader.thumb.current_path.should == public_path('uploads/tmp/20071201-1234-345-2255/thumb_test.jpg')
137
+ end
138
+
139
+ it "should set store_path with versions" do
140
+ @uploader.retrieve_from_cache!('20071201-1234-345-2255/test.jpg')
141
+ @uploader.store_path.should == 'uploads/test.jpg'
142
+ @uploader.thumb.store_path.should == 'uploads/thumb_test.jpg'
143
+ @uploader.thumb.store_path('kebab.png').should == 'uploads/thumb_kebab.png'
144
+ end
145
+ end
146
+
147
+ describe '#store!' do
148
+ before do
149
+ @uploader_class.storage = mock_storage('base')
150
+ @uploader_class.version(:thumb).storage = mock_storage('thumb')
151
+
152
+ @file = File.open(file_path('test.jpg'))
153
+
154
+ @base_stored_file = mock('a stored file')
155
+ @base_stored_file.stub!(:path).and_return('/path/to/somewhere')
156
+ @base_stored_file.stub!(:url).and_return('http://www.example.com')
157
+
158
+ @thumb_stored_file = mock('a thumb version of a stored file')
159
+ @thumb_stored_file.stub!(:path).and_return('/path/to/somewhere/thumb')
160
+ @thumb_stored_file.stub!(:url).and_return('http://www.example.com/thumb')
161
+
162
+ @storage = mock('a storage engine')
163
+ @storage.stub!(:store!).and_return(@base_stored_file)
164
+
165
+ @thumb_storage = mock('a storage engine for thumbnails')
166
+ @thumb_storage.stub!(:store!).and_return(@thumb_stored_file)
167
+
168
+ @uploader_class.storage.stub!(:new).with(@uploader).and_return(@storage)
169
+ @uploader_class.version(:thumb).storage.stub!(:new).with(@uploader.thumb).and_return(@thumb_storage)
170
+ end
171
+
172
+ after do
173
+ CarrierWave.config[:use_cache] = true
174
+ end
175
+
176
+ it "should set the current path for the version" do
177
+ @uploader.store!(@file)
178
+ @uploader.current_path.should == '/path/to/somewhere'
179
+ @uploader.thumb.current_path.should == '/path/to/somewhere/thumb'
180
+ end
181
+
182
+ it "should set the url" do
183
+ @uploader.store!(@file)
184
+ @uploader.url.should == 'http://www.example.com'
185
+ @uploader.thumb.url.should == 'http://www.example.com/thumb'
186
+ end
187
+
188
+ it "should, if a file is given as argument, set the store_path" do
189
+ @uploader.store!(@file)
190
+ @uploader.store_path.should == 'uploads/test.jpg'
191
+ @uploader.thumb.store_path.should == 'uploads/thumb_test.jpg'
192
+ @uploader.thumb.store_path('kebab.png').should == 'uploads/thumb_kebab.png'
193
+ end
194
+
195
+ it "should instruct the storage engine to store the file and its version" do
196
+ @uploader.cache!(@file)
197
+ @storage.should_receive(:store!).with(@uploader.file).and_return(:monkey)
198
+ @thumb_storage.should_receive(:store!).with(@uploader.thumb.file).and_return(:gorilla)
199
+ @uploader.store!
200
+ end
201
+
202
+ end
203
+
204
+ describe '#remove!' do
205
+ before do
206
+ @uploader_class.storage = mock_storage('base')
207
+ @uploader_class.version(:thumb).storage = mock_storage('thumb')
208
+
209
+ @file = File.open(file_path('test.jpg'))
210
+
211
+ @base_stored_file = mock('a stored file')
212
+ @thumb_stored_file = mock('a thumb version of a stored file')
213
+
214
+ @storage = mock('a storage engine')
215
+ @storage.stub!(:store!).and_return(@base_stored_file)
216
+
217
+ @thumb_storage = mock('a storage engine for thumbnails')
218
+ @thumb_storage.stub!(:store!).and_return(@thumb_stored_file)
219
+
220
+ @uploader_class.storage.stub!(:new).with(@uploader).and_return(@storage)
221
+ @uploader_class.version(:thumb).storage.stub!(:new).with(@uploader.thumb).and_return(@thumb_storage)
222
+
223
+ @base_stored_file.stub!(:delete)
224
+ @thumb_stored_file.stub!(:delete)
225
+
226
+ @uploader.store!(@file)
227
+ end
228
+
229
+ after do
230
+ CarrierWave.config[:use_cache] = true
231
+ end
232
+
233
+ it "should reset the current path for the version" do
234
+ @uploader.remove!
235
+ @uploader.current_path.should be_nil
236
+ @uploader.thumb.current_path.should be_nil
237
+ end
238
+
239
+ it "should reset the url" do
240
+ @uploader.remove!
241
+ @uploader.url.should be_nil
242
+ @uploader.thumb.url.should be_nil
243
+ end
244
+
245
+ it "should delete all the files" do
246
+ @base_stored_file.should_receive(:delete)
247
+ @thumb_stored_file.should_receive(:delete)
248
+ @uploader.remove!
249
+ end
250
+
251
+ end
252
+
253
+
254
+ describe '#retrieve_from_store!' do
255
+ before do
256
+ @uploader_class.storage = mock_storage('base')
257
+ @uploader_class.version(:thumb).storage = mock_storage('thumb')
258
+
259
+ @file = File.open(file_path('test.jpg'))
260
+
261
+ @base_stored_file = mock('a stored file')
262
+ @base_stored_file.stub!(:path).and_return('/path/to/somewhere')
263
+ @base_stored_file.stub!(:url).and_return('http://www.example.com')
264
+
265
+ @thumb_stored_file = mock('a thumb version of a stored file')
266
+ @thumb_stored_file.stub!(:path).and_return('/path/to/somewhere/thumb')
267
+ @thumb_stored_file.stub!(:url).and_return('http://www.example.com/thumb')
268
+
269
+ @storage = mock('a storage engine')
270
+ @storage.stub!(:retrieve!).and_return(@base_stored_file)
271
+
272
+ @thumb_storage = mock('a storage engine for thumbnails')
273
+ @thumb_storage.stub!(:retrieve!).and_return(@thumb_stored_file)
274
+
275
+ @uploader_class.storage.stub!(:new).with(@uploader).and_return(@storage)
276
+ @uploader_class.version(:thumb).storage.stub!(:new).with(@uploader.thumb).and_return(@thumb_storage)
277
+ end
278
+
279
+ it "should set the current path" do
280
+ @uploader.retrieve_from_store!('monkey.txt')
281
+ @uploader.current_path.should == '/path/to/somewhere'
282
+ @uploader.thumb.current_path.should == '/path/to/somewhere/thumb'
283
+ end
284
+
285
+ it "should set the url" do
286
+ @uploader.retrieve_from_store!('monkey.txt')
287
+ @uploader.url.should == 'http://www.example.com'
288
+ @uploader.thumb.url.should == 'http://www.example.com/thumb'
289
+ end
290
+
291
+ it "should pass the identifier to the storage engine" do
292
+ @storage.should_receive(:retrieve!).with('monkey.txt').and_return(@base_stored_file)
293
+ @thumb_storage.should_receive(:retrieve!).with('monkey.txt').and_return(@thumb_stored_file)
294
+ @uploader.retrieve_from_store!('monkey.txt')
295
+ @uploader.file.should == @base_stored_file
296
+ @uploader.thumb.file.should == @thumb_stored_file
297
+ end
298
+
299
+ it "should not set the filename" do
300
+ @uploader.retrieve_from_store!('monkey.txt')
301
+ @uploader.filename.should be_nil
302
+ end
303
+ end
304
+ end
305
+
306
+ end
metadata ADDED
@@ -0,0 +1,127 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: andrewtimberlake-carrierwave
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.2.1
5
+ platform: ruby
6
+ authors:
7
+ - Jonas Nicklas
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-07-18 00:00:00 -07:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description: Simple and powerful uploads for Merb and Rails
17
+ email: jonas.nicklas@gmail.com
18
+ executables: []
19
+
20
+ extensions: []
21
+
22
+ extra_rdoc_files:
23
+ - README.rdoc
24
+ - LICENSE
25
+ files:
26
+ - LICENSE
27
+ - Generators
28
+ - README.rdoc
29
+ - Rakefile
30
+ - lib/carrierwave
31
+ - lib/carrierwave/compatibility
32
+ - lib/carrierwave/compatibility/paperclip.rb
33
+ - lib/carrierwave/core_ext
34
+ - lib/carrierwave/core_ext/blank.rb
35
+ - lib/carrierwave/core_ext/inheritable_attributes.rb
36
+ - lib/carrierwave/core_ext/module_setup.rb
37
+ - lib/carrierwave/mount.rb
38
+ - lib/carrierwave/orm
39
+ - lib/carrierwave/orm/activerecord.rb
40
+ - lib/carrierwave/orm/datamapper.rb
41
+ - lib/carrierwave/orm/sequel.rb
42
+ - lib/carrierwave/processing
43
+ - lib/carrierwave/processing/image_science.rb
44
+ - lib/carrierwave/processing/rmagick.rb
45
+ - lib/carrierwave/sanitized_file.rb
46
+ - lib/carrierwave/storage
47
+ - lib/carrierwave/storage/abstract.rb
48
+ - lib/carrierwave/storage/file.rb
49
+ - lib/carrierwave/storage/s3.rb
50
+ - lib/carrierwave/test
51
+ - lib/carrierwave/test/matchers.rb
52
+ - lib/carrierwave/uploader
53
+ - lib/carrierwave/uploader/cache.rb
54
+ - lib/carrierwave/uploader/callbacks.rb
55
+ - lib/carrierwave/uploader/default_path.rb
56
+ - lib/carrierwave/uploader/extension_whitelist.rb
57
+ - lib/carrierwave/uploader/mountable.rb
58
+ - lib/carrierwave/uploader/paths.rb
59
+ - lib/carrierwave/uploader/processing.rb
60
+ - lib/carrierwave/uploader/proxy.rb
61
+ - lib/carrierwave/uploader/remove.rb
62
+ - lib/carrierwave/uploader/store.rb
63
+ - lib/carrierwave/uploader/url.rb
64
+ - lib/carrierwave/uploader/versions.rb
65
+ - lib/carrierwave/uploader.rb
66
+ - lib/carrierwave.rb
67
+ - lib/generators
68
+ - lib/generators/uploader_generator.rb
69
+ - spec/compatibility
70
+ - spec/compatibility/paperclip_spec.rb
71
+ - spec/fixtures
72
+ - spec/fixtures/bork.txt
73
+ - spec/fixtures/test.jpeg
74
+ - spec/fixtures/test.jpg
75
+ - spec/mount_spec.rb
76
+ - spec/orm
77
+ - spec/orm/activerecord_spec.rb
78
+ - spec/orm/datamapper_spec.rb
79
+ - spec/orm/sequel_spec.rb
80
+ - spec/sanitized_file_spec.rb
81
+ - spec/spec_helper.rb
82
+ - spec/uploader
83
+ - spec/uploader/cache_spec.rb
84
+ - spec/uploader/default_path_spec.rb
85
+ - spec/uploader/extension_whitelist_spec.rb
86
+ - spec/uploader/mountable_spec.rb
87
+ - spec/uploader/paths_spec.rb
88
+ - spec/uploader/processing_spec.rb
89
+ - spec/uploader/proxy_spec.rb
90
+ - spec/uploader/remove_spec.rb
91
+ - spec/uploader/store_spec.rb
92
+ - spec/uploader/url_spec.rb
93
+ - spec/uploader/versions_spec.rb
94
+ - rails_generators/uploader
95
+ - rails_generators/uploader/templates
96
+ - rails_generators/uploader/templates/uploader.rb
97
+ - rails_generators/uploader/uploader_generator.rb
98
+ - rails_generators/uploader/USAGE
99
+ has_rdoc: true
100
+ homepage: http://www.example.com
101
+ licenses:
102
+ post_install_message:
103
+ rdoc_options: []
104
+
105
+ require_paths:
106
+ - lib
107
+ required_ruby_version: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ version: "0"
112
+ version:
113
+ required_rubygems_version: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: "0"
118
+ version:
119
+ requirements: []
120
+
121
+ rubyforge_project: carrierwave
122
+ rubygems_version: 1.3.5
123
+ signing_key:
124
+ specification_version: 3
125
+ summary: Simple and powerful uploads for Merb and Rails
126
+ test_files: []
127
+