Skip to main content

active-storage-setup

Configures Active Storage for file uploads with variants and direct uploads. Use when adding file uploads, image attachments, document storage, generating thumbnails, or when user mentions Active Storage, file upload, attachments, or image processing. WHEN NOT: Storing data in database columns, external URL references, static assets in the asset pipeline, or simple text/JSON storage.

Informações da origem

Repositório
ThibautBaissac/rails_ai_agents
Última atividade na origem
11 de maio de 2026 às 07:05
Idioma detectado do SKILL.md
inglês
Estrelas
665
Forks
82

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Explorador de arquivos
5 arquivos

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
name
active-storage-setup
description
Configures Active Storage for file uploads with variants and direct uploads. Use when adding file uploads, image attachments, document storage, generating thumbnails, or when user mentions Active Storage, file upload, attachments, or image processing. WHEN NOT: Storing data in database columns, external URL references, static assets in the asset pipeline, or simple text/JSON storage.
paths
app/models/**/*.rb, app/controllers/**/*.rb, config/storage.yml
# Active Storage Setup for Rails 8 ## Overview Active Storage handles file uploads in Rails: - Cloud storage (S3, GCS, Azure) or local disk - Image variants (thumbnails, resizing) - Direct uploads from browser - Polymorphic attachments ## Quick Start ```bash # Install Active Storage (if not already) bin/rails active_storage:install bin/rails db:migrate # Add image processing bundle add image_processing ``` ## Configuration ### Storage Services ```yaml # config/storage.yml local: service: Disk root: <%= Rails.root.join("storage") %> test: service: Disk root: <%= Rails.root.join("tmp/storage") %> amazon: service: S3 access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %> secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %> region: eu-west-1 bucket: <%= Rails.application.credentials.dig(:aws, :bucket) %> google: service: GCS credentials: <%= Rails.root.join("config/gcs-credentials.json") %> project: my-project bucket: my-bucket ``` ### Environment Config ```ruby # config/environments/development.rb config.active_storage.service = :local # config/environments/production.rb config.active_storage.service = :amazon ``` ## Model Attachments ### Single Attachment ```ruby # app/models/user.rb class User < ApplicationRecord has_one_attached :avatar # With variant defaults has_one_attached :avatar do |attachable| attachable.variant :thumb, resize_to_limit: [100, 100] attachable.variant :medium, resize_to_limit: [300, 300] end end ``` ### Multiple Attachments ```ruby # app/models/event.rb class Event < ApplicationRecord has_many_attached :photos has_many_attached :documents do |attachable| attachable.variant :preview, resize_to_limit: [200, 200] end end ``` ## TDD Workflow ``` Active Storage Progress: - [ ] Step 1: Add attachment to model - [ ] Step 2: Write model spec for attachment - [ ] Step 3: Add validations (type, size) - [ ] Step 4: Create upload form - [ ] Step 5: Handle in controller - [ ] Step 6: Display in views - [ ] Step 7: Test upload flow ``` ## Testing Attachments See [testing.md](references/testing.md) for model specs, factory traits, and request specs. Key patterns: - Use `fixture_file_upload` in request specs - Define `:with_avatar` factory traits using `after(:build)` - Test `be_attached` and variant presence in model specs ## Validations Use the `active_storage_validations` gem for declarative validation, or write manual `validate` methods. See [validations.md](references/validations.md) for both approaches. ```ruby # Gemfile gem 'active_storage_validations' ``` ## Image Variants Define named variants on the model attachment using `resize_to_fill`, `resize_to_limit`, or `resize_to_cover`. See [variants-and-views.md](references/variants-and-views.md) for variant operations, view helpers, and form examples. ## Controller and Service Handling - Permit `:avatar` for single uploads, `photos: []` for multiple - Use `purge` to remove attachments, with optional Turbo Stream response - Use `rails_blob_path` or `send_data` for downloads See [controller-and-service.md](references/controller-and-service.md) for full controller examples, service methods, direct uploads setup, and performance tips. ## Checklist - [ ] Active Storage installed and migrated - [ ] Storage service configured - [ ] Image processing gem added (if using variants) - [ ] Attachment added to model - [ ] Validations added (type, size) - [ ] Variants defined - [ ] Controller permits attachment params - [ ] Form handles file upload - [ ] Tests written for attachments - [ ] Direct uploads configured (if needed) ## References - [testing.md](references/testing.md) - Model specs, factory traits, request specs - [validations.md](references/validations.md) - Gem-based and manual validation examples - [variants-and-views.md](references/variants-and-views.md) - Variant definitions, view helpers, upload forms - [controller-and-service.md](references/controller-and-service.md) - Controllers, service methods, direct uploads, performance
Ver no GitHub