Wraps the Aliyun OSS as an Active Storage service.
Wraps the Aliyun OSS as an Active Storage service, use Aliyun official Ruby SDK for upload.
Add this line to your application's Gemfile:
gem "activestorage-aliyun"
And then execute:
$ bundle
NOTE! Current document work for Rails 6.1, if you are using Rails 6.0, please visit: https://github.com/huacnlee/activestorage-aliyun/tree/v0.6.4 You can also to use activestorage-aliyun 1.0.0 in Rails 6.0
config/storage.yml
aliyun:
service: Aliyun
access_key_id: 'your-oss-access-key-id'
access_key_secret: 'your-oss-access-key-secret'
bucket: 'bucket-name'
endpoint: 'https://oss-cn-beijing.aliyuncs.com'
# path prefix, default: /
path: 'my-app-files'
# Bucket public: true/false, default: true, for generate public/private URL.
public: true
aliyun:
service: Aliyun
access_key_id: 'your-oss-access-key-id'
access_key_secret: 'your-oss-access-key-secret'
bucket: 'bucket-name'
endpoint: 'https://oss-cn-beijing.aliyuncs.com'
public: false
# Custom host for get file url, if this present, upload still use `endpoint`, but download url will use this.
host: 'https://file.myhost.com'
Original File URL:
<%= image_tag @photo.image.url %>
Thumb with OSS image service:
class Photo < ApplicationRecord
def image_thumb_url(process)
self.image.url(params: { "x-oss-process" => process })
end
end
And then:
<%= image_tag @photo.image_thumb_url("image/resize,h_100,w_100") %>
If you want to get original filename (Include Chinese and other UTF-8 chars), for example: 演示文件 download.zip
, you need present disposition: :attachment
option.
#
<%= image_tag @photo.image.url(disposition: :attachment) %>
$ bin/test test/activestorage_aliyun_test.rb
# run a line
$ bin/test test/activestorage_aliyun_test.rb:129
The gem is available as open source under the terms of the MIT License.