Como usar o PostgreSQL com sua aplicação Ruby on Rails no Ubuntu 20.04

Introdução

Ao usar o framework web Ruby on Rails, sua aplicação usará SQLite como banco de dados por padrão. SQLite é um banco de dados relacional leve, portátil e amigável ao usuário, que se sai especialmente bem em ambientes com pouca memória, então funcionará bem na maioria dos casos. No entanto, para aplicações altamente complexas que precisam de maior integridade de dados confiável e extensibilidade programática, um banco de dados PostgreSQL será uma escolha mais robusta e flexível. Você precisará realizar passos adicionais para configurar seu setup Ruby on Rails para usar PostgreSQL.

Neste tutorial, você configurará um ambiente de desenvolvimento Ruby on Rails conectado a um banco de dados PostgreSQL em um servidor Ubuntu 20.04. Você instalará e configurará o PostgreSQL, e então testará sua configuração criando uma aplicação Rails que usa PostgreSQL como seu servidor de banco de dados.

Pré-requisitos

Este tutorial requer o seguinte:

Passo 1 – Instalando o PostgreSQL

Para configurar Ruby on Rails com PostgreSQL como um banco de dados para sua aplicação web, você primeiro instalará o banco de dados no seu servidor.

Usando privilégios sudo, atualize seu índice de pacotes APT para garantir que seus repositórios estejam atualizados:

  1. sudo apt update

A seguir, instale o PostgreSQL e suas bibliotecas de desenvolvimento:

  1. sudo apt install postgresql postgresql-contrib libpq-dev

No comando anterior, o pacote postgresql contém o programa principal do PostgreSQL, enquanto o postgresql-contrib adiciona várias funcionalidades do PostgreSQL que estendem suas capacidades. libpq-dev é uma biblioteca do PostgreSQL que permite que os clientes enviem consultas e recebam respostas do servidor back-end, o que permitirá que sua aplicação se comunique com seu banco de dados.

Depois que o PostgreSQL e suas dependências estiverem instalados, o próximo passo é criar uma função que sua aplicação Rails usará posteriormente para criar seu banco de dados.

Passo 2 – Criando uma Nova Função de Banco de Dados

No PostgreSQL, funções podem ser usadas para organizar permissões e autorizações da mesma forma que os usuários podem no Linux. Neste passo, você criará uma nova função de superusuário para seu nome de usuário do Linux que permitirá que você crie e configure bancos de dados dentro do sistema PostgreSQL.

Para criar uma função de superusuário do PostgreSQL, execute o seguinte comando, substituindo a palavra destacada pelo nome de usuário do Ubuntu 20.04:

  1. sudo -u postgres createuser -s sammy -P

Já que você especificou a bandeira -P, você será solicitado a inserir uma senha para sua nova função. Insira sua senha desejada, certificando-se de registrá-la para que você possa usá-la em um arquivo de configuração em um passo posterior.

Você usa `createuser` para criar uma função chamada `sammy` (ou o nome de usuário preferido). A bandeira `-s` dá a este usuário privilégios de super usuário, e `sudo -u` permite que você execute o comando a partir da conta `postgres` que é criada automaticamente ao instalar o PostgreSQL.

Nota: Como o modo de autenticação para o PostgreSQL no Ubuntu começa como `ident`, por padrão, um usuário do Ubuntu só pode operar no PostgreSQL com uma função de mesmo nome. Para mais informações, consulte a documentação oficial do PostgreSQL sobre autenticação.

Se você não usou a bandeira `-P` e deseja definir uma senha para a função depois de criá-la, entre no console do PostgreSQL com o seguinte comando:

  1. sudo -u postgres psql

Você receberá a seguinte saída, juntamente com o prompt para o console do PostgreSQL:

Output
psql (12.12 (Ubuntu 12.12-0ubuntu0.20.04.1)) Type "help" for help. postgres=#

O console do PostgreSQL é indicado pelo prompt `postgres=#`. No prompt do PostgreSQL, insira este comando para definir a senha para a nova função de banco de dados, substituindo o nome destacado pelo que você criou:

  1. \password sammy

O PostgreSQL solicitará uma senha. Insira sua senha desejada no prompt e confirme.

Agora, saia do console do PostgreSQL digitando este comando:

  1. \q

Seu prompt habitual agora reaparecerá.

Neste passo, você criou uma nova função do PostgreSQL com privilégios de super usuário. Agora você está pronto para criar um novo aplicativo Rails que usa esta função para criar um banco de dados.

Etapa 3 – Criando uma Nova Aplicação Rails

Com uma função configurada para o PostgreSQL, você pode agora criar uma nova aplicação Rails configurada para usar o PostgreSQL como banco de dados.

Primeiro, vá para o diretório principal:

  1. cd ~

Crie uma nova aplicação Rails neste diretório, substituindo nomedaaplicacao pelo nome desejado para sua aplicação:

  1. rails new appname -d=postgresql

A opção -d=postgresql define o PostgreSQL como o banco de dados.

Após executar este comando, uma nova pasta com o nome nomedaaplicacao aparecerá no seu diretório principal, contendo todos os elementos básicos de uma aplicação Rails.

A seguir, entre no diretório da aplicação:

  1. cd appname

Agora que você criou uma nova aplicação Rails e está no diretório principal do seu projeto, você pode configurar e criar o banco de dados PostgreSQL de dentro da sua aplicação Rails.

Etapa 4 – Configurando e Criando seu Banco de Dados

Brazilian Portuguese
Ao criar os bancos de dados de desenvolvimento e test para sua aplicação, o Rails usará a função do PostgreSQL que você criou para o nome de usuário do Ubuntu. Para garantir que o Rails crie esses bancos de dados, você irá alterar o arquivo de configuração do banco de dados do seu projeto. Em seguida, você irá criar seus bancos de dados.

Uma das alterações de configuração a serem feitas para sua aplicação Rails é adicionar a senha para a função do PostgreSQL criada na última etapa. Para manter informações sensíveis, como senhas, seguras, é recomendável armazenar a senha em uma variável de ambiente em vez de escrevê-la diretamente no arquivo de configuração.

Para armazenar sua senha em uma variável de ambiente no login, execute o seguinte comando, substituindo NOME_DA_APLICACAO pelo nome de sua aplicação e Senha_Do_Role_Do_PostgreSQL pela senha criada na última etapa:

  1. echo 'export APPNAME_DATABASE_PASSWORD="PostgreSQL_Role_Password"' >> ~/.bashrc

Este comando escreve o comando export em seu arquivo ~/.bashrc, para que a variável de ambiente seja definida no login.

Para exportar a variável para a sessão atual, use o comando source:

  1. source ~/.bashrc

Agora que você armazenou sua senha em sua variável de ambiente, você pode alterar o arquivo de configuração.

Abra o arquivo de configuração do banco de dados de sua aplicação em seu editor de texto preferido. Este tutorial usará o nano:

  1. nano config/database.yml

Sob a seção default, encontre a linha que diz pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> e adicione as linhas destacadas a seguir, preenchendo suas credenciais e a variável de ambiente que você criou. Deve parecer algo assim:

config/database.yml
...
default: &default
  adapter: postgresql
  encoding: unicode
  # Para detalhes sobre o pooling de conexão, consulte o guia de configuração do Rails
  # http://guides.rubyonrails.org/configuring.html#database-pooling
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: sammy
password: <%= ENV['APPNAME_DATABASE_PASSWORD'] %>

development:
  <<: *default
  database: appname_development
...

Esta atualização fará com que a aplicação Rails execute o banco de dados com o papel e senha corretos. Salve e saia pressionando CTRL + x, Y, então ENTER.

Para mais informações sobre a configuração de bancos de dados no Rails, consulte a documentação do Rails.

Agora que você fez alterações no config/database.yml, crie os bancos de dados da sua aplicação usando o comando rails:

  1. rails db:create

Assim que o Rails criar o banco de dados, você receberá a seguinte saída:

Output
Created database 'appname_development' Created database 'appname_test'

Como a saída sugere, este comando criou um banco de dados development e test no seu servidor PostgreSQL.

Agora você possui um banco de dados PostgreSQL conectado à sua aplicação Rails. Para garantir que sua aplicação está funcionando, você irá testar sua configuração agora.

Passo 5 – Testando Sua Configuração

Para testar se sua aplicação é capaz de usar o banco de dados PostgreSQL, execute sua aplicação web para que ela apareça em um navegador.

Usando o comando rails server, execute sua aplicação web no servidor web integrado na sua aplicação Rails, Puma:

  1. rails server --binding=127.0.0.1

--binding vincula sua aplicação a um IP especificado. Por padrão, esta bandeira vinculará o Rails a 0.0.0.0, o que significa que o Rails ouvirá todas as interfaces, então é mais seguro usar 127.0.0.1 para especificar o localhost. Por padrão, a aplicação ouve na porta 3000.

Assim que sua aplicação Rails estiver em execução, seu prompt de comando desaparecerá, substituído por esta saída:

Output
=> Booting Puma => Rails 7.0.4 application starting in development => Run `bin/rails server --help` for more startup options Puma starting in single mode... * Puma Version 5.6.5 (ruby 3.1.2-p20) ("Birdie's Version") * Min threads: 5 * Max threads: 5 * Environment: development * Listening on tcp://127.0.0.1:3000 Use Ctrl-C to stop

Para testar se sua aplicação está em execução, abra uma nova janela de terminal em seu servidor e use o comando curl para enviar uma solicitação para 127.0.0.1:3000:

  1. curl http://127.0.0.1:3000

Você receberá muita saída em HTML, terminando em algo como:

Output
... <strong>Rails version:</strong> 7.0.4<br /> <strong>Ruby version:</strong> 3.1.2 (x86_64-linux) </p> </section> </div> </body> </html>

Se sua aplicação Rails estiver em um servidor remoto e você quiser acessá-la através de um navegador da web, você pode vinculá-la ao endereço IP público do seu servidor. Primeiro, abra a porta 3000 no seu firewall:

  1. sudo ufw allow 3000

Em seguida, procure o endereço IP público do seu servidor. Você pode fazer isso executando o seguinte comando curl:

  1. curl http://icanhazip.com

Isso retornará seu endereço IP público. Use-o com o comando rails server, substituindo server_public_IP pelo IP público do seu servidor:

  1. rails server --binding=server_public_IP

Agora você poderá acessar sua aplicação Rails em um navegador da web local através do endereço IP público do servidor na porta 3000 visitando:

http://server_public_IP:3000

Neste URL, você encontrará uma página Ruby on Rails:

Se você puder acessar a página inicial, sua aplicação está configurada corretamente e conectada ao banco de dados PostgreSQL.

Depois de testar a configuração, se você deseja fechar a porta 3000, use o seguinte comando.

  1. sudo ufw delete allow 3000

Conclusão

Neste tutorial, você criou uma aplicação web Ruby on Rails configurada para usar o PostgreSQL como banco de dados em um servidor Ubuntu 20.04. Se você quiser aprender mais sobre a linguagem de programação Ruby, confira nossa série sobre Como Programar em Ruby.

Para mais informações sobre a escolha de um banco de dados para sua aplicação, confira nosso tutorial sobre as diferenças e casos de uso entre SQLite, PostgreSQL e MySQL. Se você quiser ler mais sobre como usar bancos de dados, veja o artigo Uma Introdução a Consultas no PostgreSQL, ou explore o produto de Bancos de Dados Gerenciados da DigitalOcean.

Source:
https://www.digitalocean.com/community/tutorials/how-to-use-postgresql-with-your-ruby-on-rails-application-on-ubuntu-20-04