Como integrar seu projeto Ruby on Rails a um banco de dados PostgreSQL gratuito usando Supabase
Se você está acompanhando nossa série sobre como construir uma aplicação web com Ruby on Rails usando a API da NASA, chegou a hora de dar um passo fundamental: integrar seu projeto a um banco de dados PostgreSQL real. Neste artigo, vamos usar o Supabase, uma plataforma moderna, gratuita e com dashboard completo para gerenciar bancos de dados na nuvem.
Perdeu a parte anterior? Volte e veja como começamos: Consultando uma API com Ruby on Rails.
Por que usar o Supabase?
Supabase é uma alternativa open-source ao Firebase, com foco em desenvolvedores que precisam de banco de dados, autenticação, API e storage — tudo pronto para produção. Neste projeto, vamos usar apenas o PostgreSQL.
- Plano gratuito com 500MB de armazenamento de banco de dados
- Interface gráfica para rodar queries SQL e gerenciar tabelas
- Fornece string de conexão compatível com Rails
- Possui recursos avançados como autenticação e APIs REST
Passo a passo: criando o banco no Supabase
- Acesse https://supabase.com e crie uma conta (você pode usar GitHub).
- Clique em “New Project” e dê um nome ao seu projeto.
- Escolha uma senha para o banco e uma região (como US East ou South America).
- Após a criação, clique na aba Connect para copiar a connection string:
postgresql://postgres:[YOUR-PASSWORD]@db.seuprojeto.supabase.co:5432/postgres
Instalando as gems necessárias
Antes de conectar ao banco, adicione as seguintes gems ao seu Gemfile
:
gem 'activerecord'
gem 'pg'
Depois, execute o comando:
bundle install
Step by Step: Configurar PostgreSQL no Rails
- Verifique se o projeto tem suporte a ActiveRecord
No arquivoconfig/application.rb
, confirme se a linha abaixo está presente e descomentada:
require "active_record/railtie"
Se estiver comentada ou ausente, adicione acima de Bundler.require
.
- Configure o banco no Gemfile
Garanta que a gempg
esteja incluída:
gem 'pg'
Depois rode:
bundle install
- Crie ou edite o arquivo
config/database.yml
:
default: &default
adapter: postgresql
encoding: unicode
pool: 5
timeout: 5000
username: <%= ENV['PG_USER'] %>
password: <%= ENV['PG_PASSWORD'] %>
host: <%= ENV['PG_HOST'] %>
port: <%= ENV['PG_PORT'] %>
database: <%= ENV['PG_DATABASE'] %>
development:
<<: *default
test:
<<: *default
database: <%= ENV['PG_DATABASE_TEST'] || "#{ENV['PG_DATABASE']}_test" %>
- Crie o arquivo
.env
na raiz do projeto:
PG_USER=postgres
PG_PASSWORD=sua_senha
PG_HOST=host-do-supabase-ou-localhost
PG_PORT=5432
PG_DATABASE=postgres
Use dotenv-rails
se quiser carregar essas variáveis automaticamente em ambiente de desenvolvimento.
- Configure PostgreSQL no macOS (Apple Silicon):
brew install libpq
brew link --force libpq
echo 'export PATH="/opt/homebrew/opt/libpq/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc
Se necessário, rode também:
bundle config build.pg --with-pg-config=/opt/homebrew/opt/libpq/bin/pg_config
bundle install
- Crie e migre o banco:
bundle exec rails db:create db:migrate
Testando a conexão com um scaffold simples
Para garantir que está tudo funcionando corretamente, crie um scaffold básico:
rails generate scaffold Note title:string body:text
rails db:migrate
Depois disso, acesse http://localhost:3000/notes
no navegador e experimente adicionar registros. Se tudo estiver certo, a conexão com o banco está funcionando perfeitamente.
Conclusão
Integrar sua aplicação Ruby on Rails com o Supabase é um grande passo rumo a um projeto profissional. Agora que você conta com um banco de dados real, é possível implementar funcionalidades robustas como autenticação, favoritos e persistência completa.
Se surgirem dúvidas ou sugestões, compartilhe nos comentários. Vamos evoluir juntos 🚀