rails_uploads 0.2.9 → 0.3.0

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 (172) hide show
  1. checksums.yaml +7 -0
  2. metadata +19 -371
  3. data/MIT-LICENSE +0 -20
  4. data/README.rdoc +0 -108
  5. data/Rakefile +0 -40
  6. data/app/controllers/rails_uploads/presets_controller.rb +0 -17
  7. data/config/locales/en.yml +0 -8
  8. data/config/locales/es.yml +0 -8
  9. data/config/routes.rb +0 -5
  10. data/lib/generators/uploads/s3/config_generator.rb +0 -13
  11. data/lib/generators/uploads/s3/templates/s3.yml +0 -16
  12. data/lib/rails_uploads.rb +0 -16
  13. data/lib/rails_uploads/active_record/base.rb +0 -139
  14. data/lib/rails_uploads/engine.rb +0 -7
  15. data/lib/rails_uploads/magick/image.rb +0 -83
  16. data/lib/rails_uploads/railtie.rb +0 -20
  17. data/lib/rails_uploads/storages/local.rb +0 -57
  18. data/lib/rails_uploads/storages/s3.rb +0 -68
  19. data/lib/rails_uploads/types/file.rb +0 -115
  20. data/lib/rails_uploads/types/image.rb +0 -45
  21. data/lib/rails_uploads/validators/attachment_content_type_validator.rb +0 -11
  22. data/lib/rails_uploads/validators/attachment_presence_validator.rb +0 -9
  23. data/lib/rails_uploads/validators/attachment_size_validator.rb +0 -27
  24. data/lib/rails_uploads/validators/base.rb +0 -13
  25. data/lib/rails_uploads/version.rb +0 -5
  26. data/lib/tasks/rails_uploads_tasks.rake +0 -89
  27. data/test/dummy/README.rdoc +0 -261
  28. data/test/dummy/Rakefile +0 -7
  29. data/test/dummy/app/assets/images/image.jpg +0 -0
  30. data/test/dummy/app/assets/javascripts/application.js +0 -15
  31. data/test/dummy/app/assets/stylesheets/application.css +0 -13
  32. data/test/dummy/app/controllers/application_controller.rb +0 -3
  33. data/test/dummy/app/helpers/application_helper.rb +0 -2
  34. data/test/dummy/app/models/file_upload.rb +0 -4
  35. data/test/dummy/app/models/image_upload.rb +0 -4
  36. data/test/dummy/app/models/validation_upload.rb +0 -17
  37. data/test/dummy/app/views/layouts/application.html.erb +0 -14
  38. data/test/dummy/config.ru +0 -4
  39. data/test/dummy/config/application.rb +0 -65
  40. data/test/dummy/config/boot.rb +0 -10
  41. data/test/dummy/config/database.yml +0 -25
  42. data/test/dummy/config/environment.rb +0 -5
  43. data/test/dummy/config/environments/development.rb +0 -37
  44. data/test/dummy/config/environments/production.rb +0 -67
  45. data/test/dummy/config/environments/test.rb +0 -37
  46. data/test/dummy/config/initializers/backtrace_silencers.rb +0 -7
  47. data/test/dummy/config/initializers/inflections.rb +0 -15
  48. data/test/dummy/config/initializers/mime_types.rb +0 -5
  49. data/test/dummy/config/initializers/secret_token.rb +0 -7
  50. data/test/dummy/config/initializers/session_store.rb +0 -8
  51. data/test/dummy/config/initializers/wrap_parameters.rb +0 -14
  52. data/test/dummy/config/locales/en.yml +0 -5
  53. data/test/dummy/config/routes.rb +0 -5
  54. data/test/dummy/config/s3.yml +0 -15
  55. data/test/dummy/db/development.sqlite3 +0 -0
  56. data/test/dummy/db/migrate/20130108201834_create_file_uploads.rb +0 -10
  57. data/test/dummy/db/migrate/20130110194721_create_validation_uploads.rb +0 -19
  58. data/test/dummy/db/migrate/20130124013431_create_image_uploads.rb +0 -10
  59. data/test/dummy/db/schema.rb +0 -43
  60. data/test/dummy/db/test.sqlite3 +0 -0
  61. data/test/dummy/log/development.log +0 -23
  62. data/test/dummy/log/test.log +0 -25090
  63. data/test/dummy/public/404.html +0 -26
  64. data/test/dummy/public/422.html +0 -26
  65. data/test/dummy/public/500.html +0 -25
  66. data/test/dummy/public/favicon.ico +0 -0
  67. data/test/dummy/public/uploads/files/file.txt +0 -1
  68. data/test/dummy/public/uploads/images/big/image.jpg +0 -0
  69. data/test/dummy/public/uploads/images/original/image.jpg +0 -0
  70. data/test/dummy/public/uploads/images/small/image.jpg +0 -0
  71. data/test/dummy/script/rails +0 -6
  72. data/test/dummy/test/fixtures/file.txt +0 -1
  73. data/test/dummy/test/fixtures/file_big.txt +0 -1
  74. data/test/dummy/test/fixtures/file_empty.txt +0 -1
  75. data/test/dummy/test/fixtures/image.jpg +0 -0
  76. data/test/dummy/test/fixtures/image_big.jpg +0 -0
  77. data/test/dummy/test/fixtures/image_empty.jpg +0 -0
  78. data/test/dummy/tmp/uploads/files/13687482983108968.jpg +0 -0
  79. data/test/dummy/tmp/uploads/files/13687483348482658.jpg +0 -0
  80. data/test/dummy/tmp/uploads/files/13687483563901100.jpg +0 -0
  81. data/test/dummy/tmp/uploads/files/13687484108914220.jpg +0 -0
  82. data/test/dummy/tmp/uploads/files/13687489381697390.jpg +0 -0
  83. data/test/dummy/tmp/uploads/files/13687490968011022.jpg +0 -0
  84. data/test/dummy/tmp/uploads/files/13687491524768450.jpg +0 -0
  85. data/test/dummy/tmp/uploads/files/13687494425396302.jpg +0 -0
  86. data/test/dummy/tmp/uploads/files/13687513450654020.jpg +0 -0
  87. data/test/dummy/tmp/uploads/files/13687514839373922.txt +0 -1
  88. data/test/dummy/tmp/uploads/files/13688181722986792.jpg +0 -0
  89. data/test/dummy/tmp/uploads/files/13688181729459798.jpg +0 -0
  90. data/test/dummy/tmp/uploads/images/big/13687484103672162.jpg +0 -0
  91. data/test/dummy/tmp/uploads/images/big/13687484106303082.jpg +0 -0
  92. data/test/dummy/tmp/uploads/images/big/13687489377129980.jpg +0 -0
  93. data/test/dummy/tmp/uploads/images/big/13687489379459820.jpg +0 -0
  94. data/test/dummy/tmp/uploads/images/big/13687490965463210.jpg +0 -0
  95. data/test/dummy/tmp/uploads/images/big/13687491522552230.jpg +0 -0
  96. data/test/dummy/tmp/uploads/images/big/13688181724596422.jpg +0 -0
  97. data/test/dummy/tmp/uploads/images/big/13688181727051510.jpg +0 -0
  98. data/test/dummy/tmp/uploads/images/big/13688259257147068.jpg +0 -0
  99. data/test/dummy/tmp/uploads/images/big/13688280071286788.jpg +0 -0
  100. data/test/dummy/tmp/uploads/images/big/13688281527981960.jpg +0 -0
  101. data/test/dummy/tmp/uploads/images/big/13688360981527310.jpg +0 -0
  102. data/test/dummy/tmp/uploads/images/big/13688360983686640.jpg +0 -0
  103. data/test/dummy/tmp/uploads/images/big/13688977138132322.jpg +0 -0
  104. data/test/dummy/tmp/uploads/images/big/13688977290079510.jpg +0 -0
  105. data/test/dummy/tmp/uploads/images/big/13688978966174670.jpg +0 -0
  106. data/test/dummy/tmp/uploads/images/original/13687482977916958.jpg +0 -0
  107. data/test/dummy/tmp/uploads/images/original/13687482979328390.jpg +0 -0
  108. data/test/dummy/tmp/uploads/images/original/13687482981277580.jpg +0 -0
  109. data/test/dummy/tmp/uploads/images/original/13687483343313990.jpg +0 -0
  110. data/test/dummy/tmp/uploads/images/original/13687483344710930.jpg +0 -0
  111. data/test/dummy/tmp/uploads/images/original/13687483346647770.jpg +0 -0
  112. data/test/dummy/tmp/uploads/images/original/13687483558679350.jpg +0 -0
  113. data/test/dummy/tmp/uploads/images/original/13687483560070410.jpg +0 -0
  114. data/test/dummy/tmp/uploads/images/original/13687483562001660.jpg +0 -0
  115. data/test/dummy/tmp/uploads/images/original/13687484103672162.jpg +0 -0
  116. data/test/dummy/tmp/uploads/images/original/13687484106303082.jpg +0 -0
  117. data/test/dummy/tmp/uploads/images/original/13687489377129980.jpg +0 -0
  118. data/test/dummy/tmp/uploads/images/original/13687489379459820.jpg +0 -0
  119. data/test/dummy/tmp/uploads/images/original/13687490965463210.jpg +0 -0
  120. data/test/dummy/tmp/uploads/images/original/13687491522552230.jpg +0 -0
  121. data/test/dummy/tmp/uploads/images/original/13688181723027610.jpg +0 -0
  122. data/test/dummy/tmp/uploads/images/original/13688181724596422.jpg +0 -0
  123. data/test/dummy/tmp/uploads/images/original/13688181727051510.jpg +0 -0
  124. data/test/dummy/tmp/uploads/images/original/13688259257147068.jpg +0 -0
  125. data/test/dummy/tmp/uploads/images/original/13688280071286788.jpg +0 -0
  126. data/test/dummy/tmp/uploads/images/original/13688281527981960.jpg +0 -0
  127. data/test/dummy/tmp/uploads/images/original/13688360981527310.jpg +0 -0
  128. data/test/dummy/tmp/uploads/images/original/13688360983686640.jpg +0 -0
  129. data/test/dummy/tmp/uploads/images/original/13688977138132322.jpg +0 -0
  130. data/test/dummy/tmp/uploads/images/original/13688977290079510.jpg +0 -0
  131. data/test/dummy/tmp/uploads/images/original/13688978966174670.jpg +0 -0
  132. data/test/dummy/tmp/uploads/images/small/13687484103672162.jpg +0 -0
  133. data/test/dummy/tmp/uploads/images/small/13687484106303082.jpg +0 -0
  134. data/test/dummy/tmp/uploads/images/small/13687489377129980.jpg +0 -0
  135. data/test/dummy/tmp/uploads/images/small/13687489379459820.jpg +0 -0
  136. data/test/dummy/tmp/uploads/images/small/13687490965463210.jpg +0 -0
  137. data/test/dummy/tmp/uploads/images/small/13687491522552230.jpg +0 -0
  138. data/test/dummy/tmp/uploads/images/small/13688181723027610.jpg +0 -0
  139. data/test/dummy/tmp/uploads/images/small/13688181724596422.jpg +0 -0
  140. data/test/dummy/tmp/uploads/images/small/13688181727051510.jpg +0 -0
  141. data/test/dummy/tmp/uploads/images/small/13688259257147068.jpg +0 -0
  142. data/test/dummy/tmp/uploads/images/small/13688280071286788.jpg +0 -0
  143. data/test/dummy/tmp/uploads/images/small/13688281527981960.jpg +0 -0
  144. data/test/dummy/tmp/uploads/images/small/13688360981527310.jpg +0 -0
  145. data/test/dummy/tmp/uploads/images/small/13688360983686640.jpg +0 -0
  146. data/test/dummy/tmp/uploads/images/small/13688977138132322.jpg +0 -0
  147. data/test/dummy/tmp/uploads/images/small/13688977290079510.jpg +0 -0
  148. data/test/dummy/tmp/uploads/images/small/13688978966174670.jpg +0 -0
  149. data/test/fixtures/file.txt +0 -1
  150. data/test/fixtures/file_big.txt +0 -1
  151. data/test/fixtures/file_empty.txt +0 -1
  152. data/test/fixtures/image.jpg +0 -0
  153. data/test/fixtures/image_big.jpg +0 -0
  154. data/test/fixtures/image_empty.jpg +0 -0
  155. data/test/integration/local_generate_test.rb +0 -25
  156. data/test/test_helper.rb +0 -50
  157. data/test/unit/local_file_record_test.rb +0 -20
  158. data/test/unit/local_file_string_test.rb +0 -23
  159. data/test/unit/local_file_upload_test.rb +0 -30
  160. data/test/unit/local_image_record_test.rb +0 -25
  161. data/test/unit/local_image_string_test.rb +0 -34
  162. data/test/unit/local_image_upload_test.rb +0 -27
  163. data/test/unit/local_records_test.rb +0 -52
  164. data/test/unit/local_validators_test.rb +0 -71
  165. data/test/unit/s3_file_record_tes.rb +0 -21
  166. data/test/unit/s3_file_string_tes.rb +0 -24
  167. data/test/unit/s3_file_upload_tes.rb +0 -31
  168. data/test/unit/s3_image_record_tes.rb +0 -26
  169. data/test/unit/s3_image_string_tes.rb +0 -31
  170. data/test/unit/s3_image_upload_tes.rb +0 -28
  171. data/test/unit/s3_records_tes.rb +0 -56
  172. data/test/unit/s3_validators_tes.rb +0 -71
@@ -1,20 +0,0 @@
1
- module RailsUploads
2
- class Railtie < Rails::Railtie
3
-
4
- config.uploads = ActiveSupport::OrderedOptions.new
5
- config.uploads.presets = {}
6
- config.uploads.default_presets = []
7
- config.uploads.default_validations = {}
8
- config.uploads.base_url = ''
9
- config.uploads.storage = :local
10
-
11
- initializer 'rails_uploads' do
12
- ::ActiveRecord::Base.send :include, RailsUploads::ActiveRecord::Base
13
- if config.uploads.storage == :s3
14
- require 'aws-sdk'
15
- RailsUploads::Storages::S3.config = YAML.load_file(Rails.root.join('config', 's3.yml'))
16
- end
17
- end
18
-
19
- end
20
- end
@@ -1,57 +0,0 @@
1
- module RailsUploads
2
- module Storages
3
- class Local
4
-
5
- def initialize(default)
6
- @tmp = (Rails.env == 'test' and not default)
7
- end
8
-
9
- def exists?(path)
10
- ::File.exists? realpath(path)
11
- end
12
-
13
- def size(path)
14
- ::File.size realpath(path)
15
- end
16
-
17
- def url(path)
18
- ::File.join Rails.application.config.uploads.base_url, path
19
- end
20
-
21
- def store(upload, path)
22
- create_dir realpath(path)
23
- upload.rewind # Hack to avoid empty files
24
- ::File.open(realpath(path), 'wb') do |file|
25
- while chunk = upload.read(16 * 1024)
26
- file.write(chunk)
27
- end
28
- end
29
- end
30
-
31
- def delete(path)
32
- ::File.delete realpath(path)
33
- end
34
-
35
- def magick(source, output, upload)
36
- create_dir realpath(output)
37
- yield RailsUploads::Magick::Image.new(realpath(source), realpath(output))
38
- end
39
-
40
- protected
41
-
42
- def realpath(path)
43
- base_path.join path
44
- end
45
-
46
- def base_path
47
- Rails.root.join @tmp ? 'tmp' : 'public'
48
- end
49
-
50
- def create_dir(path)
51
- dir = base_path.join('uploads', path).dirname
52
- FileUtils.mkdir_p dir unless ::File.directory? dir
53
- end
54
-
55
- end
56
- end
57
- end
@@ -1,68 +0,0 @@
1
- module RailsUploads
2
- module Storages
3
- class S3
4
-
5
- cattr_accessor :config
6
-
7
- def initialize(default)
8
- if (Rails.env == 'test' and not default)
9
- env = 'test'
10
- elsif default
11
- env = 'production'
12
- else
13
- env = Rails.env
14
- end
15
- config = self.class.config[env]
16
- AWS.config access_key_id: config['access_key_id'], secret_access_key: config['secret_access_key']
17
- @bucket = AWS::S3.new.buckets[config['bucket']]
18
- @tmp = {}
19
- end
20
-
21
- def exists?(path)
22
- object(path).exists?
23
- end
24
-
25
- def size(path)
26
- object(path).content_length
27
- end
28
-
29
- def url(path)
30
- base_url = Rails.application.config.uploads.base_url
31
- base_url.present? ? ::File.join(base_url, path) : object(path).public_url(secure: false)
32
- end
33
-
34
- def store(upload, path)
35
- @bucket.objects.create(path, Pathname.new(upload.path)).acl = :public_read
36
- end
37
-
38
- def delete(path)
39
- object(path).delete
40
- end
41
-
42
- def magick(source, output, upload)
43
- if @tmp[source].blank?
44
- if upload.present?
45
- @tmp[source] = upload.path
46
- else
47
- remote = Tempfile.new('s3')
48
- remote.binmode
49
- object(source).read { |chunk| remote.write(chunk) }
50
- remote.close
51
- remote.open
52
- @tmp[source] = remote.path
53
- end
54
- end
55
- tmp = Tempfile.new('s3')
56
- yield RailsUploads::Magick::Image.new(@tmp[source], tmp.path)
57
- store tmp, output
58
- end
59
-
60
- protected
61
-
62
- def object(path)
63
- @bucket.objects[path]
64
- end
65
-
66
- end
67
- end
68
- end
@@ -1,115 +0,0 @@
1
- module RailsUploads
2
- module Types
3
- class File
4
-
5
- def initialize(source, options={})
6
- if source.is_a? ActionDispatch::Http::UploadedFile or source.is_a? Rack::Test::UploadedFile
7
- @upload = source
8
- @stored = false
9
- @default = false
10
- @storage = build_storage(:local)
11
- elsif source.is_a? String
12
- @upload = false
13
- @filename = source
14
- @stored = true
15
- @default = false
16
- @storage = build_storage
17
- elsif options.has_key? :default
18
- @upload = false
19
- @filename = options[:default]
20
- @stored = true
21
- @default = true
22
- @storage = build_storage
23
- end
24
- @deleted = false
25
- @options = options
26
- end
27
-
28
- def is_default?
29
- @default
30
- end
31
-
32
- def is_stored?
33
- @stored
34
- end
35
-
36
- def is_deleted?
37
- @deleted
38
- end
39
-
40
- def exists?(*args)
41
- return false if is_deleted?
42
- storage.exists? path(*args)
43
- end
44
-
45
- def size(*args)
46
- return 0 if is_deleted?
47
- storage.size path(*args)
48
- end
49
-
50
- def extname
51
- return nil if is_deleted?
52
- @extname ||= ::File.extname(filename)
53
- end
54
-
55
- def filename
56
- return nil if is_deleted?
57
- @filename ||= "#{(Time.now.to_f * 10000000).to_i}#{::File.extname @upload.original_filename}".downcase
58
- end
59
-
60
- def path(*args)
61
- return nil if is_deleted?
62
- is_stored? ? destination_path(*args) : @upload.path
63
- end
64
-
65
- def url(*args)
66
- return nil if is_deleted? or not is_stored?
67
- storage.url path(*args)
68
- end
69
-
70
- def store
71
- if not is_stored? and is_upload?
72
- @storage = build_storage
73
- storage.store @upload, destination_path
74
- yield if block_given?
75
- @stored = true
76
- @deleted = false
77
- end
78
- end
79
-
80
- def delete
81
- if not is_default? and is_stored? and exists?
82
- storage.delete path
83
- yield if block_given?
84
- @storage = build_storage(:local) if @upload.present?
85
- @stored = false
86
- @deleted = true
87
- end
88
- end
89
-
90
- protected
91
-
92
- def build_storage(type=nil)
93
- type = (type or Rails.application.config.uploads.storage)
94
- RailsUploads::Storages.const_get(type.to_s.classify).new(is_default?)
95
- end
96
-
97
- def storage
98
- @storage
99
- end
100
-
101
- def is_upload?
102
- @upload != false
103
- end
104
-
105
- def destination_path(*args)
106
- ::File.join 'uploads', store_path(*args), filename
107
- end
108
-
109
- def store_path(*args)
110
- 'files'
111
- end
112
-
113
- end
114
- end
115
- end
@@ -1,45 +0,0 @@
1
- module RailsUploads
2
- module Types
3
- class Image < File
4
-
5
- def presets
6
- Rails.application.config.uploads.default_presets | (@options[:presets] or [])
7
- end
8
-
9
- def store
10
- super { presets.each { |name| generate_preset name } if presets.any? }
11
- end
12
-
13
- def delete
14
- super { presets.each { |name| storage.delete path(name) if exists?(name) } if presets.any? }
15
- end
16
-
17
- def generate_preset(name)
18
- storage.magick destination_path, destination_path(name), @upload do |image|
19
- settings = Rails.application.config.uploads.presets[name]
20
- if settings.is_a? Proc
21
- settings.call image
22
- else
23
- case settings[:method]
24
- when :fit
25
- image.resize_to_fit settings[:width], settings[:height]
26
- else
27
- image.resize_to_fill settings[:width], settings[:height]
28
- end
29
- end
30
- end
31
- end
32
-
33
- def delete_preset(name)
34
- storage.delete path(name)
35
- end
36
-
37
- protected
38
-
39
- def store_path(*args)
40
- ::File.join('images', (args[0] ? args[0].to_s.gsub('_', '-') : 'original'))
41
- end
42
-
43
- end
44
- end
45
- end
@@ -1,11 +0,0 @@
1
- class AttachmentContentTypeValidator < RailsUploads::Validators::Base
2
-
3
- def validate_each(record, attribute, value)
4
- if value.present? and not value.is_default?
5
- unless options[:in].include? value.extname.from(1)
6
- add_error record, attribute, 'errors.messages.attachment_content_type', types: options[:in].to_sentence
7
- end
8
- end
9
- end
10
-
11
- end
@@ -1,9 +0,0 @@
1
- class AttachmentPresenceValidator < RailsUploads::Validators::Base
2
-
3
- def validate_each(record, attribute, value)
4
- unless value.present? and value.exists? and not value.is_default?
5
- add_error record, attribute, 'errors.messages.attachment_presence'
6
- end
7
- end
8
-
9
- end
@@ -1,27 +0,0 @@
1
- class AttachmentSizeValidator < RailsUploads::Validators::Base
2
- include ActionView::Helpers::NumberHelper
3
-
4
- def validate_each(record, attribute, value)
5
- if value.present? and not value.is_default?
6
- if options.has_key? :in
7
- unless options[:in].include? value.size
8
- add_error record, attribute, 'attachment_size_in', min: number_to_human_size(options[:in].begin), max: number_to_human_size(options[:in].end)
9
- end
10
- else
11
- if options.has_key? :less_than and value.size > options[:less_than]
12
- add_error record, attribute, 'attachment_size_less_than', count: number_to_human_size(options[:less_than])
13
- end
14
- if options.has_key? :greater_than and value.size < options[:greater_than]
15
- add_error record, attribute, 'attachment_size_greater_than', count: number_to_human_size(options[:greater_than])
16
- end
17
- end
18
- end
19
- end
20
-
21
- protected
22
-
23
- def add_error(record, attribute, type, options)
24
- super(record, attribute, "errors.messages.#{type}", options)
25
- end
26
-
27
- end
@@ -1,13 +0,0 @@
1
- module RailsUploads
2
- module Validators
3
- class Base < ActiveModel::EachValidator
4
-
5
- protected
6
-
7
- def add_error(record, attribute, type, options={})
8
- record.errors[attribute] << (options[:message] || I18n.t(type, options))
9
- end
10
-
11
- end
12
- end
13
- end
@@ -1,5 +0,0 @@
1
- module RailsUploads
2
-
3
- VERSION = '0.2.9'
4
-
5
- end
@@ -1,89 +0,0 @@
1
-
2
- module RailsUploads
3
- module Task
4
-
5
- def self.iterate_images
6
- model = ENV['MODEL'].classify.constantize
7
- presets = ENV['PRESETS'].split(',').map(&:to_sym)
8
- model.find_each do |record|
9
- model.attachments.each do |attr, options|
10
- if options[:type] == :image
11
- presets.each do |preset|
12
- image = record.send(attr)
13
- yield image, preset
14
- end
15
- end
16
- end
17
- end
18
- end
19
-
20
- end
21
- end
22
-
23
- namespace :uploads do
24
-
25
- task :migrate do
26
- files = Rails.root.join('public', 'uploads', 'files')
27
- images = Rails.root.join('public', 'uploads', 'images', 'original')
28
- ::FileUtils.mkdir_p files
29
- ::FileUtils.mkdir_p images
30
- Dir.glob(::File.join(Rails.root.join('public', 'uploads'), '', '*.*')) do |source|
31
- filename = ::File.basename(source)
32
- if filename =~ /-/
33
- ::FileUtils.rm source
34
- elsif filename =~ /\.(jpg|png|gif)$/
35
- ::FileUtils.mv source, ::File.join(images, filename)
36
- else filename =~ /\.!(htm|html|ico)$/
37
- ::FileUtils.mv source, ::File.join(files, filename)
38
- end
39
- end
40
- end
41
-
42
- namespace :presets do
43
- desc 'Refresh preset'
44
- task :refresh => :clean do
45
- RailsUploads::Task.iterate_images do |image, preset|
46
- puts "Generating preset #{image.url(preset)}."
47
- image.generate_preset preset
48
- end
49
- puts "Presets refreshed successfully."
50
- end
51
- desc 'Clean preset'
52
- task :clean => :environment do
53
- RailsUploads::Task.iterate_images do |image, preset|
54
- puts "Deleting preset #{image.url(preset)}."
55
- image.delete_preset preset
56
- end
57
- puts "Presets cleaned successfully."
58
- end
59
- end
60
-
61
- namespace :s3 do
62
- namespace :buckets do
63
- desc 'Create buckets'
64
- task :create do
65
- config = YAML.load_file(Rails.root.join('config', 's3.yml'))
66
- config.each do |env, options|
67
- require 'aws-sdk'
68
- AWS.config access_key_id: options['access_key_id'], secret_access_key: options['secret_access_key']
69
- bucket = options['bucket']
70
- begin
71
- AWS::S3.new.buckets.create bucket
72
- rescue AWS::S3::Errors::InvalidAccessKeyId
73
- puts "Invalid credentials in #{env} environment."
74
- next
75
- rescue AWS::S3::Errors::BucketAlreadyExists
76
- puts "Bucket #{bucket} already exists."
77
- next
78
- rescue AWS::S3::Errors::BucketAlreadyOwnedByYou
79
- puts "You already own bucket #{bucket}."
80
- next
81
- end
82
- puts "Bucket #{bucket} created successfully."
83
- end
84
- end
85
- end
86
- end
87
-
88
- end
89
-