多年来,AWS S3 一直是一项可靠的服务,长期以来,它是唯一的选择。但是,在过去几年中,出现了更多兼容的S3 API的云存储选项。这些服务有时可以提供更好的定价和速度。
# Terminal
bundle add aws-sdk-s3
rails g scaffold pictures name
rails active_storage:install
yarn add @rails/activestorage
# app/javascript/application.js
import * as ActiveStorage from "@rails/activestorage"
ActiveStorage.start()
# models/picture.rb
class Picture < ApplicationRecord
has_one_attached :image
end
# views/pictures/_form.html.erb
# views/pictures/_picture.html.erb
<%= image_tag url_for(picture.image) if picture.image.attached? %>
# pictures_controller.rb
def picture_params
params.require(:picture).permit(:name, :image)
end
# config/environments/production.rb
config.active_storage.service = :cloud
# config/storage.yml
# Backblaze B2 CLI tool
https://www.backblaze.com/b2/docs/quick_command_line.html
chmod +x b2-darwin
./b2-darwin authorize-account
./b2-darwin update-bucket --corsRules '[
{
"corsRuleName": "downloadFromAnyOriginWithUpload",
"allowedOrigins": [
"*"
],
"allowedHeaders": [
"*"
],
"allowedOperations": [
"s3_put"
],
"maxAgeSeconds": 3600
}
]' exampledr allPublic