在Active Storage云中修改映像

时间:2018-12-10 11:39:51

标签: google-cloud-platform ruby-on-rails-5 google-cloud-storage rails-activestorage

我正在使用Rails 5.2和GCS作为云服务。 我想给用户一个裁剪和旋转用户图像的机会。 用户有很多图片,图片中附加了一个:image_file

在开发中,我使用这种方法:

class Image

...

  def  rotate(degree)
    image =  MiniMagick::Image.new(ActiveStorage::Blob.service.send(:path_for, self.image_file.key))
    image.rotate "#{degree}"
    image.write(ActiveStorage::Blob.service.send(:path_for, self.image_file.key))
    self.image_file.blob.analyze
  end

...

end

但是我不知道如何在云中获取图像文件。

我已将文件下载到本地存储并进行了所有需要的操作。

现在只需要替换(删除当前文件并创建一个具有相同名称的新文件)云中的文件(如果可能的话,不更改数据库记录中的任何内容),但是我不知道该怎么做具有活动存储。

至少我需要获取云中的 文件名 ,以仅使用裸google-cloud-ruby

1 个答案:

答案 0 :(得分:0)

要使用Ruby on Rails列出存储在Cloud Storage存储桶中的文件,请参阅定义的代码示例here。您还可以upload files到云存储分区,并使用Ruby on Rails从delete files到它们。

此外,由于您允许客户修改Cloud Storage存储桶中的文件,因此您可以考虑使用versioning。这会增加您的成本,但会为您的客户提供可靠性。

以下是Ruby on Google Cloud Platform文档的链接,可能会对您有所帮助。