s3ff 0.9.4 → 0.9.5
Sign up to get free protection for your applications and to get access to all the features.
- 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
|