问题
Until now, I have been using Amazon S3 for storing users' files.
All what has been needed to do here was:
- specify Amazon S3 credentials to the bucket
- add
'aws-sdk'
gem to the Gemfile - 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