paperclip_upload 0.1.0 → 1.0.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.
- checksums.yaml +4 -4
- data/app/controllers/paperclip_upload/uploads_controller.rb +0 -8
- data/app/models/paperclip_upload/upload.rb +17 -0
- data/app/serializers/paperclip_upload/upload_serializer.rb +1 -1
- data/config/routes.rb +1 -1
- data/lib/generators/paperclip_upload/{install_generator.rb → install/install_generator.rb} +8 -1
- data/lib/generators/paperclip_upload/install/templates/initializer.rb +5 -0
- data/lib/generators/paperclip_upload/upload_controller/templates/controller.rb +14 -0
- data/lib/generators/paperclip_upload/upload_controller/upload_controller_generator.rb +29 -0
- data/lib/paperclip_upload/active_record_extension.rb +5 -2
- data/lib/paperclip_upload/version.rb +1 -1
- data/lib/paperclip_upload.rb +14 -0
- data/spec/dummy/README.md +1 -0
- data/spec/dummy/config/initializers/paperclip_upload.rb +5 -0
- data/spec/dummy/config/routes.rb +1 -2
- data/spec/dummy/log/development.log +20 -0
- data/spec/dummy/log/test.log +3571 -0
- data/spec/dummy/spec/controllers/paperclip_upload/uploads_controller_spec.rb +1 -11
- data/spec/dummy/spec/models/paperclip_upload/upload_spec.rb +12 -1
- data/spec/dummy/spec/models/promotion_spec.rb +7 -7
- metadata +24 -5
- data/spec/dummy/README.rdoc +0 -28
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 634b300e660876d996d1f717093f2cd65f4c6aba
|
4
|
+
data.tar.gz: f81e5cb3f748537e0c6d46fd4c8f3faeed23d29c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ded439b53ccc9ab6a00953f1502476a64fb84fe3351fb6edf79a26db1ba2030079d3aaf5fd4dff4aeb4fb229578d6a1fe474b8d33899acdaabacfb5d673d41db
|
7
|
+
data.tar.gz: 9f0a12b84460e38c29e5d2845716c5913992f1696b27c376165b37438cf335559ad58d45341a55f182470b0acd55308c24dae36a5a6279a0f05a61b39e7287e8
|
@@ -3,10 +3,6 @@ module PaperclipUpload
|
|
3
3
|
self.responder = PaperclipUploadResponder
|
4
4
|
respond_to :json
|
5
5
|
|
6
|
-
def show
|
7
|
-
respond_with upload
|
8
|
-
end
|
9
|
-
|
10
6
|
def create
|
11
7
|
respond_with PaperclipUpload::Upload.create(permitted_params), status: :created
|
12
8
|
end
|
@@ -16,9 +12,5 @@ module PaperclipUpload
|
|
16
12
|
def permitted_params
|
17
13
|
params.permit(:file)
|
18
14
|
end
|
19
|
-
|
20
|
-
def upload
|
21
|
-
@upload ||= Upload.find(params[:id])
|
22
|
-
end
|
23
15
|
end
|
24
16
|
end
|
@@ -13,9 +13,26 @@
|
|
13
13
|
|
14
14
|
module PaperclipUpload
|
15
15
|
class Upload < ActiveRecord::Base
|
16
|
+
IDENTIFIER_LENGTH = 8
|
17
|
+
|
16
18
|
has_attached_file :file, path: ':rails_root/tmp/uploads/:id/:filename'
|
17
19
|
|
18
20
|
do_not_validate_attachment_file_type :file
|
19
21
|
validates_attachment_presence :file
|
22
|
+
|
23
|
+
def identifier
|
24
|
+
raise "valid with saved instance only" if self.id.blank?
|
25
|
+
self.class.hashid.encode(self.id)
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.identifier_to_id(_identifier)
|
29
|
+
self.hashid.decode(_identifier).first
|
30
|
+
end
|
31
|
+
|
32
|
+
private
|
33
|
+
|
34
|
+
def self.hashid
|
35
|
+
Hashids.new(PaperclipUpload.hash_salt, IDENTIFIER_LENGTH)
|
36
|
+
end
|
20
37
|
end
|
21
38
|
end
|
data/config/routes.rb
CHANGED
@@ -1,10 +1,17 @@
|
|
1
1
|
class PaperclipUpload::InstallGenerator < Rails::Generators::Base
|
2
2
|
source_root File.expand_path('../templates', __FILE__)
|
3
3
|
|
4
|
+
def create_initializer
|
5
|
+
template "initializer.rb", "config/initializers/paperclip_upload.rb"
|
6
|
+
end
|
7
|
+
|
4
8
|
def mount_routes
|
5
9
|
line = "Rails.application.routes.draw do"
|
6
10
|
gsub_file "config/routes.rb", /(#{Regexp.escape(line)})/mi do |match|
|
7
|
-
|
11
|
+
<<-HERE.gsub(/^ {9}/, '')
|
12
|
+
#{match}
|
13
|
+
mount PaperclipUpload::Engine => '/'
|
14
|
+
HERE
|
8
15
|
end
|
9
16
|
end
|
10
17
|
|
@@ -0,0 +1,5 @@
|
|
1
|
+
PaperclipUpload.setup do |config|
|
2
|
+
# The upload module uses a salt string to generate an unique hash for each instance.
|
3
|
+
# A salt string can be defined here to replace the default and increase the module's security.
|
4
|
+
# config.hash_salt = "A new and improved string"
|
5
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
class UploadController < ApplicationController
|
2
|
+
self.responder = PaperclipUploadResponder
|
3
|
+
respond_to :json
|
4
|
+
|
5
|
+
def create
|
6
|
+
respond_with PaperclipUpload::Upload.create(permitted_params), status: :created
|
7
|
+
end
|
8
|
+
|
9
|
+
private
|
10
|
+
|
11
|
+
def permitted_params
|
12
|
+
params.permit(:file)
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
class PaperclipUpload::UploadControllerGenerator < Rails::Generators::NamedBase
|
2
|
+
source_root File.expand_path('../templates', __FILE__)
|
3
|
+
argument :base_controller, type: :string, :default => "application"
|
4
|
+
|
5
|
+
def generate_controller
|
6
|
+
generate "controller #{name}"
|
7
|
+
end
|
8
|
+
|
9
|
+
def replace_controller_with_template
|
10
|
+
copy_file "controller.rb", "app/controllers/#{name}_controller.rb", force: true
|
11
|
+
end
|
12
|
+
|
13
|
+
def customize_controller
|
14
|
+
line = "class UploadController < ApplicationController"
|
15
|
+
gsub_file "app/controllers/#{name}_controller.rb", /(#{Regexp.escape(line)})/mi do |match|
|
16
|
+
"class #{name.classify.pluralize}Controller < #{base_controller.classify}Controller"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def add_routes
|
21
|
+
line = "Rails.application.routes.draw do"
|
22
|
+
gsub_file "config/routes.rb", /(#{Regexp.escape(line)})/mi do |match|
|
23
|
+
<<-HERE.gsub(/^ {9}/, '')
|
24
|
+
#{match}
|
25
|
+
post "#{name}", to: "#{name}#create", defaults: { format: :json }
|
26
|
+
HERE
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -4,11 +4,14 @@ module PaperclipUpload
|
|
4
4
|
|
5
5
|
class_methods do
|
6
6
|
def has_attached_upload(_paperclip_attr_name, _options = {})
|
7
|
-
attr_accessor :
|
7
|
+
attr_accessor :upload_identifier
|
8
8
|
attr_accessor :upload
|
9
9
|
|
10
10
|
before_validation do
|
11
|
-
|
11
|
+
if self.upload_identifier
|
12
|
+
decoded_id = PaperclipUpload::Upload.identifier_to_id(self.upload_identifier)
|
13
|
+
self.upload = PaperclipUpload::Upload.find(decoded_id)
|
14
|
+
end
|
12
15
|
|
13
16
|
if self.upload
|
14
17
|
if !self.upload.is_a? PaperclipUpload::Upload
|
data/lib/paperclip_upload.rb
CHANGED
@@ -1,8 +1,22 @@
|
|
1
1
|
require "paperclip"
|
2
2
|
require "responders"
|
3
|
+
require 'hashids'
|
3
4
|
require "active_model_serializers"
|
4
5
|
require "paperclip_upload/active_record_extension"
|
5
6
|
require "paperclip_upload/engine"
|
6
7
|
|
7
8
|
module PaperclipUpload
|
9
|
+
extend self
|
10
|
+
|
11
|
+
attr_writer :hash_salt
|
12
|
+
|
13
|
+
def hash_salt
|
14
|
+
return "default" unless @hash_salt
|
15
|
+
@hash_salt
|
16
|
+
end
|
17
|
+
|
18
|
+
def setup
|
19
|
+
yield self
|
20
|
+
require "paperclip_upload"
|
21
|
+
end
|
8
22
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
# HI! I'm just a dummy app
|
@@ -0,0 +1,5 @@
|
|
1
|
+
PaperclipUpload.setup do |config|
|
2
|
+
# The upload module uses a salt string to generate an unique hash for each instance.
|
3
|
+
# A salt string can be defined here to replace the default and increase the module's security.
|
4
|
+
# config.hash_salt = "A new and improved string"
|
5
|
+
end
|
data/spec/dummy/config/routes.rb
CHANGED
@@ -5106,3 +5106,23 @@ Migrating to AddAttachmentPhotoToPromotions (20150613212609)
|
|
5106
5106
|
[1m[36m (0.1ms)[0m [1mbegin transaction[0m
|
5107
5107
|
[1m[35mSQL (0.4ms)[0m INSERT INTO "promotions" ("created_at", "updated_at") VALUES (?, ?) [["created_at", "2015-06-13 22:09:43.053785"], ["updated_at", "2015-06-13 22:09:43.053785"]]
|
5108
5108
|
[1m[36m (1.6ms)[0m [1mcommit transaction[0m
|
5109
|
+
[1m[36mPaperclipUpload::Upload Load (0.6ms)[0m [1mSELECT "paperclip_upload_uploads".* FROM "paperclip_upload_uploads" WHERE "paperclip_upload_uploads"."id" = ? LIMIT 1[0m [["id", 1]]
|
5110
|
+
[1m[35mPaperclipUpload::Upload Load (0.1ms)[0m SELECT "paperclip_upload_uploads".* FROM "paperclip_upload_uploads" WHERE "paperclip_upload_uploads"."id" = ? LIMIT 1 [["id", 0]]
|
5111
|
+
[1m[36mPaperclipUpload::Upload Load (0.1ms)[0m [1mSELECT "paperclip_upload_uploads".* FROM "paperclip_upload_uploads" WHERE "paperclip_upload_uploads"."id" = ? LIMIT 1[0m [["id", 0]]
|
5112
|
+
[1m[35mPaperclipUpload::Upload Load (0.2ms)[0m SELECT "paperclip_upload_uploads".* FROM "paperclip_upload_uploads" WHERE "paperclip_upload_uploads"."id" IN (1, 2)
|
5113
|
+
[1m[36mPaperclipUpload::Upload Load (0.2ms)[0m [1mSELECT "paperclip_upload_uploads".* FROM "paperclip_upload_uploads" WHERE "paperclip_upload_uploads"."id" IN (1, 33)[0m
|
5114
|
+
|
5115
|
+
|
5116
|
+
Started GET "/" for ::1 at 2015-06-26 10:03:48 -0300
|
5117
|
+
[1m[36mActiveRecord::SchemaMigration Load (0.5ms)[0m [1mSELECT "schema_migrations".* FROM "schema_migrations"[0m
|
5118
|
+
Processing by Rails::WelcomeController#index as HTML
|
5119
|
+
Rendered /opt/rubies/2.0.0-p645/lib/ruby/gems/2.0.0/gems/railties-4.2.1/lib/rails/templates/rails/welcome/index.html.erb (1.7ms)
|
5120
|
+
Completed 200 OK in 8ms (Views: 8.1ms | ActiveRecord: 0.0ms)
|
5121
|
+
|
5122
|
+
|
5123
|
+
Started GET "/" for ::1 at 2015-06-26 10:13:19 -0300
|
5124
|
+
Processing by Rails::WelcomeController#index as HTML
|
5125
|
+
Rendered /opt/rubies/2.0.0-p645/lib/ruby/gems/2.0.0/gems/railties-4.2.1/lib/rails/templates/rails/welcome/index.html.erb (0.1ms)
|
5126
|
+
Completed 200 OK in 2ms (Views: 1.6ms | ActiveRecord: 0.0ms)
|
5127
|
+
DEPRECATION WARNING: Defining a route where `to` is a controller without an action is deprecated. Please change `to: :api/uploads/create` to `controller: :api/uploads/create`. (called from block in <top (required)> at /Users/leandro/src/paperclip_upload/spec/dummy/config/routes.rb:2)
|
5128
|
+
DEPRECATION WARNING: Defining a route where `to` is a controller without an action is deprecated. Please change `to: :api/uploads/create` to `controller: :api/uploads/create`. (called from block in <top (required)> at /Users/leandro/src/paperclip_upload/spec/dummy/config/routes.rb:2)
|