Você está na página 1de 12

Começando com o​ ​Rails​!

Nós vamos usar o Rails para criar nossa aplicação de


Back-End.

LEMBRE-SE​: o Back-End é aplicação que vai apenas gerenciar


os dados.

O Rails segue a arquitetura que nós vimos na dinâmica: o ​MVC


(Model View Controller)​.

Ele funciona igualzinho como foi na dinâmica do Instagram


Humano:
1. O Back-End é feito para aceitar ​requisições HTTP​. Essas
requisições são feitas para uma ​rota ​da aplicação.
2. tudo começa nas ​rotas​: uma rota aponta para uma ​ação
de uma ​controller​;
3. a ​controller​ utiliza as ​models​ necessárias para pegar os
dados que aquela ação da controller necessita;
4. As ​models​ possuem funções que permitem o acesso ao
banco de dados​;
5. As ​models​ devolvem os dados solicitados para a
controller​ e a controller pede para a ​view​ montar a
resposta que será devolvida para quem fez a requisição

Você vai perceber essa arquitetura em ação na prática.

Mas primeiro, você precisa de um ambiente com o Rails


instalado

Instalando o Rails no Linux


Se você está usando um Linux, pode instalar utilizando RVM
(​Ruby Version Manager​). Rode os seguintes comandos:

gpg --keyserver hkp://keys.gnupg.net --recv-keys


409B6B1796C275462A1703113804BB82D39DC0E3
7D2BAF1CF37B13E2069D6956105BD0E739499BDB

curl -sSL https://get.rvm.io | bash -s stable --rails

Se não funcionar, siga o passo a passo na ​documentação do


RVM​.
Utilizando o CodeAnywhere

Para essa prática você pode usar o ​CodeAnywhere​ para criar


sua aplicação com o Rails.

Basta criar um container com ​Ruby on Rails.​

Quando o container for criado, instale a versão 2.4.0 do Ruby e


instale a última versão do Rails. Rode os seguintes comandos
no terminal do container do CodeAnywhere:

rvm install ruby 2.4.0

gem install rails

Nós precisamos da versão 5 do Rails. Confira a versão que foi


instalada rodando o seguinte comando:

rails --version

Qualquer variação da versão 5 serve.

Você provavelmente já sabe como usar o CodeAnywhere.


Criando um novo projeto com
o Rails

O Rails já vem com uma interface de linha de comando (CLI,


Command Line Interface) que possui várias funcionalidades
para facilitar o desenvolvimento.

Para criar um projeto Rails, rode o seguinte comando:

rails new --api NOME_DO_SEU_PROJETO

cd NOME_DO_SEU_PROJETO

Substitua NOME_DO_SEU_PROJETO por um nome que faça


sentido para o seu projeto. Só não use acentos e caracteres
especiais.

O segundo comando faz você entrar na pasta que acabou de ser


criada com o seu projeto.

Como vamos criar uma lista de tarefas pode usar o nome


“​todolist”​.

A ​flag ​--api diz para o Rails que nós estamos criando essa
aplicação para ser apenas um Back-End, ou seja, que ele não
vai precisar de nada para tratar HTMLs, entre outras
tecnologias que não fazem sentido para uma aplicação que só
vai cuidar dos dados.
Como vamos usar o Rails para Back-End, a camada view tem
que ser alterada para fornecer meios de montar uma resposta
que não seja HTML.

Um formato que é bastante utilizado é o ​JSON​. O JSON é um


formato simples e todas as linguagens já possuem
ferramentas para ler um JSON. Por isso que utilizamos ele.

O Rails já vem com JBuilder por padrão. Para usar ele, basta
abrir o arquivo ​Gemfile (na raiz do projeto) e descomentar a linha
(provavelmente vai ser a linha 13 do ​Gemfile)​ :

gem ‘jbuilder’, ‘~> 2.5’

Depois de colocar o JBuilder como dependência do projeto, rode


o seguinte comando para instalar o JBuilder:

bundle install

Agora você está pronto para começar a criar sua aplicação!


Criando a estrutura MVC para
a entidade Tarefa

Após criarmos a nossa abstração da entidade Tarefa, nós


criamos a model que vai representar essa entidade na
aplicação.

Para essa prática, uma Tarefa pode ser abstraída contendo as


propriedades “​descricao​”, do tipo ​String​, e “​finalizada​”, do tipo
Boolean.​

Para criar a estrutura necessária (todos os arquivos do MVC


para a entidade Tarefa), rode o seguinte comando:

rails generate scaffold Tarefa descricao:string


finalizada:boolean

Esse comando vai criar a rota, a controller, a model e a view


para a entidade Tarefa.

Além de criar os arquivos, ele já cria uma implementação


padrão das operações básicas em uma entidade: ​Cadastro,
Listagem, Atualização e Deleção​. É o vulgo ​CRUD​.

Junto com a model Tarefa que foi criada, o Rails vai criar uma
migration para criar a respectiva tabela no banco de dados.

Para o Rails realmente criar a tabela no banco de dados, rode o


seguinte comando:

rails db:migrate
Gaste alguns minutos explorando os arquivos criados. Veja a
controller em “​app/controllers”, a model em “​app/models​” e a view
em “​app/views”​ .

Para ver as rotas que estão registradas para a aplicação, rode o


seguinte comando:

rails routes

Agora, coloque sua aplicação no ar! Para subir um servidor com


a aplicação rodando, rode o comando:

rails server

Esse comando sobe um servidor com a aplicação que foi criada.


Para sua aplicação aceitar requisições, tem que ter um servidor
rodando a sua aplicação. Esse comando faz isso.

Por padrão, o Rails sobe a aplicação na porta ​3000​.

Se você está rodando em um Linux na sua própria máquina, a


aplicação vai estar disponível na URL ​http://localhost:3000​.

Se você está usando o CodeAnywhere, você vai ter que pegar o


nome do seu container na página de informações do container
(basta clicar com o botão direito em cima do nome do seu
container, no menu lateral, e ir em “Info”).

Por exemplo, o nome do meu container é


http://todolist-italopaivab792165.codeanyapp.com​, então a
aplicação vai estar rodando na URL
http://todolist-italopaivab792165.codeanyapp.com:3000​.
Acesse a rota “​/tarefas.json”​ nessa URL e veja que a aplicação vai
te retornar um JSON vazio (porque não tem nenhuma tarefa
cadastrada no banco de dados ainda).

Para acessar uma rota, apenas coloque ela no final da URL. Por
exemplo, com uma URL do CodeAnywhere:

http://todolist-italopaivab792165.codeanyapp.com:3000/tarefas.json

Lembrando que essa rota “​/tarefas.json​” aponta para a ação


“​index​” da controller de Tarefas se for feita uma requisição com
o método ​GET​. Confira as rotas da aplicação com o ​rails
routes:

Ah, caso você não saiba, toda vez que você digita uma URL no
seu navegador (Chrome, Firefox, Internet Explorer, etc) você
está fazendo uma requisição HTTP utilizando o método ​GET​!

Faz sentido né?! Porque você quer pegar (​get​) a página que está
naquela URL.

Então, quando você acessa essa rota, o Rails vai rodar a ação
“​index​” da controller de Tarefa. Dá uma olhada lá no que essa
ação “​index”​ faz.

Provavelmente ela deve pedir uma lista com todas as tarefas


que estão no banco de dados para a model de Tarefa.
E como não tem nenhuma tarefa cadastrada ainda no banco de
dados, essa rota não está retornando dado nenhum.

Agora vamos popular o nosso banco de dados para aparecer


alguma coisa nessa rota!
Brincando com o banco de
dados através da Model

Após ter rodado o comando ​rails db:migrate você já deve ter


a tabela de tarefas no banco de dados. Agora é hora de
cadastrar algumas tarefas e testar algumas consultas.

Se você está usando o CodeAnywhere, abra outro terminal no


seu container (basta clicar com o botão direito em cima do
nome do seu container, no menu lateral, e ir em “SSH Terminal”)
para rodar os próximos comandos.

Deixe o ​rails server rodando em um terminal separado,


enquanto rodamos os próximos comandos em outro terminal.

Rode o seguinte comando para abrir um terminal com a nossa


aplicação. Aqui você pode testar qualquer classe (qualquer
model, por exemplo) da sua aplicação.

rails console

Com o terminal aberto pelo comando anterior, crie algumas


tarefas com o método “​create”​:

tarefa1 = Tarefa.create(descricao: ‘Primeira tarefa’,


finalizada: false)

tarefa2 = Tarefa.create(descricao: ‘Segunda tarefa’,


finalizada: false)

O método ​create cria uma registro no banco de dados e retorna


um objeto da classe da model na qual ele foi chamado, no caso
a model de Tarefa. Então, as variáveis ​tarefa1 e ​tarefa2 são
objetos da model Tarefa (lembra da orientação a objetos ?).

Agora acesse a rota “​/tarefas.json​” e perceba que agora essa rota


retorna os dados das tarefas cadastradas no banco de dados.

http://todolist-italopaivab792165.codeanyapp.com:3000/tarefas.json

Por quê?!

Porque a ação index da controller de tarefa pediu para o model


de Tarefa todas as tarefas cadastradas no banco de dados.

Esse método “​all​” faz uma consulta no banco de dados e pega


tudo que tiver na tabela de tarefas e retorna.

Teste esse método no console do Rails e veja que ele vai


retornar um array com as tarefas.

Teste alguns métodos de consulta ao banco de dados listados


na ​documentação do Rails​.

Por exemplo, o ​where​:

Tarefa.where(finalizada: false)

O método ​where t​ e permite fazer consultas ao banco de dados


com base em alguns critérios.

Essa consulta acima vai retornar uma lista (array) com todas
as tarefas que ainda não estão finalizadas.
Pesquise como fazer as seguintes consultas no banco de dados
através da model de Tarefa do Rails:

● pegar a última tarefa cadastrada no banco de dados;


● pegar a primeira tarefa cadastrada no banco de dados;
● pegar todas as tarefas que estão finalizadas;
● pegar a tarefa que possui a descrição “Estudar Banco de
Dados”;
● pegar a tarefa que possui o ID de número ​7​;
● saber quantas tarefas foram cadastradas no banco de
dados;
● saber quantas tarefas finalizadas existem no banco de
dados.

Você vai encontrar como fazer essas consultas na


documentação do Rails​. Se não encontrar aí, pesquise no
Google e tente achar uma solução.

Você também pode gostar