carrierwave 0.4.5 → 0.4.6

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of carrierwave might be problematic. Click here for more details.

Files changed (92) hide show
  1. data/README.rdoc +33 -15
  2. data/lib/carrierwave.rb +0 -1
  3. data/lib/carrierwave/compatibility/paperclip.rb +2 -2
  4. data/lib/carrierwave/orm/activerecord.rb +9 -5
  5. data/lib/carrierwave/orm/datamapper.rb +10 -0
  6. data/lib/carrierwave/processing/mini_magick.rb +1 -1
  7. data/lib/carrierwave/processing/rmagick.rb +4 -4
  8. data/lib/carrierwave/sanitized_file.rb +2 -2
  9. data/lib/carrierwave/storage/cloud_files.rb +11 -12
  10. data/lib/carrierwave/storage/grid_fs.rb +37 -26
  11. data/lib/carrierwave/storage/right_s3.rb +1 -168
  12. data/lib/carrierwave/storage/s3.rb +73 -66
  13. data/lib/carrierwave/test/matchers.rb +57 -21
  14. data/lib/carrierwave/uploader/configuration.rb +8 -5
  15. data/lib/carrierwave/uploader/processing.rb +1 -0
  16. data/lib/carrierwave/uploader/url.rb +2 -2
  17. data/lib/carrierwave/uploader/versions.rb +10 -0
  18. metadata +31 -279
  19. data/Generators +0 -4
  20. data/History.txt +0 -125
  21. data/Manifest.txt +0 -111
  22. data/Rakefile +0 -39
  23. data/carrierwave.gemspec +0 -85
  24. data/cucumber.yml +0 -2
  25. data/features/caching.feature +0 -28
  26. data/features/download.feature +0 -20
  27. data/features/file_storage.feature +0 -37
  28. data/features/file_storage_overridden_filename.feature +0 -38
  29. data/features/file_storage_overridden_store_dir.feature +0 -38
  30. data/features/file_storage_reversing_processor.feature +0 -43
  31. data/features/fixtures/bork.txt +0 -1
  32. data/features/fixtures/monkey.txt +0 -1
  33. data/features/grid_fs_storage.feature +0 -32
  34. data/features/mount_activerecord.feature +0 -46
  35. data/features/mount_datamapper.feature +0 -46
  36. data/features/step_definitions/activerecord_steps.rb +0 -22
  37. data/features/step_definitions/caching_steps.rb +0 -14
  38. data/features/step_definitions/datamapper_steps.rb +0 -29
  39. data/features/step_definitions/download_steps.rb +0 -4
  40. data/features/step_definitions/file_steps.rb +0 -53
  41. data/features/step_definitions/general_steps.rb +0 -85
  42. data/features/step_definitions/mount_steps.rb +0 -19
  43. data/features/step_definitions/store_steps.rb +0 -18
  44. data/features/support/activerecord.rb +0 -30
  45. data/features/support/datamapper.rb +0 -7
  46. data/features/support/env.rb +0 -22
  47. data/features/versions_basics.feature +0 -50
  48. data/features/versions_nested_versions.feature +0 -70
  49. data/features/versions_overridden_filename.feature +0 -51
  50. data/features/versions_overriden_store_dir.feature +0 -41
  51. data/lib/carrierwave/orm/mongomapper.rb +0 -27
  52. data/merb_generators/uploader_generator.rb +0 -22
  53. data/rails_generators/uploader/USAGE +0 -2
  54. data/rails_generators/uploader/templates/uploader.rb +0 -47
  55. data/rails_generators/uploader/uploader_generator.rb +0 -21
  56. data/script/console +0 -10
  57. data/script/destroy +0 -14
  58. data/script/generate +0 -14
  59. data/spec/compatibility/paperclip_spec.rb +0 -52
  60. data/spec/fixtures/bork.txt +0 -1
  61. data/spec/fixtures/landscape.jpg +0 -0
  62. data/spec/fixtures/portrait.jpg +0 -0
  63. data/spec/fixtures/test.jpeg +0 -1
  64. data/spec/fixtures/test.jpg +0 -1
  65. data/spec/mount_spec.rb +0 -538
  66. data/spec/orm/activerecord_spec.rb +0 -271
  67. data/spec/orm/datamapper_spec.rb +0 -168
  68. data/spec/orm/mongoid_spec.rb +0 -202
  69. data/spec/orm/mongomapper_spec.rb +0 -202
  70. data/spec/orm/sequel_spec.rb +0 -183
  71. data/spec/processing/image_science_spec.rb +0 -56
  72. data/spec/processing/mini_magick_spec.rb +0 -76
  73. data/spec/processing/rmagick_spec.rb +0 -75
  74. data/spec/sanitized_file_spec.rb +0 -623
  75. data/spec/spec_helper.rb +0 -92
  76. data/spec/storage/cloudfiles_spec.rb +0 -78
  77. data/spec/storage/grid_fs_spec.rb +0 -83
  78. data/spec/storage/right_s3_spec.rb +0 -83
  79. data/spec/storage/s3_spec.rb +0 -95
  80. data/spec/uploader/cache_spec.rb +0 -209
  81. data/spec/uploader/configuration_spec.rb +0 -105
  82. data/spec/uploader/default_url_spec.rb +0 -85
  83. data/spec/uploader/download_spec.rb +0 -75
  84. data/spec/uploader/extension_whitelist_spec.rb +0 -44
  85. data/spec/uploader/mountable_spec.rb +0 -33
  86. data/spec/uploader/paths_spec.rb +0 -22
  87. data/spec/uploader/processing_spec.rb +0 -73
  88. data/spec/uploader/proxy_spec.rb +0 -54
  89. data/spec/uploader/remove_spec.rb +0 -70
  90. data/spec/uploader/store_spec.rb +0 -264
  91. data/spec/uploader/url_spec.rb +0 -102
  92. data/spec/uploader/versions_spec.rb +0 -298
@@ -1,13 +1,17 @@
1
1
  # encoding: utf-8
2
- require 'aws/s3'
2
+ begin
3
+ require 'aws'
4
+ rescue LoadError
5
+ raise "You don't have the 'aws' gem installed. 'aws-s3' and 'right_aws' are no longer supported."
6
+ end
3
7
 
4
8
  module CarrierWave
5
9
  module Storage
6
10
 
7
11
  ##
8
- # Uploads things to Amazon S3 webservices. It requies the aws/s3 gem. In order for
9
- # CarrierWave to connect to Amazon S3, you'll need to specify an access key id, secret key
10
- # and bucket:
12
+ # Uploads things to Amazon S3 webservices using the "aws" library (aws gem).
13
+ # In order for CarrierWave to connect to Amazon S3, you'll need to specify an access key id, secret key
14
+ # and bucket
11
15
  #
12
16
  # CarrierWave.configure do |config|
13
17
  # config.s3_access_key_id = "xxxxxx"
@@ -15,14 +19,21 @@ module CarrierWave
15
19
  # config.s3_bucket = "my_bucket_name"
16
20
  # end
17
21
  #
18
- # You can also set the access policy for the uploaded files:
22
+ # The AWS::S3Interface is used directly as opposed to the normal AWS::S3::Bucket et.al. classes.
23
+ # This gives much improved performance and avoids unnecessary requests.
24
+ #
25
+ # You can set the access policy for the uploaded files:
19
26
  #
20
27
  # CarrierWave.configure do |config|
21
- # config.s3_access = :public
28
+ # config.s3_access_policy = 'public-read'
22
29
  # end
23
30
  #
24
- # Possible values are the 'canned access control policies' provided in the aws/s3 gem,
25
- # they are:
31
+ # The default is 'public-read'. For more options see:
32
+ #
33
+ # http://docs.amazonwebservices.com/AmazonS3/latest/RESTAccessPolicy.html#RESTCannedAccessPolicies
34
+ #
35
+ # For backwards compatability with the original aws-s3 library, if the old +config.s3_access+ is set it
36
+ # will be converted to the appropriate access policy:
26
37
  #
27
38
  # [:private] No one else has any access rights.
28
39
  # [:public_read] The anonymous principal is granted READ access.
@@ -32,22 +43,6 @@ module CarrierWave
32
43
  # [:authenticated_read] Any principal authenticated as a registered Amazon S3 user
33
44
  # is granted READ access.
34
45
  #
35
- # The default is :public_read, it should work in most cases.
36
- #
37
- # You can assign HTTP headers to be used when S3 serves your files:
38
- #
39
- # CarrierWave.configure do |config|
40
- # config.s3_headers = {"Content-Disposition" => "attachment; filename=foo.jpg;"}
41
- # end
42
- #
43
- # You can also set the headers dynamically by overriding the s3_headers method:
44
- #
45
- # class MyUploader < CarrierWave::Uploader::Base
46
- # def s3_headers
47
- # { "Expires" => 1.year.from_how.httpdate }
48
- # end
49
- # end
50
- #
51
46
  # You can change the generated url to a cnamed domain by setting the cnamed config:
52
47
  #
53
48
  # CarrierWave.configure do |config|
@@ -61,15 +56,16 @@ module CarrierWave
61
56
  #
62
57
  # instead of
63
58
  #
64
- # http://s3.amazonaws.com/bucketname.domain.tld/path/to/file
59
+ # http://bucketname.domain.tld.s3.amazonaws.com/path/to/file
65
60
  #
66
61
  class S3 < Abstract
67
62
 
68
63
  class File
69
64
 
70
- def initialize(uploader, path)
65
+ def initialize(uploader, base, path)
71
66
  @uploader = uploader
72
67
  @path = path
68
+ @base = base
73
69
  end
74
70
 
75
71
  ##
@@ -91,14 +87,16 @@ module CarrierWave
91
87
  # [String] contents of the file
92
88
  #
93
89
  def read
94
- AWS::S3::S3Object.value @path, @uploader.s3_bucket
90
+ result = connection.get(bucket, @path)
91
+ @headers = result[:headers]
92
+ result[:object]
95
93
  end
96
94
 
97
95
  ##
98
96
  # Remove the file from Amazon S3
99
97
  #
100
98
  def delete
101
- AWS::S3::S3Object.delete @path, @uploader.s3_bucket
99
+ connection.delete(bucket, @path)
102
100
  end
103
101
 
104
102
  ##
@@ -109,43 +107,58 @@ module CarrierWave
109
107
  # [String] file's url
110
108
  #
111
109
  def url
112
- if @uploader.s3_cnamed
113
- ["http://", @uploader.s3_bucket, "/", @path].compact.join
110
+ if @uploader.s3_cnamed
111
+ ["http://#{@uploader.s3_bucket}", @path].compact.join('/')
114
112
  else
115
- ["http://s3.amazonaws.com/", @uploader.s3_bucket, "/", @path].compact.join
113
+ ["http://#{@uploader.s3_bucket}.s3.amazonaws.com", @path].compact.join('/')
116
114
  end
117
115
  end
118
116
 
119
- def about
120
- s3_object.about
117
+ def store(file)
118
+ content_type ||= file.content_type # this might cause problems if content type changes between read and upload (unlikely)
119
+ connection.put(bucket, @path, file.read,
120
+ {
121
+ 'x-amz-acl' => access_policy,
122
+ 'content-type' => content_type
123
+ }.merge(@uploader.s3_headers)
124
+ )
121
125
  end
122
126
 
123
- def metadata
124
- s3_object.metadata
127
+ # The Amazon S3 Access policy ready to send in storage request headers.
128
+ def access_policy
129
+ return @access_policy unless @access_policy.blank?
130
+ if @uploader.s3_access_policy.blank?
131
+ if !@uploader.s3_access.blank?
132
+ @access_policy = @uploader.s3_access.to_s.gsub(/_/, '-')
133
+ else
134
+ @access_policy = 'public-read'
135
+ end
136
+ else
137
+ @access_policy = @uploader.s3_access_policy
138
+ end
125
139
  end
126
140
 
127
141
  def content_type
128
- s3_object.content_type
142
+ headers["content-type"]
129
143
  end
130
144
 
131
- def content_type=(new_content_type)
132
- s3_object.content_type = new_content_type
145
+ def content_type=(type)
146
+ headers["content-type"] = type
133
147
  end
134
148
 
135
- def content_disposition
136
- s3_object.content_disposition
149
+ # Headers returned from file retrieval
150
+ def headers
151
+ @headers ||= {}
137
152
  end
138
-
139
- def content_disposition=(new_disposition)
140
- s3_object.content_disposition = new_disposition
141
- end
142
-
143
- def store
144
- s3_object.store
153
+
154
+ private
155
+
156
+ def bucket
157
+ @uploader.s3_bucket
145
158
  end
146
159
 
147
- def s3_object
148
- @s3_object ||= AWS::S3::S3Object.find(@path, @uploader.s3_bucket)
160
+ def connection
161
+ @base.connection
149
162
  end
150
163
 
151
164
  end
@@ -155,42 +168,36 @@ module CarrierWave
155
168
  #
156
169
  # === Parameters
157
170
  #
158
- # [file (CarrierWave::Storage::S3::File)] the file to store
171
+ # [file (CarrierWave::SanitizedFile)] the file to store
159
172
  #
160
173
  # === Returns
161
174
  #
162
- # [CarrierWave::Storage::S3] the stored file
175
+ # [CarrierWave::Storage::RightS3::File] the stored file
163
176
  #
164
177
  def store!(file)
165
- connect!(uploader)
166
- s3_options = {:access => uploader.s3_access, :content_type => file.content_type}
167
- s3_options.merge!(uploader.s3_headers)
168
- AWS::S3::S3Object.store(uploader.store_path, file.read, uploader.s3_bucket, s3_options)
169
- CarrierWave::Storage::S3::File.new(uploader, uploader.store_path)
178
+ f = CarrierWave::Storage::S3::File.new(uploader, self, uploader.store_path)
179
+ f.store(file)
180
+ f
170
181
  end
171
182
 
172
183
  # Do something to retrieve the file
173
184
  #
174
- # @param [CarrierWave::Uploader] uploader an uploader object
175
185
  # @param [String] identifier uniquely identifies the file
176
186
  #
177
187
  # [identifier (String)] uniquely identifies the file
178
188
  #
179
189
  # === Returns
180
190
  #
181
- # [CarrierWave::Storage::S3::File] the stored file
191
+ # [CarrierWave::Storage::RightS3::File] the stored file
182
192
  #
183
193
  def retrieve!(identifier)
184
- connect!(uploader)
185
- CarrierWave::Storage::S3::File.new(uploader, uploader.store_path(identifier))
194
+ CarrierWave::Storage::S3::File.new(uploader, self, uploader.store_path(identifier))
186
195
  end
187
196
 
188
- private
189
-
190
- def connect!(uploader)
191
- AWS::S3::Base.establish_connection!(
192
- :access_key_id => uploader.s3_access_key_id,
193
- :secret_access_key => uploader.s3_secret_access_key
197
+ def connection
198
+ @connection ||= Aws::S3Interface.new(
199
+ uploader.s3_access_key_id, uploader.s3_secret_access_key,
200
+ :multi_thread => uploader.s3_multi_thread
194
201
  )
195
202
  end
196
203
 
@@ -61,9 +61,9 @@ module CarrierWave
61
61
  def matches?(actual)
62
62
  @actual = actual
63
63
  # Satisfy expectation here. Return false or raise an error if it's not met.
64
- img = ::Magick::Image.read(@actual.current_path).first
65
- @actual_width = img.columns
66
- @actual_height = img.rows
64
+ image = ImageLoader.load_image(@actual.current_path)
65
+ @actual_width = image.width
66
+ @actual_height = image.height
67
67
  @actual_width <= @width && @actual_height <= @height
68
68
  end
69
69
 
@@ -74,10 +74,10 @@ module CarrierWave
74
74
  def negative_failure_message
75
75
  "expected #{@actual.current_path.inspect} to be larger than #{@width} by #{@height}, but it wasn't."
76
76
  end
77
+
77
78
  end
78
79
 
79
80
  def be_no_larger_than(width, height)
80
- load_rmagick
81
81
  BeNoLargerThan.new(width, height)
82
82
  end
83
83
 
@@ -89,9 +89,9 @@ module CarrierWave
89
89
  def matches?(actual)
90
90
  @actual = actual
91
91
  # Satisfy expectation here. Return false or raise an error if it's not met.
92
- img = ::Magick::Image.read(@actual.current_path).first
93
- @actual_width = img.columns
94
- @actual_height = img.rows
92
+ image = ImageLoader.load_image(@actual.current_path)
93
+ @actual_width = image.width
94
+ @actual_height = image.height
95
95
  @actual_width == @width && @actual_height == @height
96
96
  end
97
97
 
@@ -102,27 +102,63 @@ module CarrierWave
102
102
  def negative_failure_message
103
103
  "expected #{@actual.current_path.inspect} not to have an exact size of #{@width} by #{@height}, but it did."
104
104
  end
105
+
105
106
  end
106
107
 
107
108
  def have_dimensions(width, height)
108
- load_rmagick
109
109
  HaveDimensions.new(width, height)
110
110
  end
111
111
 
112
- private
113
-
114
- def load_rmagick
115
- unless defined? Magick
116
- begin
117
- require 'rmagick'
118
- rescue LoadError
119
- require 'RMagick'
120
- rescue LoadError
121
- puts "WARNING: Failed to require rmagick, image processing may fail!"
112
+ class ImageLoader # :nodoc:
113
+ def self.load_image(filename)
114
+ if defined? MiniMagick
115
+ MiniMagickWrapper.new(filename)
116
+ else
117
+ unless defined? Magick
118
+ begin
119
+ require 'rmagick'
120
+ rescue LoadError
121
+ require 'RMagick'
122
+ rescue LoadError
123
+ puts "WARNING: Failed to require rmagick, image processing may fail!"
124
+ end
125
+ end
126
+ MagickWrapper.new(filename)
122
127
  end
123
128
  end
124
129
  end
125
-
126
- end # SpecHelper
130
+
131
+ class MagickWrapper # :nodoc:
132
+ attr_reader :image
133
+ def width
134
+ image.columns
135
+ end
136
+
137
+ def height
138
+ image.rows
139
+ end
140
+
141
+ def initialize(filename)
142
+ @image = ::Magick::Image.read(filename).first
143
+ end
144
+ end
145
+
146
+ class MiniMagickWrapper # :nodoc:
147
+ attr_reader :image
148
+ def width
149
+ image[:width]
150
+ end
151
+
152
+ def height
153
+ image[:height]
154
+ end
155
+
156
+ def initialize(filename)
157
+ @image = ::MiniMagick::Image.from_file(filename)
158
+ end
159
+ end
160
+
161
+ end # Matchers
127
162
  end # Test
128
- end # CarrierWave
163
+ end # CarrierWave
164
+
@@ -6,16 +6,18 @@ module CarrierWave
6
6
  add_config :root
7
7
  add_config :permissions
8
8
  add_config :storage_engines
9
- add_config :s3_access # for aws/s3
10
- add_config :s3_access_policy # for right_aws
9
+ add_config :s3_access # for old aws/s3
10
+ add_config :s3_access_policy # for aws
11
11
  add_config :s3_bucket
12
12
  add_config :s3_access_key_id
13
13
  add_config :s3_secret_access_key
14
14
  add_config :s3_cnamed
15
15
  add_config :s3_headers
16
+ add_config :s3_multi_thread
16
17
  add_config :cloud_files_username
17
18
  add_config :cloud_files_api_key
18
19
  add_config :cloud_files_container
20
+ add_config :cloud_files_cdn_host
19
21
  add_config :grid_fs_database
20
22
  add_config :grid_fs_host
21
23
  add_config :grid_fs_port
@@ -43,12 +45,13 @@ module CarrierWave
43
45
  :cloud_files => "CarrierWave::Storage::CloudFiles"
44
46
  }
45
47
  config.storage = :file
46
- config.s3_access = :public_read
47
- config.s3_access_policy = 'public-read'
48
+ #config.s3_access = :public_read
49
+ #config.s3_access_policy = 'public-read' # Now set in library
48
50
  config.s3_headers = {}
51
+ config.s3_multi_thread = true
49
52
  config.grid_fs_database = 'carrierwave'
50
53
  config.grid_fs_host = 'localhost'
51
- config.grid_fs_host = 27017
54
+ config.grid_fs_port = 27017
52
55
  config.store_dir = 'uploads'
53
56
  config.cache_dir = 'uploads/tmp'
54
57
  config.ignore_integrity_errors = true
@@ -8,6 +8,7 @@ module CarrierWave
8
8
 
9
9
  setup do
10
10
  after :cache, :process!
11
+ after :recreate_versions, :process!
11
12
  end
12
13
 
13
14
  module ClassMethods
@@ -24,8 +24,8 @@ module CarrierWave
24
24
  #
25
25
  # [String] A JSON serializtion containing this uploader's URL
26
26
  #
27
- def to_json
28
- { 'url' => url }.to_json
27
+ def to_json(*args)
28
+ { 'url' => url }.to_json(*args)
29
29
  end
30
30
 
31
31
  end # Url
@@ -108,6 +108,16 @@ module CarrierWave
108
108
  end
109
109
  end
110
110
 
111
+ ##
112
+ # Recreate versions and reprocess them. This can be used to recreate
113
+ # versions if their parameters somehow have changed.
114
+ #
115
+ def recreate_versions!
116
+ with_callbacks(:recreate_versions, file) do
117
+ versions.each { |name, v| v.store!(file) }
118
+ end
119
+ end
120
+
111
121
  private
112
122
 
113
123
  def full_filename(for_file)
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: carrierwave
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.5
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 4
8
+ - 6
9
+ version: 0.4.6
5
10
  platform: ruby
6
11
  authors:
7
12
  - Jonas Nicklas
@@ -9,205 +14,26 @@ autorequire:
9
14
  bindir: bin
10
15
  cert_chain: []
11
16
 
12
- date: 2010-02-20 00:00:00 +01:00
17
+ date: 2010-07-20 00:00:00 +02:00
13
18
  default_executable:
14
19
  dependencies:
15
20
  - !ruby/object:Gem::Dependency
16
- name: rubyforge
17
- type: :development
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
21
+ name: activesupport
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
20
25
  requirements:
21
26
  - - ">="
22
27
  - !ruby/object:Gem::Version
23
- version: 2.0.3
24
- version:
25
- - !ruby/object:Gem::Dependency
26
- name: gemcutter
27
- type: :development
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: 0.3.0
34
- version:
35
- - !ruby/object:Gem::Dependency
36
- name: newgem
37
- type: :development
38
- version_requirement:
39
- version_requirements: !ruby/object:Gem::Requirement
40
- requirements:
41
- - - ">="
42
- - !ruby/object:Gem::Version
43
- version: 1.5.2
44
- version:
45
- - !ruby/object:Gem::Dependency
46
- name: rspec
47
- type: :development
48
- version_requirement:
49
- version_requirements: !ruby/object:Gem::Requirement
50
- requirements:
51
- - - ">="
52
- - !ruby/object:Gem::Version
53
- version: 1.2.8
54
- version:
55
- - !ruby/object:Gem::Dependency
56
- name: cucumber
57
- type: :development
58
- version_requirement:
59
- version_requirements: !ruby/object:Gem::Requirement
60
- requirements:
61
- - - ">="
62
- - !ruby/object:Gem::Version
63
- version: 0.3.96
64
- version:
65
- - !ruby/object:Gem::Dependency
66
- name: activerecord
67
- type: :development
68
- version_requirement:
69
- version_requirements: !ruby/object:Gem::Requirement
70
- requirements:
71
- - - ">="
72
- - !ruby/object:Gem::Version
73
- version: 2.3.3
74
- version:
75
- - !ruby/object:Gem::Dependency
76
- name: sqlite3-ruby
77
- type: :development
78
- version_requirement:
79
- version_requirements: !ruby/object:Gem::Requirement
80
- requirements:
81
- - - ">="
82
- - !ruby/object:Gem::Version
83
- version: 1.2.5
84
- version:
85
- - !ruby/object:Gem::Dependency
86
- name: dm-core
87
- type: :development
88
- version_requirement:
89
- version_requirements: !ruby/object:Gem::Requirement
90
- requirements:
91
- - - ">="
92
- - !ruby/object:Gem::Version
93
- version: 0.9.11
94
- version:
95
- - !ruby/object:Gem::Dependency
96
- name: data_objects
97
- type: :development
98
- version_requirement:
99
- version_requirements: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - ">="
102
- - !ruby/object:Gem::Version
103
- version: 0.9.12
104
- version:
105
- - !ruby/object:Gem::Dependency
106
- name: do_sqlite3
107
- type: :development
108
- version_requirement:
109
- version_requirements: !ruby/object:Gem::Requirement
110
- requirements:
111
- - - ">="
112
- - !ruby/object:Gem::Version
113
- version: 0.9.11
114
- version:
115
- - !ruby/object:Gem::Dependency
116
- name: sequel
117
- type: :development
118
- version_requirement:
119
- version_requirements: !ruby/object:Gem::Requirement
120
- requirements:
121
- - - ">="
122
- - !ruby/object:Gem::Version
123
- version: 3.2.0
124
- version:
125
- - !ruby/object:Gem::Dependency
126
- name: rmagick
127
- type: :development
128
- version_requirement:
129
- version_requirements: !ruby/object:Gem::Requirement
130
- requirements:
131
- - - ">="
132
- - !ruby/object:Gem::Version
133
- version: 2.10.0
134
- version:
135
- - !ruby/object:Gem::Dependency
136
- name: mini_magick
137
- type: :development
138
- version_requirement:
139
- version_requirements: !ruby/object:Gem::Requirement
140
- requirements:
141
- - - ">="
142
- - !ruby/object:Gem::Version
143
- version: 1.2.5
144
- version:
145
- - !ruby/object:Gem::Dependency
146
- name: mongo_mapper
147
- type: :development
148
- version_requirement:
149
- version_requirements: !ruby/object:Gem::Requirement
150
- requirements:
151
- - - ">="
152
- - !ruby/object:Gem::Version
153
- version: 0.6.8
154
- version:
155
- - !ruby/object:Gem::Dependency
156
- name: mongoid
157
- type: :development
158
- version_requirement:
159
- version_requirements: !ruby/object:Gem::Requirement
160
- requirements:
161
- - - ">="
162
- - !ruby/object:Gem::Version
163
- version: 0.10.4
164
- version:
165
- - !ruby/object:Gem::Dependency
166
- name: aws-s3
167
- type: :development
168
- version_requirement:
169
- version_requirements: !ruby/object:Gem::Requirement
170
- requirements:
171
- - - ">="
172
- - !ruby/object:Gem::Version
173
- version: 0.6.2
174
- version:
175
- - !ruby/object:Gem::Dependency
176
- name: timecop
177
- type: :development
178
- version_requirement:
179
- version_requirements: !ruby/object:Gem::Requirement
180
- requirements:
181
- - - ">="
182
- - !ruby/object:Gem::Version
183
- version: 0.3.4
184
- version:
185
- - !ruby/object:Gem::Dependency
186
- name: json
187
- type: :development
188
- version_requirement:
189
- version_requirements: !ruby/object:Gem::Requirement
190
- requirements:
191
- - - ">="
192
- - !ruby/object:Gem::Version
193
- version: 1.1.9
194
- version:
195
- - !ruby/object:Gem::Dependency
196
- name: hoe
197
- type: :development
198
- version_requirement:
199
- version_requirements: !ruby/object:Gem::Requirement
200
- requirements:
201
- - - ">="
202
- - !ruby/object:Gem::Version
203
- version: 2.5.0
204
- version:
205
- description: |-
206
- * RDoc Documentation {available at Rubyforge}[http://carrierwave.rubyforge.org/rdoc].
207
- * Source code {hosted at GitHub}[http://github.com/jnicklas/carrierwave]
208
- * Please {report any issues}[http://github.com/jnicklas/carrierwave/issues] on GitHub
209
- * Please direct any questions at the {mailing list}[http://groups.google.com/group/carrierwave]
210
- * Check out the {example app}[http://github.com/jnicklas/carrierwave-example-app]
28
+ segments:
29
+ - 3
30
+ - 0
31
+ - 0
32
+ - beta4
33
+ version: 3.0.0.beta4
34
+ type: :runtime
35
+ version_requirements: *id001
36
+ description: Upload files in your Ruby applications, map them to a range of ORMs, store them on different backends.
211
37
  email:
212
38
  - jonas.nicklas@gmail.com
213
39
  executables: []
@@ -215,46 +41,8 @@ executables: []
215
41
  extensions: []
216
42
 
217
43
  extra_rdoc_files:
218
- - History.txt
219
- - Manifest.txt
220
- - features/fixtures/bork.txt
221
- - features/fixtures/monkey.txt
222
44
  - README.rdoc
223
45
  files:
224
- - Generators
225
- - History.txt
226
- - Manifest.txt
227
- - README.rdoc
228
- - Rakefile
229
- - carrierwave.gemspec
230
- - cucumber.yml
231
- - features/caching.feature
232
- - features/download.feature
233
- - features/file_storage.feature
234
- - features/file_storage_overridden_filename.feature
235
- - features/file_storage_overridden_store_dir.feature
236
- - features/file_storage_reversing_processor.feature
237
- - features/fixtures/bork.txt
238
- - features/fixtures/monkey.txt
239
- - features/grid_fs_storage.feature
240
- - features/mount_activerecord.feature
241
- - features/mount_datamapper.feature
242
- - features/step_definitions/activerecord_steps.rb
243
- - features/step_definitions/caching_steps.rb
244
- - features/step_definitions/datamapper_steps.rb
245
- - features/step_definitions/download_steps.rb
246
- - features/step_definitions/file_steps.rb
247
- - features/step_definitions/general_steps.rb
248
- - features/step_definitions/mount_steps.rb
249
- - features/step_definitions/store_steps.rb
250
- - features/support/activerecord.rb
251
- - features/support/datamapper.rb
252
- - features/support/env.rb
253
- - features/versions_basics.feature
254
- - features/versions_nested_versions.feature
255
- - features/versions_overridden_filename.feature
256
- - features/versions_overriden_store_dir.feature
257
- - lib/carrierwave.rb
258
46
  - lib/carrierwave/compatibility/paperclip.rb
259
47
  - lib/carrierwave/core_ext/blank.rb
260
48
  - lib/carrierwave/core_ext/file.rb
@@ -264,7 +52,6 @@ files:
264
52
  - lib/carrierwave/orm/activerecord.rb
265
53
  - lib/carrierwave/orm/datamapper.rb
266
54
  - lib/carrierwave/orm/mongoid.rb
267
- - lib/carrierwave/orm/mongomapper.rb
268
55
  - lib/carrierwave/orm/sequel.rb
269
56
  - lib/carrierwave/processing/image_science.rb
270
57
  - lib/carrierwave/processing/mini_magick.rb
@@ -277,7 +64,6 @@ files:
277
64
  - lib/carrierwave/storage/right_s3.rb
278
65
  - lib/carrierwave/storage/s3.rb
279
66
  - lib/carrierwave/test/matchers.rb
280
- - lib/carrierwave/uploader.rb
281
67
  - lib/carrierwave/uploader/cache.rb
282
68
  - lib/carrierwave/uploader/callbacks.rb
283
69
  - lib/carrierwave/uploader/configuration.rb
@@ -291,47 +77,9 @@ files:
291
77
  - lib/carrierwave/uploader/store.rb
292
78
  - lib/carrierwave/uploader/url.rb
293
79
  - lib/carrierwave/uploader/versions.rb
294
- - merb_generators/uploader_generator.rb
295
- - rails_generators/uploader/USAGE
296
- - rails_generators/uploader/templates/uploader.rb
297
- - rails_generators/uploader/uploader_generator.rb
298
- - script/console
299
- - script/destroy
300
- - script/generate
301
- - spec/compatibility/paperclip_spec.rb
302
- - spec/fixtures/bork.txt
303
- - spec/fixtures/landscape.jpg
304
- - spec/fixtures/portrait.jpg
305
- - spec/fixtures/test.jpeg
306
- - spec/fixtures/test.jpg
307
- - spec/mount_spec.rb
308
- - spec/orm/activerecord_spec.rb
309
- - spec/orm/datamapper_spec.rb
310
- - spec/orm/mongoid_spec.rb
311
- - spec/orm/mongomapper_spec.rb
312
- - spec/orm/sequel_spec.rb
313
- - spec/processing/image_science_spec.rb
314
- - spec/processing/mini_magick_spec.rb
315
- - spec/processing/rmagick_spec.rb
316
- - spec/sanitized_file_spec.rb
317
- - spec/spec_helper.rb
318
- - spec/storage/cloudfiles_spec.rb
319
- - spec/storage/grid_fs_spec.rb
320
- - spec/storage/right_s3_spec.rb
321
- - spec/storage/s3_spec.rb
322
- - spec/uploader/cache_spec.rb
323
- - spec/uploader/configuration_spec.rb
324
- - spec/uploader/default_url_spec.rb
325
- - spec/uploader/download_spec.rb
326
- - spec/uploader/extension_whitelist_spec.rb
327
- - spec/uploader/mountable_spec.rb
328
- - spec/uploader/paths_spec.rb
329
- - spec/uploader/processing_spec.rb
330
- - spec/uploader/proxy_spec.rb
331
- - spec/uploader/remove_spec.rb
332
- - spec/uploader/store_spec.rb
333
- - spec/uploader/url_spec.rb
334
- - spec/uploader/versions_spec.rb
80
+ - lib/carrierwave/uploader.rb
81
+ - lib/carrierwave.rb
82
+ - README.rdoc
335
83
  has_rdoc: true
336
84
  homepage: http://carrierwave.rubyforge.org
337
85
  licenses: []
@@ -343,23 +91,27 @@ rdoc_options:
343
91
  require_paths:
344
92
  - lib
345
93
  required_ruby_version: !ruby/object:Gem::Requirement
94
+ none: false
346
95
  requirements:
347
96
  - - ">="
348
97
  - !ruby/object:Gem::Version
98
+ segments:
99
+ - 0
349
100
  version: "0"
350
- version:
351
101
  required_rubygems_version: !ruby/object:Gem::Requirement
102
+ none: false
352
103
  requirements:
353
104
  - - ">="
354
105
  - !ruby/object:Gem::Version
106
+ segments:
107
+ - 0
355
108
  version: "0"
356
- version:
357
109
  requirements: []
358
110
 
359
111
  rubyforge_project: carrierwave
360
- rubygems_version: 1.3.5
112
+ rubygems_version: 1.3.7
361
113
  signing_key:
362
114
  specification_version: 3
363
- summary: "* RDoc Documentation {available at Rubyforge}[http://carrierwave.rubyforge.org/rdoc]"
115
+ summary: Ruby file upload library
364
116
  test_files: []
365
117