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, a sua aplicação utilizará o SQLite como banco de dados por padrão. O SQLite é um banco de dados relacional leve, portátil e amigável que funciona especialmente bem em ambientes com pouca memória, sendo adequado para muitos casos. No entanto, para aplicações altamente complexas que necessitam de uma integridade de dados mais confiável e extensibilidade programática, um banco de dados PostgreSQL será uma escolha mais robusta e flexível. Serão necessárias etapas adicionais para configurar o ambiente Ruby on Rails para usar o 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, em seguida, testará a configuração criando uma aplicação Rails que utiliza o PostgreSQL como servidor de banco de dados.

Pré-requisitos

Este tutorial requer o seguinte:

Passo 1 – Instalando o PostgreSQL

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

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

  1. sudo apt update

Em seguida, 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 ampliam suas capacidades. O libpq-dev é uma biblioteca do PostgreSQL que permite aos clientes enviar consultas e receber respostas do servidor de back-end, o que permitirá que sua aplicação se comunique com seu banco de dados.

Uma vez que o PostgreSQL e suas dependências estão 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, as funções podem ser usadas para organizar permissões e autorização da mesma forma que os usuários podem no Linux. Neste passo, você criará uma nova função de superusuário para o 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 seu nome de usuário do Ubuntu 20.04:

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

Como você especificou a flag -P, será solicitado que você insira uma senha para sua nova função. Insira a senha desejada, certificando-se de registrá-la para que você possa usá-la em um arquivo de configuração em um próximo passo.

Você usa `createuser` para criar uma função chamada `sammy` (ou o nome de usuário que preferir). A opção `-s` concede privilégios de superusuário a este 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 opção `-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, digite 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. Digite sua senha desejada no prompt e confirme-a.

Agora, saia do console do PostgreSQL digitando este comando:

  1. \q

Seu prompt usual agora reaparecerá.

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

Passo 3 – Criando uma Nova Aplicação Rails

Com uma função configurada para o PostgreSQL, agora você pode 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 que deseja chamar 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 de uma aplicação Rails básica.

Em seguida, acesse o diretório da aplicação:

  1. cd appname

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

Passo 4 – Configurando e Criando Seu Banco de Dados

Ao criar os bancos de dados development e test para sua aplicação, o Rails usará a função PostgreSQL que você criou para o nome de usuário do Ubuntu. Para garantir que o Rails crie esses bancos de dados, você alterará o arquivo de configuração do banco de dados do seu projeto. Em seguida, você 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 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 APPNAME pelo nome do seu aplicativo e PostgreSQL_Role_Password pela senha que você criou na última etapa:

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

Este comando escreve o comando export no seu arquivo ~/.bashrc para que a variável de ambiente seja configurada 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 no editor de texto de sua preferência. Este tutorial usará o nano:

  1. nano config/database.yml

No trecho default, encontre a linha que diz pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> e adicione as seguintes linhas destacadas, preenchendo suas credenciais e a variável de ambiente que você criou. Deve ficar algo assim:

config/database.yml
...
default: &default
  adapter: postgresql
  encoding: unicode
  # Para obter detalhes sobre o agrupamento de conexões, 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 a função e senha corretas. Salve e saia pressionando CTRL + x, Y, e então ENTER.

Para obter 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

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

Output
Created database 'appname_development' Created database 'appname_test'

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

Agora você tem um banco de dados PostgreSQL conectado à sua aplicação Rails. Para garantir que sua aplicação esteja funcionando, você 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, este sinalizador vinculará o Rails a 0.0.0.0, o que significa que o Rails ouvirá todas as interfaces, portanto, é mais seguro usar 127.0.0.1 para especificar o localhost. Por padrão, a aplicação escuta na porta 3000.

Uma vez que sua aplicação Rails esteja 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á muitos resultados 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, 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

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

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

Após testar a configuração, se desejar fechar a porta 3000, utilize 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 deseja 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 quiser ler mais sobre como utilizar bancos de dados, veja o artigo Uma Introdução às Consultas no PostgreSQL, ou explore o produto 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