How to use Rails and Paperclip to store photos on Google Cloud Storage?

和自甴很熟 提交于 2019-12-31 09:04:07

问题


Until now, I have been using Amazon S3 for storing users' files.

All what has been needed to do here was:

  1. specify Amazon S3 credentials to the bucket
  2. add 'aws-sdk' gem to the Gemfile
  3. and in the model:

  has_attached_file :avatar, 
                    :styles => { :big => "100x100#", :thumb => "25x25#" },
                    :storage => :s3,
                    :s3_credentials => "#{Rails.root}/config/s3.yml",
                    :path => ":rails_root/public/users/:id/:style/:basename.:extension",
                    :url => "/users/:id/:style/:basename.:extension"

To set the Amazon S3 adapter. That was all.

But how to set up Google cloud engine? So far I found only the fog gem , which I could use.

However, how should I configure the model to automatically store all uploaded files on Google servers?


回答1:


Ok, so I made it work this way:

Gemfile:

gem 'fog'

config/gce.yml:

development:
  provider: Google
  google_storage_access_key_id: XXX
  google_storage_secret_access_key: XXX

model:

  has_attached_file :avatar, 
                    :styles => { :big => "100x100#", :thumb => "25x25#" },
                    :storage => :fog,
                    :fog_credentials => "#{Rails.root}/config/gce.yml",
                    :fog_directory => "your bucket name",
                    :path => ":rails_root/public/users/:id/:style/:basename.:extension",
                    :url => "/users/:id/:style/:basename.:extension"



回答2:


For Rails > 5.2, Active Storage is available. The docs are a great place to start with.

In config/environments/production.rb :

# Store files on Google cloud storage.
config.active_storage.service = :google

In config/storage.yml :

google:
  service: GCS
  credentials: <%= Rails.root.join("path/to/keyfile.json") %>
  project: ""
  bucket: ""

In your User Model :

class User < ApplicationRecord
  has_one_attached :avatar
end


来源:https://stackoverflow.com/questions/25058751/how-to-use-rails-and-paperclip-to-store-photos-on-google-cloud-storage

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!