
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/postgresInstalando 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 installStep 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 gempgesteja 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 .envna raiz do projeto:
PG_USER=postgres
PG_PASSWORD=sua_senha
PG_HOST=host-do-supabase-ou-localhost
PG_PORT=5432
PG_DATABASE=postgresUse 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 ~/.zshrcSe 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:migrateTestando 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:migrateDepois 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 🚀
