attachs 0.4.5 → 4.0.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (115) hide show
  1. checksums.yaml +4 -4
  2. data/MIT-LICENSE +1 -1
  3. data/README.md +83 -218
  4. data/Rakefile +1 -14
  5. data/lib/attachs.rb +98 -31
  6. data/lib/attachs/attachment.rb +301 -72
  7. data/lib/attachs/builder.rb +78 -0
  8. data/lib/attachs/collection.rb +84 -0
  9. data/lib/attachs/concern.rb +47 -0
  10. data/lib/attachs/configuration.rb +11 -0
  11. data/lib/attachs/console.rb +40 -0
  12. data/lib/attachs/extensions/active_record/base.rb +24 -0
  13. data/lib/attachs/extensions/active_record/validations/attachment_content_type_validator.rb +37 -0
  14. data/lib/attachs/extensions/active_record/validations/attachment_presence_validator.rb +27 -0
  15. data/lib/attachs/extensions/active_record/validations/attachment_size_validator.rb +55 -0
  16. data/lib/attachs/extensions/active_record/validations/attachment_validator.rb +24 -0
  17. data/lib/attachs/interpolations.rb +27 -0
  18. data/lib/attachs/jobs/base.rb +14 -0
  19. data/lib/attachs/jobs/delete_job.rb +15 -0
  20. data/lib/attachs/jobs/update_job.rb +11 -0
  21. data/lib/attachs/locales/en.yml +2 -6
  22. data/lib/attachs/locales/es.yml +2 -6
  23. data/lib/attachs/processors/base.rb +4 -14
  24. data/lib/attachs/processors/image.rb +45 -0
  25. data/lib/attachs/railtie.rb +7 -27
  26. data/lib/attachs/storages/base.rb +10 -59
  27. data/lib/attachs/storages/s3.rb +68 -63
  28. data/lib/attachs/version.rb +1 -1
  29. data/lib/generators/attachs/install/install_generator.rb +15 -0
  30. data/lib/generators/attachs/install/templates/initializer.rb +7 -0
  31. data/lib/generators/attachs/upload/templates/migration.rb +11 -0
  32. data/lib/generators/attachs/upload/templates/model.rb +19 -0
  33. data/lib/generators/attachs/upload/upload_generator.rb +24 -0
  34. data/lib/tasks/attachs.rake +12 -26
  35. data/test/attachment_test.rb +175 -12
  36. data/test/collection_test.rb +52 -0
  37. data/test/concern_test.rb +10 -0
  38. data/test/dummy/Rakefile +1 -2
  39. data/test/dummy/app/assets/javascripts/application.js +2 -2
  40. data/test/dummy/app/assets/stylesheets/application.css +6 -4
  41. data/test/dummy/app/models/product.rb +16 -0
  42. data/test/dummy/app/models/shop.rb +14 -0
  43. data/test/dummy/app/models/upload.rb +19 -0
  44. data/test/dummy/app/views/layouts/application.html.erb +9 -11
  45. data/test/dummy/bin/bundle +1 -0
  46. data/test/dummy/bin/rails +2 -1
  47. data/test/dummy/bin/rake +1 -0
  48. data/test/dummy/bin/setup +30 -0
  49. data/test/dummy/config.ru +1 -1
  50. data/test/dummy/config/application.rb +3 -2
  51. data/test/dummy/config/boot.rb +1 -1
  52. data/test/dummy/config/database.yml +4 -22
  53. data/test/dummy/config/database.yml.travis +3 -0
  54. data/test/dummy/config/environment.rb +1 -1
  55. data/test/dummy/config/environments/development.rb +15 -3
  56. data/test/dummy/config/environments/production.rb +21 -26
  57. data/test/dummy/config/environments/test.rb +10 -12
  58. data/test/dummy/config/initializers/assets.rb +11 -0
  59. data/test/dummy/config/initializers/attachs.rb +7 -21
  60. data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
  61. data/test/dummy/config/initializers/mime_types.rb +1 -2
  62. data/test/dummy/config/initializers/session_store.rb +1 -1
  63. data/test/dummy/config/routes.rb +54 -0
  64. data/test/dummy/config/secrets.yml +24 -0
  65. data/test/dummy/db/migrate/20161024234003_create_shops.rb +11 -0
  66. data/test/dummy/db/migrate/20161024234029_create_products.rb +12 -0
  67. data/test/dummy/db/migrate/20161031135453_create_uploads.rb +11 -0
  68. data/test/dummy/db/schema.rb +27 -16
  69. data/test/dummy/log/development.log +61 -0
  70. data/test/dummy/log/test.log +5873 -0
  71. data/test/dummy/public/404.html +58 -55
  72. data/test/dummy/public/422.html +58 -55
  73. data/test/dummy/public/500.html +57 -54
  74. data/test/fixtures/big_file.txt +50 -0
  75. data/test/fixtures/big_image.jpg +0 -0
  76. data/test/fixtures/file.txt +1 -0
  77. data/test/fixtures/image.jpg +0 -0
  78. data/test/{dummy/test/fixtures/file.txt → fixtures/small_file.txt} +0 -0
  79. data/test/fixtures/small_image.jpg +0 -0
  80. data/test/generator_test.rb +14 -6
  81. data/test/helper_test.rb +28 -0
  82. data/test/query_test.rb +26 -0
  83. data/test/support/storage_helper.rb +65 -0
  84. data/test/task_test.rb +69 -0
  85. data/test/test_helper.rb +6 -45
  86. data/test/upload_test.rb +27 -0
  87. data/test/validator_test.rb +160 -0
  88. metadata +114 -68
  89. data/lib/attachs/active_record/base.rb +0 -103
  90. data/lib/attachs/active_record/connection_adapters.rb +0 -40
  91. data/lib/attachs/active_record/migration.rb +0 -17
  92. data/lib/attachs/active_record/validators.rb +0 -7
  93. data/lib/attachs/active_record/validators/attachment_content_type_validator.rb +0 -30
  94. data/lib/attachs/active_record/validators/attachment_presence_validator.rb +0 -22
  95. data/lib/attachs/active_record/validators/attachment_size_validator.rb +0 -47
  96. data/lib/attachs/processors/thumbnail.rb +0 -69
  97. data/lib/attachs/storages/local.rb +0 -95
  98. data/lib/attachs/types/base.rb +0 -22
  99. data/lib/attachs/types/default.rb +0 -29
  100. data/lib/attachs/types/regular.rb +0 -21
  101. data/lib/generators/attachs/install_generator.rb +0 -13
  102. data/lib/generators/attachs/templates/attachs.rb +0 -2
  103. data/test/dummy/README.rdoc +0 -28
  104. data/test/dummy/app/models/medium.rb +0 -5
  105. data/test/dummy/app/models/picture.rb +0 -2
  106. data/test/dummy/config/initializers/secret_token.rb +0 -13
  107. data/test/dummy/config/s3.yml +0 -15
  108. data/test/dummy/db/migrate/20140808012639_create_media.rb +0 -11
  109. data/test/dummy/test/fixtures/image.gif +0 -0
  110. data/test/local_storage_test.rb +0 -72
  111. data/test/migration_test.rb +0 -65
  112. data/test/processor_test.rb +0 -49
  113. data/test/s3_storage_tes.rb +0 -66
  114. data/test/tasks_test.rb +0 -57
  115. data/test/validators_test.rb +0 -100
@@ -0,0 +1,26 @@
1
+ require 'test_helper'
2
+
3
+ class QueryTest < ActiveSupport::TestCase
4
+ include StorageHelper
5
+
6
+ test 'exist' do
7
+ shop = Shop.create(name: 'first', logo: image)
8
+ shop.run_callbacks :commit
9
+ shop_old_path = shop.logo.paths[:original]
10
+ shop.update name: 'second'
11
+ shop.run_callbacks :commit
12
+ shop_path = shop.logo.paths[:original]
13
+
14
+ product = Product.create(pictures: [image, image])
15
+ product.run_callbacks :commit
16
+ product_path = product.pictures.first.paths[:original]
17
+
18
+ assert Attachs.exists?(shop_old_path)
19
+ assert Attachs.exists?(shop_path)
20
+ assert Attachs.exists?(product_path)
21
+
22
+ shop.logo.destroy
23
+ product.pictures.destroy
24
+ end
25
+
26
+ end
@@ -0,0 +1,65 @@
1
+ module StorageHelper
2
+ extend ActiveSupport::Concern
3
+
4
+ private
5
+
6
+ def build_upload_file(path, content_type)
7
+ fixtures_path = File.expand_path('../../fixtures', __FILE__)
8
+ filename = File.basename(path)
9
+ extension = File.extname(path)
10
+ tempfile = Tempfile.new([filename, extension])
11
+ FileUtils.copy_file File.join(fixtures_path, path), tempfile.path
12
+ ActionDispatch::Http::UploadedFile.new(
13
+ tempfile: tempfile,
14
+ filename: filename,
15
+ type: content_type
16
+ )
17
+ end
18
+
19
+ %i(file small_file big_file).each do |name|
20
+ define_method name do
21
+ build_upload_file "#{name}.txt", 'text/plain'
22
+ end
23
+ end
24
+
25
+ %i(image small_image big_image).each do |name|
26
+ define_method name do
27
+ build_upload_file "#{name}.jpg", 'image/jpeg'
28
+ end
29
+ end
30
+
31
+ def assert_url(url)
32
+ response = get(url)
33
+ assert_equal '200', response.code
34
+ end
35
+
36
+ def assert_not_url(url)
37
+ response = get(url)
38
+ assert_equal '403', response.code
39
+ end
40
+
41
+ def assert_url_content_type(value, url)
42
+ response = get(url)
43
+ assert_equal value, response.content_type
44
+ end
45
+
46
+ def assert_url_dimensions(value, url)
47
+ response = get(url)
48
+ tmp = Tempfile.new
49
+ tmp.binmode
50
+ tmp.write response.body
51
+ tmp.rewind
52
+ tmp.close
53
+ dimensions = `gm identify -format %wx%h '#{tmp.path}'`.strip
54
+ assert_equal value, dimensions
55
+ end
56
+
57
+ def get(url)
58
+ Net::HTTP.get_response URI.parse(url)
59
+ end
60
+
61
+ def humanize_size(size)
62
+ ActiveSupport::NumberHelper.number_to_human_size size
63
+ end
64
+
65
+ end
@@ -0,0 +1,69 @@
1
+ require 'test_helper'
2
+
3
+ class TaskTest < ActiveSupport::TestCase
4
+ include StorageHelper
5
+
6
+ setup do
7
+ Dummy::Application.load_tasks
8
+ end
9
+
10
+ test 'reprocess' do
11
+ shop = Shop.new(logo: image)
12
+ assert_raises do
13
+ shop.logo.reprocess
14
+ end
15
+
16
+ shop.save
17
+ shop.run_callbacks :commit
18
+ shop.logo.paths.except(:original).each do |style, path|
19
+ Attachs.storage.delete path
20
+ end
21
+ silence_stream(STDOUT) do
22
+ Rake::Task['attachs:reprocess'].invoke
23
+ end
24
+ shop.reload
25
+ shop.logo.paths.each do |style, path|
26
+ assert_url shop.logo.url(style)
27
+ end
28
+ shop.logo.destroy
29
+ end
30
+
31
+ test 'fix missings' do
32
+ shop = Shop.new(logo: image)
33
+ assert_raises do
34
+ shop.logo.fix_missings
35
+ end
36
+
37
+ shop.save
38
+ shop.run_callbacks :commit
39
+ %i(tiny small).each do |style|
40
+ Attachs.storage.delete shop.logo.paths[style]
41
+ end
42
+ silence_stream(STDOUT) do
43
+ Rake::Task['attachs:fix_missings'].invoke
44
+ end
45
+ shop.logo.paths.each do |style, path|
46
+ assert_url shop.logo.url(style)
47
+ end
48
+ shop.logo.destroy
49
+ end
50
+
51
+ test 'clear' do
52
+ shop1 = Shop.create(logo: image)
53
+ shop1.run_callbacks :commit
54
+ shop2 = Shop.create(logo: image)
55
+ shop2.run_callbacks :commit
56
+ shop2.delete
57
+ silence_stream(STDOUT) do
58
+ Rake::Task['attachs:clear'].invoke
59
+ end
60
+ shop1.logo.styles.each do |style, path|
61
+ assert_url shop1.logo.url(style)
62
+ end
63
+ shop2.logo.styles.each do |style, path|
64
+ assert_not_url shop2.logo.url(style)
65
+ end
66
+ shop1.logo.destroy
67
+ end
68
+
69
+ end
@@ -1,53 +1,14 @@
1
1
  # Configure Rails Environment
2
2
  ENV['RAILS_ENV'] = 'test'
3
3
 
4
- require File.expand_path('../dummy/config/environment.rb', __FILE__)
4
+ require File.expand_path('../../test/dummy/config/environment.rb', __FILE__)
5
+ ActiveRecord::Migrator.migrations_paths = [File.expand_path('../../test/dummy/db/migrate', __FILE__)]
5
6
  require 'rails/test_help'
7
+ require 'mocha/mini_test'
6
8
 
7
- Rails.backtrace_cleaner.remove_silencers!
9
+ # Filter out Minitest backtrace while allowing backtrace from other libraries
10
+ # to be shown.
11
+ Minitest.backtrace_filter = Minitest::BacktraceFilter.new
8
12
 
9
13
  # Load support files
10
14
  Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
11
-
12
- # Load fixtures from the engine
13
- if ActiveSupport::TestCase.method_defined?(:fixture_path=)
14
- ActiveSupport::TestCase.fixture_path = File.expand_path('../fixtures', __FILE__)
15
- end
16
-
17
- # Load database
18
- config = YAML::load(File.read(File.expand_path('../dummy/config/database.yml', __FILE__)))
19
- config['test']['adapter'] = 'jdbcsqlite3' if RUBY_PLATFORM == 'java'
20
- ActiveRecord::Base.establish_connection(config['test'])
21
- load(File.expand_path('../dummy/db/schema.rb', __FILE__))
22
-
23
- # Addons
24
- class ActiveSupport::TestCase
25
- include ActionView::Helpers::NumberHelper
26
-
27
- private
28
-
29
- def clean_storage
30
- FileUtils.rm_rf Rails.root.join('public/storage')
31
- end
32
-
33
- def fixture_file_upload(path, content_type)
34
- Rack::Test::UploadedFile.new(Rails.root.join("test/fixtures/#{path}"), content_type)
35
- end
36
-
37
- def file_upload
38
- fixture_file_upload('file.txt', 'text/plain')
39
- end
40
-
41
- def image_upload
42
- fixture_file_upload('image.gif', 'image/gif')
43
- end
44
-
45
- def assert_url(url)
46
- assert_equal '200', Net::HTTP.get_response(URI(url)).code
47
- end
48
-
49
- def assert_not_url(url)
50
- assert_equal '403', Net::HTTP.get_response(URI(url)).code
51
- end
52
-
53
- end
@@ -0,0 +1,27 @@
1
+ require 'test_helper'
2
+
3
+ class UploadTest < ActiveSupport::TestCase
4
+ include StorageHelper
5
+
6
+ test 'upload' do
7
+ upload = Upload.create(file: image, record_type: 'Shop', record_attribute: 'logo')
8
+ upload.run_callbacks :commit
9
+ shop = Shop.create(logo: upload)
10
+ shop.run_callbacks :commit
11
+ assert_equal 5, shop.logo.paths.size
12
+ shop.logo.styles.each do |style, geometry|
13
+ assert_url shop.logo.url(style)
14
+ end
15
+ shop.logo.destroy
16
+
17
+ shop = Shop.create(logo: upload.id)
18
+ shop.run_callbacks :commit
19
+ assert_equal 5, shop.logo.paths.size
20
+ shop.logo.styles.each do |style, geometry|
21
+ assert_url shop.logo.url(style)
22
+ end
23
+ shop.logo.destroy
24
+ upload.file.destroy
25
+ end
26
+
27
+ end
@@ -0,0 +1,160 @@
1
+ require 'test_helper'
2
+
3
+ class ValidatorTest < ActiveSupport::TestCase
4
+ include StorageHelper
5
+
6
+ teardown do
7
+ Product.clear_validators!
8
+ end
9
+
10
+ test 'methods' do
11
+ %i(content_type size).each do |validator|
12
+ method = "validates_attachment_#{validator}_of"
13
+ assert Product.respond_to?(method)
14
+ end
15
+ end
16
+
17
+ test 'content type with' do
18
+ Product.class_eval do
19
+ validates :pictures, attachment_content_type: { with: /\Aimage/ }
20
+ validates :brief, attachment_content_type: { with: /\Atext/ }
21
+ end
22
+
23
+ product = Product.new(pictures: [file, image], brief: image)
24
+ assert_not product.valid?
25
+ assert product.errors.added?(:pictures, :invalid)
26
+ assert product.pictures.first.errors.added?(:content_type, :not_allowed)
27
+ assert product.pictures.second.valid?
28
+ assert product.errors.added?(:brief, :invalid)
29
+ assert product.brief.errors.added?(:content_type, :not_allowed)
30
+
31
+ product = Product.new(pictures: [image], brief: file)
32
+ assert product.valid?
33
+ end
34
+
35
+ test 'content type in' do
36
+ Product.class_eval do
37
+ validates :pictures, attachment_content_type: { in: %w(image/jpeg) }
38
+ validates :brief, attachment_content_type: { in: %w(text/plain) }
39
+ end
40
+
41
+ product = Product.new(pictures: [file, image], brief: image)
42
+ assert_not product.valid?
43
+ assert product.errors.added?(:pictures, :invalid)
44
+ assert product.pictures.first.errors.added?(:content_type, :not_listed, list: 'image/jpeg')
45
+ assert product.pictures.second.valid?
46
+ assert product.errors.added?(:brief, :invalid)
47
+ assert product.brief.errors.added?(:content_type, :not_listed, list: 'text/plain')
48
+
49
+ product = Product.new(pictures: [image], brief: file)
50
+ assert product.valid?
51
+ end
52
+
53
+
54
+ test 'content type within' do
55
+ Product.class_eval do
56
+ validates :pictures, attachment_content_type: { within: %w(image/jpeg) }
57
+ validates :brief, attachment_content_type: { within: %w(text/plain) }
58
+ end
59
+
60
+ product = Product.new(pictures: [file, image], brief: image)
61
+ assert_not product.valid?
62
+ assert product.errors.added?(:pictures, :invalid)
63
+ assert product.pictures.first.errors.added?(:content_type, :not_listed, list: 'image/jpeg')
64
+ assert product.pictures.second.valid?
65
+ assert product.errors.added?(:brief, :invalid)
66
+ assert product.brief.errors.added?(:content_type, :not_listed, list: 'text/plain')
67
+
68
+ product = Product.new(pictures: [image], brief: file)
69
+ assert product.valid?
70
+ end
71
+
72
+ test 'size in' do
73
+ Product.class_eval do
74
+ validates :pictures, attachment_size: { in: 15.kilobytes..250.kilobytes }
75
+ validates :brief, attachment_size: { in: 14.bytes..500.bytes }
76
+ end
77
+
78
+ product = Product.new(pictures: [big_image, image], brief: big_file)
79
+ assert_not product.valid?
80
+ assert product.errors.added?(:pictures, :invalid)
81
+ assert product.pictures.first.errors.added?(:size, :less_than_or_equal_to, count: humanize_size(250.kilobytes))
82
+ assert product.pictures.second.valid?
83
+ assert product.errors.added?(:brief, :invalid)
84
+ assert product.brief.errors.added?(:size, :less_than_or_equal_to, count: humanize_size(500.bytes))
85
+
86
+ product = Product.new(pictures: [small_image, image], brief: small_file)
87
+ assert_not product.valid?
88
+ assert product.errors.added?(:pictures, :invalid)
89
+ assert product.pictures.first.errors.added?(:size, :greater_than_or_equal_to, count: humanize_size(15.kilobytes))
90
+ assert product.pictures.second.valid?
91
+ assert product.errors.added?(:brief, :invalid)
92
+ assert product.brief.errors.added?(:size, :greater_than_or_equal_to, count: humanize_size(14.bytes))
93
+
94
+ product = Product.new(pictures: [image], brief: file)
95
+ assert product.valid?
96
+ end
97
+
98
+ test 'size within' do
99
+ Product.class_eval do
100
+ validates :pictures, attachment_size: { within: 15.kilobytes..250.kilobytes }
101
+ validates :brief, attachment_size: { within: 14.bytes..500.bytes }
102
+ end
103
+
104
+ product = Product.new(pictures: [big_image, image], brief: big_file)
105
+ assert_not product.valid?
106
+ assert product.errors.added?(:pictures, :invalid)
107
+ assert product.pictures.first.errors.added?(:size, :less_than_or_equal_to, count: humanize_size(250.kilobytes))
108
+ assert product.pictures.second.valid?
109
+ assert product.errors.added?(:brief, :invalid)
110
+ assert product.brief.errors.added?(:size, :less_than_or_equal_to, count: humanize_size(500.bytes))
111
+
112
+ product = Product.new(pictures: [small_image, image], brief: small_file)
113
+ assert_not product.valid?
114
+ assert product.errors.added?(:pictures, :invalid)
115
+ assert product.pictures.first.errors.added?(:size, :greater_than_or_equal_to, count: humanize_size(15.kilobytes))
116
+ assert product.pictures.second.valid?
117
+ assert product.errors.added?(:brief, :invalid)
118
+ assert product.brief.errors.added?(:size, :greater_than_or_equal_to, count: humanize_size(14.bytes))
119
+
120
+ product = Product.new(pictures: [image], brief: file)
121
+ assert product.valid?
122
+ end
123
+
124
+ test 'size less than' do
125
+ Product.class_eval do
126
+ validates :pictures, attachment_size: { less_than: 250.kilobytes }
127
+ validates :brief, attachment_size: { less_than: 500.bytes }
128
+ end
129
+
130
+ product = Product.new(pictures: [big_image, image], brief: big_file)
131
+ assert_not product.valid?
132
+ assert product.errors.added?(:pictures, :invalid)
133
+ assert product.pictures.first.errors.added?(:size, :less_than, count: humanize_size(250.kilobytes))
134
+ assert product.pictures.second.valid?
135
+ assert product.errors.added?(:brief, :invalid)
136
+ assert product.brief.errors.added?(:size, :less_than, count: humanize_size(500.bytes))
137
+
138
+ product = Product.new(pictures: [image], brief: file)
139
+ assert product.valid?
140
+ end
141
+
142
+ test 'size greater than' do
143
+ Product.class_eval do
144
+ validates :pictures, attachment_size: { greater_than: 15.kilobytes }
145
+ validates :brief, attachment_size: { greater_than: 14.bytes }
146
+ end
147
+
148
+ product = Product.new(pictures: [small_image, image], brief: small_file)
149
+ assert_not product.valid?
150
+ assert product.errors.added?(:pictures, :invalid)
151
+ assert product.pictures.first.errors.added?(:size, :greater_than, count: humanize_size(15.kilobytes))
152
+ assert product.pictures.second.valid?
153
+ assert product.errors.added?(:brief, :invalid)
154
+ assert product.brief.errors.added?(:size, :greater_than, count: humanize_size(14.bytes))
155
+
156
+ product = Product.new(pictures: [image], brief: file)
157
+ assert product.valid?
158
+ end
159
+
160
+ end
metadata CHANGED
@@ -1,66 +1,80 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: attachs
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.5
4
+ version: 4.0.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - mmontossi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-15 00:00:00.000000000 Z
11
+ date: 2016-12-06 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 4.2.0
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: 4.3.0
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: 4.2.0
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: 4.3.0
13
33
  - !ruby/object:Gem::Dependency
14
34
  name: aws-sdk
15
35
  requirement: !ruby/object:Gem::Requirement
16
36
  requirements:
17
37
  - - "~>"
18
38
  - !ruby/object:Gem::Version
19
- version: '1.0'
20
- type: :development
39
+ version: '2.0'
40
+ type: :runtime
21
41
  prerelease: false
22
42
  version_requirements: !ruby/object:Gem::Requirement
23
43
  requirements:
24
44
  - - "~>"
25
45
  - !ruby/object:Gem::Version
26
- version: '1.0'
46
+ version: '2.0'
27
47
  - !ruby/object:Gem::Dependency
28
- name: rails
48
+ name: pg
29
49
  requirement: !ruby/object:Gem::Requirement
30
50
  requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: 4.0.0
34
- - - "<"
51
+ - - "~>"
35
52
  - !ruby/object:Gem::Version
36
- version: 4.3.0
37
- type: :runtime
53
+ version: '0.18'
54
+ type: :development
38
55
  prerelease: false
39
56
  version_requirements: !ruby/object:Gem::Requirement
40
57
  requirements:
41
- - - ">="
42
- - !ruby/object:Gem::Version
43
- version: 4.0.0
44
- - - "<"
58
+ - - "~>"
45
59
  - !ruby/object:Gem::Version
46
- version: 4.3.0
60
+ version: '0.18'
47
61
  - !ruby/object:Gem::Dependency
48
- name: sqlite3
62
+ name: mocha
49
63
  requirement: !ruby/object:Gem::Requirement
50
64
  requirements:
51
65
  - - "~>"
52
66
  - !ruby/object:Gem::Version
53
- version: '1.3'
67
+ version: '1.1'
54
68
  type: :development
55
69
  prerelease: false
56
70
  version_requirements: !ruby/object:Gem::Requirement
57
71
  requirements:
58
72
  - - "~>"
59
73
  - !ruby/object:Gem::Version
60
- version: '1.3'
61
- description: Minimalistic toolkit to attach files to records in rails.
74
+ version: '1.1'
75
+ description: Json based attachments for records in rails.
62
76
  email:
63
- - mmontossi@buyin.io
77
+ - mmontossi@gmail.com
64
78
  executables: []
65
79
  extensions: []
66
80
  extra_rdoc_files: []
@@ -69,77 +83,96 @@ files:
69
83
  - README.md
70
84
  - Rakefile
71
85
  - lib/attachs.rb
72
- - lib/attachs/active_record/base.rb
73
- - lib/attachs/active_record/connection_adapters.rb
74
- - lib/attachs/active_record/migration.rb
75
- - lib/attachs/active_record/validators.rb
76
- - lib/attachs/active_record/validators/attachment_content_type_validator.rb
77
- - lib/attachs/active_record/validators/attachment_presence_validator.rb
78
- - lib/attachs/active_record/validators/attachment_size_validator.rb
79
86
  - lib/attachs/attachment.rb
87
+ - lib/attachs/builder.rb
88
+ - lib/attachs/collection.rb
89
+ - lib/attachs/concern.rb
90
+ - lib/attachs/configuration.rb
91
+ - lib/attachs/console.rb
92
+ - lib/attachs/extensions/active_record/base.rb
93
+ - lib/attachs/extensions/active_record/validations/attachment_content_type_validator.rb
94
+ - lib/attachs/extensions/active_record/validations/attachment_presence_validator.rb
95
+ - lib/attachs/extensions/active_record/validations/attachment_size_validator.rb
96
+ - lib/attachs/extensions/active_record/validations/attachment_validator.rb
97
+ - lib/attachs/interpolations.rb
98
+ - lib/attachs/jobs/base.rb
99
+ - lib/attachs/jobs/delete_job.rb
100
+ - lib/attachs/jobs/update_job.rb
80
101
  - lib/attachs/locales/en.yml
81
102
  - lib/attachs/locales/es.yml
82
103
  - lib/attachs/processors/base.rb
83
- - lib/attachs/processors/thumbnail.rb
104
+ - lib/attachs/processors/image.rb
84
105
  - lib/attachs/railtie.rb
85
106
  - lib/attachs/storages/base.rb
86
- - lib/attachs/storages/local.rb
87
107
  - lib/attachs/storages/s3.rb
88
- - lib/attachs/types/base.rb
89
- - lib/attachs/types/default.rb
90
- - lib/attachs/types/regular.rb
91
108
  - lib/attachs/version.rb
92
- - lib/generators/attachs/install_generator.rb
93
- - lib/generators/attachs/templates/attachs.rb
109
+ - lib/generators/attachs/install/install_generator.rb
110
+ - lib/generators/attachs/install/templates/initializer.rb
111
+ - lib/generators/attachs/upload/templates/migration.rb
112
+ - lib/generators/attachs/upload/templates/model.rb
113
+ - lib/generators/attachs/upload/upload_generator.rb
94
114
  - lib/tasks/attachs.rake
95
115
  - test/attachment_test.rb
96
- - test/dummy/README.rdoc
116
+ - test/collection_test.rb
117
+ - test/concern_test.rb
97
118
  - test/dummy/Rakefile
98
119
  - test/dummy/app/assets/javascripts/application.js
99
120
  - test/dummy/app/assets/stylesheets/application.css
100
121
  - test/dummy/app/controllers/application_controller.rb
101
122
  - test/dummy/app/helpers/application_helper.rb
102
- - test/dummy/app/models/medium.rb
103
- - test/dummy/app/models/picture.rb
123
+ - test/dummy/app/models/product.rb
124
+ - test/dummy/app/models/shop.rb
125
+ - test/dummy/app/models/upload.rb
104
126
  - test/dummy/app/views/layouts/application.html.erb
105
127
  - test/dummy/bin/bundle
106
128
  - test/dummy/bin/rails
107
129
  - test/dummy/bin/rake
130
+ - test/dummy/bin/setup
108
131
  - test/dummy/config.ru
109
132
  - test/dummy/config/application.rb
110
133
  - test/dummy/config/boot.rb
111
134
  - test/dummy/config/database.yml
135
+ - test/dummy/config/database.yml.travis
112
136
  - test/dummy/config/environment.rb
113
137
  - test/dummy/config/environments/development.rb
114
138
  - test/dummy/config/environments/production.rb
115
139
  - test/dummy/config/environments/test.rb
140
+ - test/dummy/config/initializers/assets.rb
116
141
  - test/dummy/config/initializers/attachs.rb
117
142
  - test/dummy/config/initializers/backtrace_silencers.rb
143
+ - test/dummy/config/initializers/cookies_serializer.rb
118
144
  - test/dummy/config/initializers/filter_parameter_logging.rb
119
145
  - test/dummy/config/initializers/inflections.rb
120
146
  - test/dummy/config/initializers/mime_types.rb
121
- - test/dummy/config/initializers/secret_token.rb
122
147
  - test/dummy/config/initializers/session_store.rb
123
148
  - test/dummy/config/initializers/wrap_parameters.rb
124
149
  - test/dummy/config/locales/en.yml
125
150
  - test/dummy/config/routes.rb
126
- - test/dummy/config/s3.yml
127
- - test/dummy/db/migrate/20140808012639_create_media.rb
151
+ - test/dummy/config/secrets.yml
152
+ - test/dummy/db/migrate/20161024234003_create_shops.rb
153
+ - test/dummy/db/migrate/20161024234029_create_products.rb
154
+ - test/dummy/db/migrate/20161031135453_create_uploads.rb
128
155
  - test/dummy/db/schema.rb
156
+ - test/dummy/log/development.log
157
+ - test/dummy/log/test.log
129
158
  - test/dummy/public/404.html
130
159
  - test/dummy/public/422.html
131
160
  - test/dummy/public/500.html
132
161
  - test/dummy/public/favicon.ico
133
- - test/dummy/test/fixtures/file.txt
134
- - test/dummy/test/fixtures/image.gif
162
+ - test/fixtures/big_file.txt
163
+ - test/fixtures/big_image.jpg
164
+ - test/fixtures/file.txt
165
+ - test/fixtures/image.jpg
166
+ - test/fixtures/small_file.txt
167
+ - test/fixtures/small_image.jpg
135
168
  - test/generator_test.rb
136
- - test/local_storage_test.rb
137
- - test/migration_test.rb
138
- - test/processor_test.rb
139
- - test/s3_storage_tes.rb
140
- - test/tasks_test.rb
169
+ - test/helper_test.rb
170
+ - test/query_test.rb
171
+ - test/support/storage_helper.rb
172
+ - test/task_test.rb
141
173
  - test/test_helper.rb
142
- - test/validators_test.rb
174
+ - test/upload_test.rb
175
+ - test/validator_test.rb
143
176
  homepage: https://github.com/mmontossi/attachs
144
177
  licenses:
145
178
  - MIT
@@ -152,65 +185,78 @@ required_ruby_version: !ruby/object:Gem::Requirement
152
185
  requirements:
153
186
  - - ">="
154
187
  - !ruby/object:Gem::Version
155
- version: 1.9.3
188
+ version: 2.0.0
156
189
  required_rubygems_version: !ruby/object:Gem::Requirement
157
190
  requirements:
158
191
  - - ">="
159
192
  - !ruby/object:Gem::Version
160
193
  version: '0'
161
194
  requirements:
162
- - ImageMagick
195
+ - GraphicsMagick
163
196
  rubyforge_project:
164
- rubygems_version: 2.4.5
197
+ rubygems_version: 2.5.1
165
198
  signing_key:
166
199
  specification_version: 4
167
- summary: Attachs for rails.
200
+ summary: File attachments for rails.
168
201
  test_files:
169
202
  - test/attachment_test.rb
203
+ - test/collection_test.rb
204
+ - test/concern_test.rb
170
205
  - test/dummy/app/assets/javascripts/application.js
171
206
  - test/dummy/app/assets/stylesheets/application.css
172
207
  - test/dummy/app/controllers/application_controller.rb
173
208
  - test/dummy/app/helpers/application_helper.rb
174
- - test/dummy/app/models/medium.rb
175
- - test/dummy/app/models/picture.rb
209
+ - test/dummy/app/models/product.rb
210
+ - test/dummy/app/models/shop.rb
211
+ - test/dummy/app/models/upload.rb
176
212
  - test/dummy/app/views/layouts/application.html.erb
177
213
  - test/dummy/bin/bundle
178
214
  - test/dummy/bin/rails
179
215
  - test/dummy/bin/rake
216
+ - test/dummy/bin/setup
180
217
  - test/dummy/config/application.rb
181
218
  - test/dummy/config/boot.rb
182
219
  - test/dummy/config/database.yml
220
+ - test/dummy/config/database.yml.travis
183
221
  - test/dummy/config/environment.rb
184
222
  - test/dummy/config/environments/development.rb
185
223
  - test/dummy/config/environments/production.rb
186
224
  - test/dummy/config/environments/test.rb
225
+ - test/dummy/config/initializers/assets.rb
187
226
  - test/dummy/config/initializers/attachs.rb
188
227
  - test/dummy/config/initializers/backtrace_silencers.rb
228
+ - test/dummy/config/initializers/cookies_serializer.rb
189
229
  - test/dummy/config/initializers/filter_parameter_logging.rb
190
230
  - test/dummy/config/initializers/inflections.rb
191
231
  - test/dummy/config/initializers/mime_types.rb
192
- - test/dummy/config/initializers/secret_token.rb
193
232
  - test/dummy/config/initializers/session_store.rb
194
233
  - test/dummy/config/initializers/wrap_parameters.rb
195
234
  - test/dummy/config/locales/en.yml
196
235
  - test/dummy/config/routes.rb
197
- - test/dummy/config/s3.yml
236
+ - test/dummy/config/secrets.yml
198
237
  - test/dummy/config.ru
199
- - test/dummy/db/migrate/20140808012639_create_media.rb
238
+ - test/dummy/db/migrate/20161024234003_create_shops.rb
239
+ - test/dummy/db/migrate/20161024234029_create_products.rb
240
+ - test/dummy/db/migrate/20161031135453_create_uploads.rb
200
241
  - test/dummy/db/schema.rb
242
+ - test/dummy/log/development.log
243
+ - test/dummy/log/test.log
201
244
  - test/dummy/public/404.html
202
245
  - test/dummy/public/422.html
203
246
  - test/dummy/public/500.html
204
247
  - test/dummy/public/favicon.ico
205
248
  - test/dummy/Rakefile
206
- - test/dummy/README.rdoc
207
- - test/dummy/test/fixtures/file.txt
208
- - test/dummy/test/fixtures/image.gif
249
+ - test/fixtures/big_file.txt
250
+ - test/fixtures/big_image.jpg
251
+ - test/fixtures/file.txt
252
+ - test/fixtures/image.jpg
253
+ - test/fixtures/small_file.txt
254
+ - test/fixtures/small_image.jpg
209
255
  - test/generator_test.rb
210
- - test/local_storage_test.rb
211
- - test/migration_test.rb
212
- - test/processor_test.rb
213
- - test/s3_storage_tes.rb
214
- - test/tasks_test.rb
256
+ - test/helper_test.rb
257
+ - test/query_test.rb
258
+ - test/support/storage_helper.rb
259
+ - test/task_test.rb
215
260
  - test/test_helper.rb
216
- - test/validators_test.rb
261
+ - test/upload_test.rb
262
+ - test/validator_test.rb