s3ff 0.9.4 → 0.9.5
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/README.md +12 -1
- data/lib/s3ff.rb +2 -0
- data/lib/s3ff/model_helper.rb +42 -0
- data/lib/s3ff/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8f484d70a13f4f286c5c2359cfb0b2ce008646d9
|
4
|
+
data.tar.gz: b2ba48eb5a830b8369b70dac313ff6d1c4a239b0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6ef9c3c7d3ebe06188c702897b123405eda017cbdd3f358520561ba5e06d0868baad82049777cf91db81fd5d4e2ced7c433305e694fa14c505efeccae303a6ea
|
7
|
+
data.tar.gz: 954dc7d61321c80d3d9fab2eaa02a4c7dcd22c83cbfca13d11bbc7798d674a9bc1764513737d2ae2c70cf7f2a258e02c12bc339b9f5c498614d0200df6ec12ab
|
data/README.md
CHANGED
@@ -123,8 +123,19 @@ end
|
|
123
123
|
|
124
124
|
#### CAVEAT
|
125
125
|
|
126
|
-
It is not ideal to handle your attachment processing synchronously inside the web request.
|
126
|
+
It is not ideal to handle your attachment processing synchronously inside the web request. If you have `Sidekiq` or `DelayedJob` installed, you should use the `download_from_direct_url_with_delay` helper method instead
|
127
127
|
|
128
|
+
``` ruby
|
129
|
+
class User < ActiveRecord::Base
|
130
|
+
has_attached_file :avatar
|
131
|
+
validates_attachment_content_type :avatar, content_type: /\Aimage\/.*\Z/
|
132
|
+
|
133
|
+
# s3ff changes
|
134
|
+
# for delayed_job, you MUST add a `avatar_direct_url` database column of string type
|
135
|
+
# for sidekiq, `avatar_direct_url` is a virtual attribute; adding a database column is optional
|
136
|
+
download_from_direct_url_with_delay :avatar
|
137
|
+
end
|
138
|
+
```
|
128
139
|
|
129
140
|
## Contributing
|
130
141
|
|
data/lib/s3ff.rb
CHANGED
@@ -1,9 +1,11 @@
|
|
1
1
|
require 's3_file_field'
|
2
2
|
require 's3ff/view_helper'
|
3
|
+
require 's3ff/model_helper'
|
3
4
|
require 's3ff/railtie'
|
4
5
|
require 's3ff/engine'
|
5
6
|
|
6
7
|
ActionView::Base.send(:include, S3FF::ViewHelper)
|
8
|
+
ActiveRecord::Base.send(:extend, S3FF::ModelHelper)
|
7
9
|
|
8
10
|
S3FileField::FormBuilder.class_eval do
|
9
11
|
def s3_file_field_with_s3ff(method, options = {})
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module S3FF
|
2
|
+
module ModelHelper
|
3
|
+
def download_from_direct_url_with_delay(attr_name)
|
4
|
+
if self.respond_to?(:delay)
|
5
|
+
self.class_eval <<-EOM
|
6
|
+
attr_accessor :#{attr_name}_direct_url unless self.column_names.include?("#{attr_name}_direct_url")
|
7
|
+
after_save :delay_s3ff_download_direct_url, if: proc { #{attr_name}_direct_url.present? }
|
8
|
+
|
9
|
+
def delay_s3ff_download_direct_url
|
10
|
+
self.class.delay.s3ff_download_direct_url(id, #{attr_name}_direct_url)
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.s3ff_download_direct_url(instance_id, #{attr_name}_direct_url)
|
14
|
+
open(#{attr_name}_direct_url, ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE) do |file|
|
15
|
+
find(instance_id).update(
|
16
|
+
#{attr_name}: file,
|
17
|
+
#{attr_name}_file_name: File.basename(#{attr_name}_direct_url),
|
18
|
+
)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
EOM
|
22
|
+
elsif self.respond_to?(:handle_asynchronously)
|
23
|
+
self.class_eval <<-EOM
|
24
|
+
after_save :s3ff_download_direct_url, if: -> { #{attr_name}_direct_url.present? && #{attr_name}_direct_url_changed? }
|
25
|
+
|
26
|
+
def s3ff_download_direct_url
|
27
|
+
open(#{attr_name}_direct_url, ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE) do |file|
|
28
|
+
update(
|
29
|
+
#{attr_name}: file,
|
30
|
+
#{attr_name}_file_name: File.basename(#{attr_name}_direct_url),
|
31
|
+
)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
handle_asynchronously :s3ff_download_direct_url
|
36
|
+
EOM
|
37
|
+
else
|
38
|
+
raise NotImplementedError('download_from_direct_url_with_delay only supports delayed_job or sidekiq delayed extension')
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
data/lib/s3ff/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: s3ff
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chew Choon Keat
|
@@ -77,6 +77,7 @@ files:
|
|
77
77
|
- app/assets/javascripts/s3ff.js
|
78
78
|
- lib/s3ff.rb
|
79
79
|
- lib/s3ff/engine.rb
|
80
|
+
- lib/s3ff/model_helper.rb
|
80
81
|
- lib/s3ff/railtie.rb
|
81
82
|
- lib/s3ff/version.rb
|
82
83
|
- lib/s3ff/view_helper.rb
|