Rails 使用 Active Storage 往七牛上存东西,发生问题,求解

lukefan · 2018年06月24日 · 最后由 lukefan 回复于 2018年06月26日 · 2397 次阅读

我在使用 Active_Storage 的时候,遇到了一个奇怪问题。 这么多年来,一直都在使用七牛云,做了设置: storage.yml 里面

qiniu:
    service: Qiniu
    access_key: <%= Rails.application.credentials.dig(:qiniu, :access_key) %>
    secret_key: <%= Rails.application.credentials.dig(:qiniu, :secret_key) %>
    bucket: <%= Rails.application.credentials.dig(:qiniu, :bucket) %>
    domain: <%= Rails.application.credentials.dig(:qiniu, :domain) %>

development.rb 里面

config.active_storage.service = :qiniu

_form.html.erb 里面

<%= form.file_field :image, direct_upload: true%>

在上传文件的时候,却得到了这样的提示:

NameError (Cannot load `Rails.config.active_storage.service`:
uninitialized constant ActiveStorage::Service::QiniuService::Qiniu):

使用 local 的时候,没有问题。 七牛的全套设置,是在其他项目里面一直在用的,肯定没有问题。

请问我少设置了什么吗?

当我添加了: rb config.active_storage.analyzers = [ ActiveStorage::Analyzer::QiniuImageAnalyzer, ActiveStorage::Analyzer::QiniuVideoAnalyzer ] 之后,显示 analyzers 失败。

我很喜欢用 CarrierWave 里面的 remote_url,直接抓取外面的资源,现在怎么搞? 另外,原来 carrierwave 里面,是在上传的时候,做图像处理的,还可以添加水印、圆角什么的,现在怎么搞?是不是都要到显示的时候来处理?这样的话,是不是每次显示的时候都要运算,原来是分成不同的版本存下来的,显示的时候直接调用就好了。

另外,询问一下,mongoid 上怎么用这个东西?CarrierWave 是有 mongoid 的整合 gem 的。

没看到 qiniu 的适配器描述,activestorage 原生不支持 qiniu 的。

升级了最新的版本,问题解决了。 现在的问题是版本问题,如何将图片按分辨率,分版本上传上去,然后直接下载。 我上传了一张 20M 的照片,然后就悲剧了。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号