Until now, I have been using Amazon S3 for storing users\' files.
All what has been needed to do here was:
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"
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