- Programação

Como usar o Rails ActiveStorage para upload e armazenamento de arquivos

O Rails ActiveStorage é uma solução eficiente e integrada para o upload e armazenamento de arquivos em aplicações Rails. Com ele, é possível gerenciar arquivos como imagens, documentos e outros tipos de mídia, tanto localmente quanto em serviços de armazenamento em nuvem. Neste artigo, vamos explorar como configurar e usar o ActiveStorage para facilitar o upload e o armazenamento de arquivos em sua aplicação Rails.

1. Instalando o ActiveStorage

Para começar a usar o ActiveStorage, é necessário adicionar a gem activestorage ao seu projeto Rails. A partir da versão Rails 5.2, o ActiveStorage já vem integrado, mas você pode precisar rodar o comando de instalação.

No terminal, execute o seguinte comando:

rails active_storage:install

Isso gerará uma migração que cria as tabelas active_storage_blobs e active_storage_attachments, responsáveis pelo armazenamento dos arquivos e pela associação entre arquivos e modelos.

2. Configurando o Storage

O ActiveStorage suporta dois tipos principais de armazenamento: local e em nuvem (como Amazon S3, Google Cloud Storage, entre outros). Para configurar o armazenamento local, basta garantir que o ambiente de desenvolvimento e produção esteja configurado corretamente no arquivo config/storage.yml.

Para armazenar arquivos localmente, no ambiente de desenvolvimento, o arquivo storage.yml pode ser configurado da seguinte forma:

development:
  local:
    service: Disk
    root: <%= Rails.root.join("storage") %>

production:
  local:
    service: Disk
    root: <%= Rails.root.join("storage") %>

Se você preferir armazenar arquivos em nuvem, como o Amazon S3, é necessário adicionar as credenciais no arquivo config/storage.yml e configurar o serviço adequado.

3. Associando Arquivos aos Modelos

Para associar um arquivo a um modelo, use o método has_one_attached ou has_many_attached, dependendo de como você deseja associar os arquivos. Vamos supor que você tenha um modelo User e deseja permitir o upload de uma foto de perfil.

No seu modelo User, adicione a seguinte linha:

class User < ApplicationRecord
  has_one_attached :profile_picture
end

4. Carregando Arquivos no Formulário

No formulário de upload, você pode usar o campo file_field para permitir que os usuários enviem arquivos. Aqui está um exemplo simples de como fazer isso no formulário de edição de um usuário.

<%= form_with(model: @user, local: true) do |form| %>
  <%= form.label :profile_picture %>
  <%= form.file_field :profile_picture %>

  <%= form.submit %>
<% end %>

5. Exibindo Arquivos no Aplicativo

Para exibir os arquivos enviados, o ActiveStorage oferece o método url_for, que gera a URL pública do arquivo. No caso de uma imagem de perfil, por exemplo, você pode exibir a foto do usuário da seguinte forma:

<% if @user.profile_picture.attached? %>
  <%= image_tag url_for(@user.profile_picture) %>
<% else %>
  <p>No profile picture available</p>
<% end %>

6. Gerenciando Arquivos

Além de associar e exibir arquivos, o ActiveStorage também oferece métodos para excluir ou modificar os arquivos. Para excluir um arquivo, você pode usar o método purge:

@user.profile_picture.purge

Isso removerá o arquivo tanto do banco de dados quanto do sistema de armazenamento.

7. Conclusão

O Rails ActiveStorage facilita o processo de upload e armazenamento de arquivos, seja localmente ou na nuvem. Com a configuração correta e o uso das ferramentas integradas, você pode gerenciar arquivos de forma eficiente e simples. O ActiveStorage ainda oferece recursos avançados, como processamento de imagens e manipulação de arquivos. Isso torna-o uma solução poderosa e flexível para aplicações Rails.

Para mais dicas e truques sobre Rails e outras tecnologias, continue acompanhando o blog Demo Rodável.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *