Guia para iniciar no mundo do Ruby On Rails

O Ruby On Rails é um framework incrível e eu estou certo de que se você deu seus primeiros passos para aprender o Rails provavelmente vocês está encantado(a) com a facilidade com que as coisas sãos feitas (da magia do Scaffold às Gems que automatizam processos complexos com poucas linhas como o Devise).

Mas como em qualquer conhecimento que vale a pena ele também exige esforço e um guia para te ajudar a cortar caminhos.

Este Post tem o propósito de apresentar para as pessoas que estão dando seus primeiros passos ou que ainda não dominam por completo o Rails aspectos do framework, Gems importantes, tutoriais úteis para acelerar a aprendizagem, conceitos e links relevantes 🙂

Este é um Post longo e com diversos textos e links que valem a pena ser acessados, então eu criei um sumário para que você possa acessar diretamente os conteúdos que mais te interessante e também para que você possa voltar no futuro e explorar mais os outros conteúdos com calma \o/

Sumário

  1. As Perguntas Importantes
    1. O que é Ruby?
    2. O que é Ruby on Rails?
    3. Como está o mercado?
  2. Guia de referências para tornar sua vida mais fácil
    1. Autenticação
    2. Autorização
    3. Upload de Imagens e Arquivos
    4. Testes
    5. Deploy (Hospedagem)
    6. Backup
    7. Sistema Administrativo
    8. Debugar
    9. Guia de Gems mistas que podem te ajudar
    10. Pesquisas
    11. Criação de Gems
    12. Tutoriais divertidos para seguir e aprender
  3. Como se desenvolver na área – Educação
  4. Como se desenvolver na área – Trabalho
  5. Conclusão

As perguntas importantes

O que é Ruby?

Segundo a Wikipédia:

Ruby é uma linguagem de programação interpretada multiparadigma, de tipagem dinâmica e forte, com gerenciamento de memória automático, originalmente planejada e desenvolvida no Japão em 1995, por Yukihiro “Matz” Matsumoto, para ser usada como linguagem de script. Matz queria uma linguagem de script que fosse mais poderosa do que Perl, e mais orientada a objetos do que Python.[4] Ruby suporta programação funcional, orientada a objetos, imperativa e reflexiva. Foi inspirada principalmente por Python, Perl, Smalltalk, Eiffel, Ada e Lisp, sendo muito similar em vários aspectos a Python.[5] Atualmente, Ruby é a 10ª linguagem de programação mais popular do mundo, de acordo com o Índice Tiobe.[6]

Simplificando:

O Ruby é uma linguagem de programação incrível e o Ruby On Rails é baseado nela, por tanto você vai precisar aprender a programar em Ruby para criar seus Apps usando Ruby On Rails 🙂

O que é Ruby On Rails?

Segundo a Wikipédia:

Ruby on Rails é um framework livre que promete aumentar velocidade e facilidade no desenvolvimento de sites orientados a banco de dados (database-driven web sites), uma vez que é possível criar aplicações com base em estruturas pré-definidas. Frequentemente referenciado como Rails ou RoR, o Ruby on Rails é um projeto de código aberto escrito na linguagem de programação Ruby. As aplicações criadas utilizando o framework Rails são desenvolvidas com base no padrão de arquitetura MVC (Model-View-Controller).

Simplificando:

Ruby on Rails é um framework muito legal voltado para construção de Apps modernos seja disponibilizando Html ou json (e etc) como uma Api. Então se você tem um projeto e precisa decidir qual framework usar, talvez Rails seja a escolha ideal para você.

Um outro ponto muito interessante é a facilidade de se desenvolver coisas complexas usando as Gems do Rails, o que torna ele um framework muito atraente para a criação rápida de MVPs.

A comunidade do Ruby On Rails também é incrível, tem muitas pessoas brilhantes dedicando seu tempo em melhorar o Ruby On Rails, seja através de contribuições diretas ao core do projeto (que é atualizado constantemente) ou criando Gems (Bibliotecas) que facilitam muito a vida do desenvolvedor. Então se você ainda não participa deste mundo, saiba que existem muitas pessoas legais por aqui 🙂

Se você quer conhecer a história do Ruby On Rails dá uma olhada nesse infográfico que criamos no Blog: A história do Rails

Como está o mercado?

O mercado está forte e é bem comum encontrar vagas disponíveis sem pessoas especializadas para preenchê-las. Por se tratar geralmente de vagas em Startups é bem fácil conseguir trabalhos remotos (e isso me deixa muito feliz :)).

Talvez a pergunta que você tenha é, vale a pena se especializar? Vale e muito. Eu já trabalhei com outros frameworks mas nunca fui tão feliz como sou trabalhando com Rails, financeiramente e a nível de satisfação pessoal.

 

Guia de referências para tornar sua vida mais fácil

Este é um Guia de Gems e Links por “features” comuns de se encontrar em Apps Rails, então você pode se guiar pelo sumário para encontrar o ponto exato que você precisa ou apenas ir lendo e descobrindo coisas novas 🙂

Autenticação

Autenticação é o processo de verificar se quem fez a requisição é um usuário cadastrado no sistema. No Rails nós temos excelentes alternativas para fazer isto, desde a mais conhecida como o Devise até o Devise Token Auth que permite que você autentique usuários através da sua Api Rails.

1 – Devise
Documentação oficial | Estrelas no GitHub: 16,264

É a Gem mais utilizada para realização de autenticação, ela te permite implementar com poucas linhas de código o Login, Logout e Register dos seus usuários. Então se você está começando, comece por aqui 🙂

Eu fiz um tutorial aqui no Blog que fala sobre como utilizar o Devise, dá uma olhada: Criando autenticação com o Facebook em 10 minutos (Devise + Omniauth)

2 – Devise Token Auth
Documentação oficial | Estrelas no GitHub: 1,616

Se você está usando o Rails como uma Api e precisa implementar a autenticação dos seus usuários, o Devise Token Auth é um ótimo caminho para você fazer isto.

3 – Doorkeeper
Documentação oficial | Estrelas no GitHub: 3,326

O Doorkeeper te permite fazer autenticações do tipo OAuth 2 com muita facilidade, então se isso é uma exigência do seu projeto, usar o Doorkeeper vai facilitar sua vida.

4 – Omniauth
Documentação oficial | Estrelas no GitHub: 6,049

Se você precisa autenticar usuários usando as contas do Facebook, Google Plus, Twitter ou etc você pode usar essa gem combinada com o devise e fazer isso facilmente.

No mesmo tutorial sobre o uso do devise eu expliquei como fazer a autenticação com o Facebook, dá uma olhada: Criando autenticação com o Facebook em 10 minutos (Devise + Omniauth)

Autorização

A autorização é o processo de gerenciar quais recursos um usuário pode acessar dentro do sistema. Por exemplo, apenas dar permissão para que o usuário acesse a página de listagem de outros usuários mas não de deletar outros usuários caso ele não seja um administrador do sistema.
No Rails nós também temos boas opções para isto, vamos ver algumas:

1 – CanCanCan
Documentação oficial | Estrelas no GitHub: 3,240

A gem CanCanCan é extremamente versátil e te permite gerenciar todo seu esquema de autorização através de apenas um arquivo. Com ela você consegue limitar o acesso aos recursos baseado no tipo de usuário que está acessando o sistema, por exemplo se ele é um operador, um cliente ou um admin.
Essa gem também funciona muito bem em conjunto com a Gem devise.

Eu fiz um Screencast sobre como utilizar essa Gem, dá uma olhada: Como gerenciar as permissões (autorização) no Rails usando o Devise + CanCanCan

2 – Pundit
Documentação oficial | Estrelas no GitHub: 4,763

O Pundit funciona de maneira similar ao CanCanCan e tem sido o meio mais usado pela comunidade para fazer autorização, vale a pena conhecer também.

3 – Rolify
Documentação oficial | Estrelas no GitHub: 1,927

Se você precisa gerenciar permissões de maneira dinâmica, ou seja, se você precisa poder aumentar ou diminuir as permissões de acesso a recursos de seus usuários, o Rolify pode te ajudar com isto.
Possivelmente teremos um tutorial por aqui sobre ele, caso você ache interessante, comente aí em baixo.

Uploads de imagens e arquivos

Fazer o upload de imagens e arquivos é um procedimento comum na maior parte dos Apps e é claro que o Rails possui alternativas que tornam esse processo muito simples.

1 – Carrierwave
Documentação oficial | Estrelas no GitHub: 7,117

O Carrierwave é uma Gem incrível que te permite fazer o upload de imagens e arquivos com poucos comandos. Você também pode integrá-la com o s3 da Aws e salvar lá as fotos do seu sistema de maneira quase imperceptível.
Com ele você também consegue redimensionar suas imagens através da configuração simples de apenas um arquivo.

Recentemente eu fiz um tutorial aqui no Blog que ensina como fazer esse upload de arquivos, confere aí: Fazendo upload de imagem e múltiplos anexos usando Carrierwave

2 – Paperclip
Documentação oficial | Estrelas no GitHub: 8,224

Essa é a Gem mais popular para o upload de imagens e possui as mesmas funções que o Carrierwave, então vale a pena conhecer e ver qual agrada mais 🙂

 

3 – Shrine
Documentação oficial | Estrelas no GitHub: 1,117

Esta Gem tem o propósito similar ao do Paperclip e o Carrierwave porém ela é desenhada para ser “assíncrona”, ou seja ao invés de você prender o usuário em uma tela de espera enquanto a imagem ou os arquivos sobem e são processados ou deletados, ela faz isso em um processo separado melhorando a experiência de uso do seu site.
Em breve teremos um tutorial sobre ela explicando com mais detalhes 🙂

Testes

O que é testar?
Testar é o ato de submeter alguma coisa a uma prova e analisar como ela se comporta. No nosso caso, testar significa submeter a prova uma determinada área (ou conjunto de áreas) do nosso código e ver se elas se comportam como deveriam.

Porque testar?
Testar é cansativo e dá trabalho, mas pode salvar sua vida. Também é importante testar porque você simplesmente não é capaz de lembrar de tudo o tempo todo, ainda mais quando você trabalha com uma equipe.
Quando você escreve testes para o seu site você garante que as funções antigas continuem funcionando mesmo depois de você adicionar as novas funções.

Como testar?
O Rails nos dá muitas ferramentas para realizar testes automatizados, vamos falar de algumas:

1 – Rspec Rails

Documentação oficial | Estrelas no GitHub: 3069

O Rspec é um framework de testes muito conhecido no meio do Ruby On Rails por ser uma das maneiras mais usadas para realizar testes nas aplicações.
Ele é um ambiente completo para você realizar testes (ou seja, escrever scripts que simulam o uso dos trechos de código que você escreveu na sua aplicação) que vão desde o teste do seus models, controllers até o testes das tasks que você criou para o seu projeto.
Então se você ainda não utiliza testes no seu projeto, dê uma olhada na documentação do Rspec para perceber como é simples, eficiente e vantajoso utilizá-lo.
Logo teremos um Post muito completo sobre Testes no Blog, então por enquanto isso é apenas um aperitivo :).

2 – Factory Girl

Documentação oficial | Estrelas no GitHub: 5050

A Gem Factory Girl é o principal complemento ao Rspec é e extremamente comum que ela seja utilizada com ele.
Com essa Gem você consegue criar fábricas (factorys) onde você pode gerar records como um novo usuário, um novo Post em um App de Blog, ou qualquer outro tipo que esteja descrito no seus Models para facilitar na hora de realizar um teste no Rspec.
Um exemplo de uso seria quando você precisa testar se um método Update de um Controller User está atualizando o campo ‘nome’. Então ao invés de dentro do seu teste você criar um User usando o método create e passando dezenas de parâmetros, você pode simplesmente chamar uma factory pré criada para fazer isso para você e pode reaproveitar a mesma factory em outros testes.

3 – Faker

Documentação oficial | Estrelas no GitHub: 4536

Esta é mais uma Gem que “sempre” acompanha o Rspec e a Factory Girl e que serve para gerar dados fake (dados aleatórios dentro de uma estrutura válida) para preencher os campos de um User por exemplo.
É muito útil que você utilize esse tipo de Gem para evitar fazer testes com valores fixos, como por exemplo comparar se um telefone foi criado corretamente usando sempre o mesmo número.
Essa Gem pode indicar erros que cometemos por usar valores “viciados” para realizar os testes.

Deploy (Hospedagem)

Certo, você já criou seu App Rails e agora você precisa colocar ele no ar para que as outras pessoas possam acessar, qual solução escolher?
Bom esse não é um caminho tão simples e merece um Post longo a parte, mas eu vou resumir um pouco as principais opções que temos 🙂

PaaS – Platform as a Service

São hospedagens que permitem que você faça o upload do seu App (geralmente com apenas um comando) para elas sem precisar configurar a máquina em si (por exemplo, sem precisar instalar o nginx no servidor e etc).
Essa facilidade tem seu preço financeiro, geralmente são mais caras e seu preço de arquitetura, geralmente isso te limita quando você deseja instalar softwares que a plataforma ainda não tem suporte.

Heroku

O Heroku é o maior representante do PaaS no mundo do Rails e é muito útil quando você vai fazer seus primeiros deploys por contar com um plano grátis para pequenos Apps.
Vale a pena conhecer, existem muitas grandes empresas que utilizam ele.
Nesse post eu falei um pouco sobre o deploy no heroku + codeship: Como fazer o deploy e rodar os testes automaticamente usando o Codeship

Conheça o Heroku

IaaS – Infrastructure as a Service

É uma estrutura virtual que você pode contratar, ou seja, servidores, banco de dados e etc que você pode configurar a nível de software mas que você não possui acesso físico às máquinas.
Esse é um modelo bem comum de se encontrar em hospedagens profissionais para Apps Rails.

Aws

Os serviços da Aws são incríveis, você pode contratar máquinas excelentes a bons preços, porém as ferramentas são muitas e (na minha opinião) mal documentadas.
Eu diria que uma parte muito significativa das grandes empresas usam a Aws para hospedar seus sistemas, com certeza vale a pena você conferir.
A aws também oferece um ano de hospedagem (em uma máquina simples) grátis para que você possa testar o serviço e descobrir se vale a pena.

Conheça a Aws

Digital Ocean

A Digital Ocean se destacou muito nos últimos anos por oferecer máquinas por preços muito baixos (começando em 5 dólares).
Com ela fica fácil contratar máquinas para fazer o deploy do seu App e configurar o seu ambiente, certamente se você está começando e precisa de uma máquina configurável, comece por aqui 🙂

Conheça a Digital Ocean

Backup dos Dados

Fazer o backup dos dados de seus clientes é excelente para se manter seguro e ter recursos para restabelecer seu serviço caso aconteça algum imprevisto.

1 – Backup
Documentação oficial | Estrelas no GitHub: 513

Para você fazer o backup da sua aplicação de maneira fácil e transparente você pode usar a Gem Backup que te permite fazer o backup de vários tipos de database como PostgreSQL, MySQL, Sqlite3 e etc e também te permite configurar um meio para ser notificado quando o backup acontecer como por exemplo o Slack, email e etc.

Na última semana eu fiz um Post sobre como realizar esse processo e ainda automatizá-lo usando a Gem whenever, dá uma olhada: Backup automatizado do banco de dados da sua aplicação

Sistema Administrativo

O Rails possui algumas Gems que te permitem gerar sistemas administrativos completos em poucos minutos, confira algumas.

1 – Rails Admin
Documentação oficial | Estrelas no GitHub: 6,275

Se você quer criar um sistema administrativo completo para gerenciar os recursos do seu banco de dados, usar o Rails Admin vai te economizar muito tempo e vai te dar um resultado incrível.
Ele gera as telas de CRUD baseadas no seus models, então em poucos minutos você tem um sistema administrativo completo.
Ele também é fácil de integrar com o Devise, CanCanCan e etc.

O Post mais acessado do Blog é sobre o Rails Admin, dá uma olhada lá e me dá um feedback: Criando um sistema administrativo com rails admin em 25 minutos

2 – Active Admin
Documentação oficial | Estrelas no GitHub: 6,977

O Active Admin funciona de maneira similar ao Rails Admin, então se você está em busca de uma alternativa o Active Admin pode servir para você.

Debugar

Se você é um desenvolvedor de softwares você sabe como pode ser frustrante ter um bug e não fazer ideia de qual é a origem do problema.
Debugar é o processo de “caçar os bugs” 🙂 e o Rails tem algumas ferramentas que ajudam nisto.

1 – Pry
Documentação oficial | Estrelas no GitHub: 4,442

Usando a Gem Pry você consegue colocar um comando em seu código que vai abrir um console para que você rode linha a linha seu código e encontre aquele Bug que te custou uma hora de trabalho 🙂

Logo teremos tutorial sobre depuração por aqui, mas por hora eu indico esse ótimo tutorial Rails Debugging with Pry

Guia de Gems mistas que podem te ajudar

Eu fiz 3 posts até o momento neste Blog com listas de Gems úteis, vale a pena você conferir esses Posts e conhecer Gems que podem fazer sua vida mais fácil.

Lista 1: 12 Gems que você precisa conhecer (Parte 1)
Lista 2: 10 Gems que você precisa conhecer (Parte 2)
Lista 3: 12 Gems que você precisa conhecer (Parte 3)

Pesquisas

Muitos Apps tem a função de fazer buscas, como por exemplo no Airbnb você faz buscas por casas e etc. O Rails também possui algumas ferramentas que ajudam nesse processo, vamos ver uma delas.

1 – SearchKick
Documentação oficial | Estrelas no GitHub: 3,192

É uma Gem para você se conectar ao ElasticSearch que é um software de buscas inteligentes que pode ser facilmente instalado na sua máquina e sincronizado com seu banco de dados via searchkick.

Eu fiz um tutorial sobre como implementar esse processo também, confere ai: Como fazer pesquisas inteligentes usando Ruby On Rails

Criação de Gems

Gems são bibliotecas escritas em Ruby e são as grandes responsáveis pela velocidade de desenvolvimento de Apps em Rails.
Talvez você queira contribuir com a comunidade quando criar algum serviço interessante para usar em seus próprios Apps, uma boa maneira de fazer isso é criando uma Gem e disponibilizando para o público.

Eu criei um tutorial que fala sobre como fazer isto: Criando uma Gem e clonando o Google Translate

Tutoriais divertidos para seguir e aprender

Seguir tutoriais Passo a Passo é uma excelente maneira de aprender, então eu selecionei alguns dos tutoriais aqui do Blog que podem te ajudar a trilhar esse caminho.

Como se desenvolver na área – Educação

Bootcamp OneBitCode

  1. Bootcamp OneBitCode – Suba de level no mundo do Ruby On Rails

    Estão abertas as inscrições para o primeiro Bootcamp online do OneBitCode, neste curso nós vamos criar do zero um site similar ao Airbnb usando Rails 5 como Api e Angular 2 como cliente Web.
    O curso vai ter vídeo aulas semanais, live de 2 horas por semana, suporte total às dúvidas e um Slack exclusivo para os alunos desenvolverem network.
    O curso vai ser ÉPICO, então confere a Landing Page dele e me dá um feedback: Conheça o Bootcamp

  2. Aprenda contribuindo com projetos Open Source
    Eu desenvolvi um tutorial simples para que você aprenda como contribuir com projetos Open Source como o Ruby On Rails, Ubuntu e etc.
    Confere aí: Como e por que contribuir com projetos Open Source

Como se desenvolver na área – Trabalho

Eu trabalho como programador Remoto Ruby On Rails há alguns anos, já trabalhei com empresas do Brasil, Estados Unidos, Austrália e etc. Como essa parte ainda gera dúvidas para muitas pessoas eu fiz um Post relatando a minha experiência com isto que ficou muito legal, não deixe de conferir esse: Bem vindo ao mundo do programador freelancer / remoto

 

Conclusão

Aprender um novo framework é um caminho extenso, mas eu tenho certeza que vai valer muito a pena você se aprofundar no Ruby On Rails.
Se você ficou com alguma dúvida ou tem sugestões, comente aí em baixo ou me adicione no Facebook clicando aqui.

Eu gostaria de agradecer fortemente ao Lucas Menezes que me inspirou na criação deste post e que foi o primeiro a se inscrever no Bootcamp do OneBitCode.

Não se esqueça de visitar a página do Bootcamp online OneBitCode clicando aqui, as inscrições ficam abertas do dia 03/12 a 12/12, aproveita que vai ser épico \o/
Bootcamp OneBitCode

Muito Obrigado pela atenção,
Grande abraço
Leonardo Scorza

 

[:]

outubro 7, 2017
Feito com s2 por OneBitCode
%d blogueiros gostam disto: