Semana Super Full Stack – Aula 1

Passo a Passo

Siga os meus passos que foram utilizados na aula 1 e aprofunde ainda mais o seu aprendizado.

 

Aula 1

Geração do projeto

1- Abra o terminal e crie o projeto com o comando:

2- Abra o projeto no seu editor, abra seu Gemfile e substitua o conteúdo por:

3- No seu terminal rode

Setup Inicial

1- Primeiro vamos configurar nosso projeto para usar o Materialize.

a) Altere o app/assets/stylesheets/application.css para app/assets/stylesheets/application.scss e coloque nele:

b) Coloque no app/assets/javascripts/application.js:

2- Vamos criar nosso banco de dados com:

3- Agora vamos instalar o devise com:

4- Agora é hora de criar nosso User com o generate do devise:

5- Na migration gerada adicione a linha a seguir para criar o campo name e description para o User:

*Para migrar as novas informações para o banco de dados rode no terminal:

6- Para forçar que o usuário esteja logado no sistema para acessar os conteúdos, adicione ao seu app/controllers/application_controller.rb

7- Agora vamos instalar o cancancan para gerenciar as permissões de usuários, no terminal rode:

Customizando o devise

Vamos customizar o devise para aceitar o campo name e descripion adicionado na migration.

1- Substitua a linha devise_for :users no routes.rb para:

2- Agora crie um controller chamado registrations_controller.rb e coloque:

3- Rode no console:

4- Substitua o arquivo app/views/devise/sessions/new.html.erb por:

5- Substitua o arquivo app/views/devise/registrations/new.html.erb por:

6- Substitua o arquivo app/views/devise/registrations/edit.html.erb por:

7- No seu application_controller adicione os seguintes métodos para um redirecionamento correto após o usuário fazer sign in ou sign up

Configurando o Carriewave para upload de imagens

1- Vamos configurar agora o carrierwave para o upload da imgem de perfil do usuário, rode no terminal:

2 – No arquivo gerado (app/uploaders/avatar_uploader.rb) coloque:

3- Agora vamos incluir nossa imagem de perfil para o User, rode no seu console:

4- Agora em app/models/user.rb adicione a linha:

5- No seu arquivo config/environment.rb adicione:

6- Substitua o arquivo app/views/devise/registrations/new.html.erb por:

7- Substitua o arquivo app/views/devise/registrations/edit.html.erb por:

8-Agora vamos criar um arquivo dentro de app/assets/javascripts chamado load_image_preview.coffee e insira o seguinte conteúdo nele:

 

Preparando os Likes e Comments

Para os comentários e para os follows do nosso app vamos usar gems que facilitam esse processo para nós.

1- Vamos configurar a gem act_as_follower, no seu terminal rode o comando:

2- Para um bom funcionamento, substitua a primeira linha da migrate gerada por:

3- Agora vamos fazer a configuração da gem acts_as_commentable, no seu terminal rode o comando:

4- Para um bom funcionamento, substitua a primeira linha da migrate gerada por:

5- Rode as migrations

 

Criando nossos models

1- Digite no seu terminal para criar nosso model Post

2- Para criar nosso model Like, digite:

*Agora vamos setar os relacionamentos dos nossos models

2- No seu model User substitua o conteúdo por:

3- No model Post substitua o conteúdo por:

 

Vamos gerar nossos controllers

1- Digite no terminal:

*delete os arquivos create.html.erb, destroy.html.erb e update.html.erb na pasta views/posts

2- Agora vamos criar o controller Comment:

3- Agora o controller Like:

4- Para criar o controller Follows digite no terminal:

5- Vamos criar um controller Pages para criar nossa home page

6- Por último vamos criar nosso controle Users para criar nossa página de perfil de usuário:

7- Vamos ajustar as rotas do nosso ap, substitua o conteúdo do seu arquivo config/routes.rb por:


Vamos criar as regras de permissão de usuário

1- No arquivo models/ability.rb substitua o conteúdo por:

2- Dentro de cada um dos seus controllers (exceto application, registrations e pages) coloque:

 

Vamos estruturar as views do nosso projeto

1- Na pasta app/views crie uma pasta com nome shared e crie dentro dela o arquivo _navbar.html.erb e insira o seguinte conteúdo:

2- Na sua pasta app/assets/javascripts crie uma pasta shared e crie um arquivo navbar.coffee e insira nele:

3- Agora na mesma pasta crie o arquivo _footer.html.erb e insira:

4- No seu arquivo views/layouts/application.html.erb substitua o conteúdo por:

5- Agora na pasta app/assets/stylesheets crie uma pasta shared e crie um arquivo _navbar.scss e insira nele:

6- Na mesma página crie um _footer.scss

7- No seu arquivo stylesheets/pages.scss insira o seguinte código:

8- No seu application.scss substitua o conteúdo por:

9- Vamos inserir no nosso arquivo app/views/pages/home.html.erb o seguinte conteúdo:

 

Parabéns por chegar até aqui \o/,

Te vejo na aula 2 para continuar nossa jornada,

Leonardo Scorza

 

Feito com s2 por OneBitCode