Ruby

26 de Fevereiro de 2024 - @Walmir Neto


Hoje vou mostrar como fazer upload com https://github.com/avo-hq/avo e subi os arquivos para o AWS, e hoje vai ser daquele jeito, só o passo a passo

Instalando Active Store

A primeira etapa é instalar o Active Storage executando o seguinte no diretório do aplicativo Rails

rails active_storage:install && rails db:migrate

Criando variaantes de imagens

É só descomentar a gem image_processing

--- a/Gemfile
+++ b/Gemfile
 gem "bootsnap", require: false
 
 # Use Active Storage variants [<https://guides.rubyonrails.org/active_storage_overview.html#transforming-images>]
-# gem "image_processing", "~> 1.2"
+gem "image_processing", "~> 1.2"

Rodar um bundle install para instalar as dependências

Declarar associações

Vamos adicionar um avatar no model de User

--- a/app/models/user.rb
+++ b/app/models/user.rb
 class User < ApplicationRecord
   # Include default devise modules. Others available are:
   # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
   devise :database_authenticatable, :registerable, :recoverable, :rememberable, :validatable
+
+  has_one_attached :avatar
 end

Agora vamos gerar um resources para usuários

bin/rails g avo:resource user

No arquivo app/avo/resources/user.rb devemos adicionar o is_image: true no campo avatar

class Avo::Resources::User < Avo::BaseResource
  self.title = :email

  def fields
    field :email, as: :text
    field :password, as: :password
    field :avatar, as: :file, is_image: true
  end
end

De forma bem resumida é só isso que precisamos, para podemos adicionar uma foto ao usuário é só acessar localhost:3000/avo/resources/users e fazer o upload do avatar. Depois de salvo os arquivos ficarão na pasta storage, no me caso ficou assim:

storage
├── 00
│   └── yq
│       └── 00yqcs0j8un5q94yzkr1xxd00cnx
└── xk
    └── sr
        └── xksrvu5ip11qdspqw6jx9wb14ve7