simple_file_uploader 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/README.md +0 -0
- data/lib/simple_file_uploader/active_record.rb +55 -0
- data/lib/simple_file_uploader/base_uploader.rb +30 -0
- data/lib/simple_file_uploader/version.rb +3 -0
- data/lib/simple_file_uploader.rb +10 -0
- metadata +105 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 64fe098baeefc159e1a39872c1b79f7420a965eb
|
4
|
+
data.tar.gz: 4e9fd41bff41f5abf14f145a2f1fbaeafdde9cc3
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ec451210cd698b4d99a76a4700cd29ca50c44cd15805022e4be6cb6a09390a7d364a0a0c609d2bae9ae50d8fc8a026804f0703a66668cc387ed0daff34e0e58a
|
7
|
+
data.tar.gz: e1a2541d9c8f3add128bf832b5ed68eb8fbecf3a64a5962fc073e846acf6df4b8ed8fd6c737c9984c6e266c6554c502a2a116e3b35bafc0b2ed14098b7987841
|
data/README.md
ADDED
File without changes
|
@@ -0,0 +1,55 @@
|
|
1
|
+
module SimpleFileUploader
|
2
|
+
module ActiveRecord
|
3
|
+
|
4
|
+
def uploaders
|
5
|
+
@uploaders ||= superclass.respond_to?(:uploaders) ? superclass.uploaders.dup : {}
|
6
|
+
end
|
7
|
+
|
8
|
+
def uploader_options
|
9
|
+
@uploader_options ||= superclass.respond_to?(:uploader_options) ? superclass.uploader_options.dup : {}
|
10
|
+
end
|
11
|
+
|
12
|
+
# Input Params:
|
13
|
+
# @required column - [string] the coolumn name in the model the uuid of s3_media_server stored
|
14
|
+
# @required uploader - [class] the class of Uploader used for field as uploader
|
15
|
+
def mount_simple_uploader(column, uploader, options = {})
|
16
|
+
|
17
|
+
uploader.remember_uploader(self, column)
|
18
|
+
uploaders[column.to_sym] = uploader
|
19
|
+
uploader_options[column.to_sym] = options
|
20
|
+
|
21
|
+
alias_method :read_uploader, :read_attribute
|
22
|
+
alias_method :write_uploader, :write_attribute
|
23
|
+
public :read_uploader
|
24
|
+
public :write_uploader
|
25
|
+
|
26
|
+
before_save{ _uploaders(column).write_identifier! }
|
27
|
+
after_create { _uploaders(column).on_create }
|
28
|
+
after_destroy { _uploaders(column).on_destroy }
|
29
|
+
after_update{ _uploaders(column).on_update(changes[column].first) if changes[column] }
|
30
|
+
|
31
|
+
validate do |obj|
|
32
|
+
obj.send(column).errors.each { |error| errors.add(column, error) }
|
33
|
+
end
|
34
|
+
|
35
|
+
define_method :"#{column}=" do |value|
|
36
|
+
_uploaders(column).column_value = value
|
37
|
+
end
|
38
|
+
|
39
|
+
define_method :"#{column}" do
|
40
|
+
_uploaders(column)
|
41
|
+
end
|
42
|
+
|
43
|
+
define_method :"remove_#{column}!" do
|
44
|
+
_uploaders(column).remove
|
45
|
+
save!
|
46
|
+
end
|
47
|
+
|
48
|
+
define_method :_uploaders do |column|
|
49
|
+
@_simple_mounter_instances ||= {}
|
50
|
+
@_simple_mounter_instances[column] ||= self.class.uploaders[column].new(self, column)
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module SimpleFileUploader
|
2
|
+
class UploaderError < SimpleFileUploaderError; end
|
3
|
+
class BaseUploader
|
4
|
+
attr_accessor :model, :mounted_as, :column_value, :errors
|
5
|
+
|
6
|
+
def initialize(model, mounted_as)
|
7
|
+
@errors = []
|
8
|
+
@model, @mounted_as = model, mounted_as
|
9
|
+
@column_value = @model.read_uploader(@mounted_as)
|
10
|
+
end
|
11
|
+
|
12
|
+
def write_identifier!
|
13
|
+
@model.write_uploader(@mounted_as, @column_value)
|
14
|
+
end
|
15
|
+
|
16
|
+
def plain; column_value; end
|
17
|
+
|
18
|
+
def validate_callback; end
|
19
|
+
|
20
|
+
class << self
|
21
|
+
attr_reader :mounted_uploaders
|
22
|
+
|
23
|
+
def remember_uploader(model_class, column)
|
24
|
+
@mounted_uploaders ||= []
|
25
|
+
@mounted_uploaders << {model_class: model_class.name, column: column}
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
require 'simple_file_uploader/version'
|
2
|
+
|
3
|
+
module SimpleFileUploader
|
4
|
+
class SimpleFileUploaderError < RuntimeError; end
|
5
|
+
end
|
6
|
+
|
7
|
+
require 'simple_file_uploader/base_uploader'
|
8
|
+
require 'simple_file_uploader/active_record'
|
9
|
+
|
10
|
+
ActiveRecord::Base.extend SimpleFileUploader::ActiveRecord
|
metadata
ADDED
@@ -0,0 +1,105 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: simple_file_uploader
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Danil Nurgaliev
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-07-25 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bunny
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rails
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 4.0.0
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 4.0.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: sqlite3
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: faker
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
description:
|
70
|
+
email: jkonalegi@gmail.com
|
71
|
+
executables: []
|
72
|
+
extensions: []
|
73
|
+
extra_rdoc_files:
|
74
|
+
- README.md
|
75
|
+
files:
|
76
|
+
- README.md
|
77
|
+
- lib/simple_file_uploader.rb
|
78
|
+
- lib/simple_file_uploader/active_record.rb
|
79
|
+
- lib/simple_file_uploader/base_uploader.rb
|
80
|
+
- lib/simple_file_uploader/version.rb
|
81
|
+
homepage:
|
82
|
+
licenses:
|
83
|
+
- MIT
|
84
|
+
metadata: {}
|
85
|
+
post_install_message:
|
86
|
+
rdoc_options: []
|
87
|
+
require_paths:
|
88
|
+
- lib
|
89
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
90
|
+
requirements:
|
91
|
+
- - ">="
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: 2.2.0
|
94
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
95
|
+
requirements:
|
96
|
+
- - ">="
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '0'
|
99
|
+
requirements: []
|
100
|
+
rubyforge_project:
|
101
|
+
rubygems_version: 2.4.5.1
|
102
|
+
signing_key:
|
103
|
+
specification_version: 4
|
104
|
+
summary: Designed for easy uploader for rails app s3 media server.
|
105
|
+
test_files: []
|