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 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,3 @@
1
+ module SimpleFileUploader
2
+ VERSION = '0.0.1'
3
+ 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: []