9.5 Rails Aula anterior
1.4 - Criação do seu ambiente
9.6 - Exercício M09-E01
Na parte prática deste módulo, você irá desenvolver os conceitos dos vídeos na criação de um blog em Ruby on Rails. Nós sugerimos que você assista aos próximos vídeos enquanto resolve os exercícios.
Objetivos
- Criar um Blog com Ruby on Rails.
Dica
Preparamos um repositório no GitHub para servir como referência para resolver o exercício desta aula.
Você pode visualizar todos os commits no link abaixo:
https://github.com/estagioemprogramacao/store/commits/master
Navegue do commit mais antigo para o mais recente. Este aqui é o mais antigo:
https://github.com/estagioemprogramacao/store/commit/8025d3c50390814042525d40ce50a01494c68dea
Repare que colocamos instruções na mensagem de commit:
Criação da aplicação Store
Comandos:
rails new store --database=mysql --skip-test
As versões de Ruby, Rails e outras gems podem ficar defasadas com o tempo. Uma sugestão é você tentar fazer este exercício com as versões mais recentes dessas ferramentas.
Preparação dos containers com Docker
Para fazer o exercício, sugerimos que você rode ao mesmo tempo 3 containers de Docker. Esses containers vão compartilhar um volume de disco e uma rede. Você pode abrir cada container em uma aba/janela diferente do seu terminal.
-
Crie um volume chamado
epbundles
no Docker (onde gems de Ruby serão instaladas)docker volume create epbundles
-
Crie uma rede chamada
epnet
no Docker (caso não tenha criado nos exercícios do módulo 06)docker network create epnet
Container 1 - MySQL
Assim como fizemos nos exercícios do módulo 06, vamos criar um container de servidor de MySQL:
docker run -p 3306:3306 --name epsql --network epnet -e MYSQL_ALLOW_EMPTY_PASSWORD=yes mysql:5.7
Obs.: Caso você esteja utilizando um dispositivo com arquitetura ARM será necessário substituir
mysql:5.7
porbiarms/mysql:5.7
Ex.: Macbook M1 ou superior
Container 2 - Terminal bash para Rails
A ideia é usar este container para criar o projeto Rails, instalar gems, rodar
comandos ou o console Rails. Também usaremos para corrigir o exercício com o
comando ep 9.1
.
docker run --network epnet -it -e BUNDLE_PATH=/bundles -v ~/ep:/root/ep -v epbundles:/bundles ep bash
Por exemplo, para criar a sua aplicação você pode rodar algo parecido com os comandos abaixo nesse container:
mkdir -p ~/ep/exercicios/m9
gem install rails -v '6.1.7'
gem install rake -v '13.2.1'
cd ~/ep/exercicios/m9
rails new blog --database=mysql --skip-test --skip-spring --skip-action-mailer --skip-action-mailbox --skip-action-cable --skip-javascript
cd ~/ep/exercicios/m9/blog
Agora será necessário editar o arquivo config/database.yml:
# Substitua:
host: localhost
# Por:
host: epsql
Em seguida, basta rodar a linha seguinte para que o banco de dados seja criado:
rake db:create db:migrate
Container 3 - Servidor Rails
Depois de criar a aplicação blog
, você poderá iniciar um container rodando um
servidor Rails com o comando abaixo:
docker run --name epserver --network epnet -it -p 3000:3000 -w=/root/ep/exercicios/m9/blog -e BUNDLE_PATH=/bundles -v ~/ep:/root/ep -v epbundles:/bundles ep rails server --binding 0.0.0.0
Basta acessar o endereço abaixo no seu navegador para acessar a aplicação:
O servidor Rails automaticamente recarrega alterações feitas na maioria dos arquivos da sua aplicação. Então não é necessário reiniciar o servidor Rails a todo momento. Algumas alterações, por exemplo de arquivos YAML da pasta config, exigem que o servidor Rails seja reiniciado.
Instruções
-
Crie uma aplicação Rails chamada
blog
que usa o banco de dadosmysql
no diretório~/ep/exercicios/m9
.Dica: primeiro, assista à aula Rails: criação de uma loja online para entender como criar sua aplicação.
# Não esqueça de editar o arquivo config/database.yml # Substitua: host: localhost # Por: host: epsql
-
Inicie o Container 3 que roda o servidor Rails da nossa aplicação.
-
Crie uma página inicial para o Blog que lista todos os artigos. Para cada um, deve aparecer o
title
(título), oauthor
(nome do autor) e acategory
(categoria).Dica: primeiro, assista ao vídeo Rails: página inicial da loja. O corretor deste exercício não analisa estilos, então você não precisa se preocupar com o visual do seu Blog.
-
Crie o CRUD de
Article
(Artigo).Os atributos de um artigo são:
title
(título),author
(nome do autor),category
(categoria) econtent
(conteúdo/texto do artigo).Todos os atributos são campos de texto. O campo
content
precisa ser maior, os outros podem ser menores.Deve ser possível acessar o CRUD de artigos no caminho
/articles
. Para criar um artigo novo, por exemplo, será acessado o caminho/articles/new
.Dica: primeiro, assista ao vídeo Rails: CRUD de produtos. O corretor tentará criar, editar e remover artigos do seu Blog.
-
Atualize a página inicial do seu Blog com artigos de verdade, aqueles que você criou no CRUD de artigos. Crie uma página de artigo no caminho
/artigo/:id
e adicione as validações abaixo nos atributos do seu artigo:title
: deve ser presente e ter de 3 a 100 caracteres;author
: deve ser presente e ter de 2 a 20 caracteres;category
: deve ser presente e ter de 2 a 20 caracteres;content
: deve ser presente e ter no máximo 1.000 caracteres.Adicione apenas estas validações.
Dica: primeiro, assista ao vídeo Rails: colocando produtos na loja.
-
Crie uma página que lista todos os artigos de uma determinada categoria. A página deverá abrir num caminho do tipo
/categoria?c=Tecnologia
.Dica: primeiro, assista ao vídeo Rails: corrigindo categorias e busca.
-
Crie um contador de visualizações de páginas do seu Blog. Ao abrir o CRUD de artigos (
/articles
), deve existir o seguinte texto na página:O blog teve x visitas
, em quex
é o total de visitas do Blog.Dica: primeiro, assista ao vídeo Rails: quantidade de visualizações.
-
Corrija seu exercício usando o comando
ep 9.1
no terminal do Container 2.