
O primeiro Post do blog foi sobre uma lista de 12 Gems interessantes que todo desenvolvedor Rails deveria conhecer. Muitas pessoas gostaram da lista e me disseram que as ajudou no dia a dia de trabalho, então eu lancei a segunda lista e a mesma coisa aconteceu.
Sendo assim como agora já é uma tradição do OneBitCode, hoje eu estou trazendo a terceira lista de Gems que podem fazer a sua vida como desenvolvedor Ruby On Rails mais feliz \o/.
Desta vez eu abordei algumas Gems de segurança, outras de teste e algumas outras que facilitam o dia a dia de desenvolvimento.
Se você ainda não viu as outras duas listas, clique nos Links a baixo para conhecer algumas Gems bem legais:
O OneBitCode também tem um canal no Youtube com Screencasts semanais, caso você ainda não tenha se inscrito se inscreva clicando aqui ou no botão a baixo para receber os novos Screencasts.
As 12 Gems
1 – Guard Rails
Documentação oficial | Estrelas no GitHub: 97
Executa tarefas automáticas baseadas na mudança dos arquivos do seu projeto
O Guard Rails é uma Gem muito bacana e que pode acelerar bastante o dia a dia de programação. Com ele você consegue associar tarefas automáticas como o restart do servidor de desenvolvimento com as mudanças nos arquivos do seu projeto como os initializers, assim economizando o tempo perdido em ficar parando e iniciando o servidor toda hora.
O Guard Rails é muito simples de instalar e de usar (ele tem como dependência a gem Guard), este é um exemplo de código onde ele dá reset no servidor caso o Gemfile.lock tenha sido alterado ou algum arquivo dentro de config ou lib:
2 – Onotole
Documentação oficialbest free dating sites for plus size women in 2019113
Gere seu App Rails com as dependências já instaladas (Bootstrap e etc)
Com o Onotole você pode gerar o seu novo projeto Rails com as dependências (e algumas features) já instaladas e/ou configuradas e evitar a perda de tempo de ter que fazer manualmente todas as instalações toda vez que criar um novo projeto.
Algumas features que você pode escolher para virem instaladas e/ou configuradas são por exemplo o Rails Admin, Bootstrap, Templates (Slim, Haml ou Erb), Devise, Pundit, Will Paginate, CKEditor, Rubocop, Redis, Carriewave, Font Awesome, e muitas outras.
Quando você for criar um novo projeto basta rodar no console “onotole project_name -c” e ele vai te dar as opções no terminal como na imagem a baixo:
gay mens sites
best dating sites for marriage uk
3 – Attr Encrypted
dating sites that start with t | Estrelas no GitHub: 1120
Encripte e desencripte campos do seu banco de dados facilmente
A Gem Attr Encrypted é muito útil quando você trabalha com dados sensíveis no seu projeto e precisa mantê-los protegidos no caso de um possível vazamento do seu banco de dados.
Recentemente eu usei esta Gem em um projeto importante e fiquei realmente satisfeito com a simplicidade na hora de usá-la. Então se você precisa aumentar a sua segurança, ela pode ser o caminho.
Exemplo da declaração de um campo encrypted em um model:
4 – Rate Limit
Documentação oficial | Estrelas no GitHub: 116
Controle o número de chamadas que podem ser feitas para os endpoints da sua API
O Rate Limit é uma Gem muito útil quando você quer limitar (ou tomar alguma ação) quando um endpoint (ou todos) receber chamadas excessivas, ou seja, mais de N chamadas em Y segundos.
O Rate Limit usa o Redis para guardar as chamadas, então se você já usa o Redis vai ser bem simples adicionar o Rate Limit ao seu projeto.
Um exemplo simples que verifica se houve mais de 10 chamadas usando o mesmo telefone nos últimos 30 segundos:
5 – Foreman
Documentação oficial | Estrelas no GitHub: 4069
Rode seus projetos mais facilmente
O Foreman é muito útil para projetos grandes onde você possui muitas dependências dentro do seu projeto e precisa rodar vários softwares ao mesmo tempo para tudo funcionar, como por exemplo:
Você tem um ambiente onde é necessário rodar o Rails Server e ao mesmo tempo também o Sidekiq e o Mailcatcher e isso te obrigada a abrir três abas do terminal para rodar tudo.
O Foreman resolve este problema centralizando tudo isso em um arquivo chamado Procfile, e com apenas um comando você roda todos os softwares ao mesmo tempo sem o medo de estar esquecendo de rodar algo. (Isso ajuda também quando entram novos membros no time de desenvolvimento que ainda não estão familiarizados com as dependências do projeto).
Essa Gem faz ainda mais que isso, este é apenas um breve resumo então dê uma olhada na documentação e descubra tudo que é possível fazer com ele 🙂
Este é da saída do comando Foreman start, quando você configura o Foreman para rodar o Rails + Redis:
6 – Acts As Taggable
Documentação oficial | Estrelas no GitHub: 3849
Inclua um campo com Tags facilmente na suas tabelas
É bem comum em aplicações de redes sociais ou aplicações que permitem a busca por Tags a necessidade de se criar em um model do sistema um campo onde você possa incluir ou remover Tags.
O Acts As Taggable ajuda a fazer isso de uma maneira muito simples e rápida, então se essa é uma necessidade do seu sistema vale a pena você dar uma olhada.
Exemplo de uso:
7 – Paranoia
Documentação oficial | Estrelas no GitHub: 1710
Proteja seus dados escondendo eles ao invés de deletar
Se você é cuidadoso paranoico essa Gem é para você, com ela quando você chama o método delete para um record do seu banco de dados, ela apenas o esconde (ele para de ser encontrado via where, find e etc) ao invés de deletá-lo para sempre.
Isso pode salvar vidas principalmente quando você não está 100% seguro sobre seu software ou em casos específicos como quando um usuário delete a conta dele do seu site mas você quer manter os registros para análise ou para permitir que futuramente ele reative a conta.
8 – Ruby Vmstat
Documentação oficial | Estrelas no GitHub: 48
Pegue os status da máquina em tempo real via Ruby
Se você precisa saber informações em tempo real sobre a máquina onde seu projeto está rodando você pode usar a Gem Vmstat.
Isso é muito útil para você gerar alertas automáticas sobre excesso de uso da CPU, baixa memória disponível e etc.
Exemplo do retorno de chamada do Vmstat:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
require "vmstat" require "vmstat" Vmstat.snapshot # => #, # #, # #, # #, # #, # #, # #, # #], # @disks= # [#], # @load_average= # #, # @memory= # #, # @network_interfaces= # [#, # #, # #, # #, # #], # @task= # #> |
9 – Browser
Documentação oficial | Estrelas no GitHub: 1359
Detecte o browser do seu cliente facilmente
Todo desenvolvedor ao criar o front end pode sofrer por conta da incompatibilidade de alguns recursos com certos browsers ie ou com alguns problemas na hora de ajustar a responsividade da página, a gem Browser ajuda a resolver alguns desses problemas permitindo que o desenvolvedor detecte via Rails qual o browser ou device está sendo usado e faça uma lógica de usar um tipo ou outro de recurso baseado no resultado.
Se você cria o front end das suas aplicações dentro do Rails, vale a pena dar uma olhada nessa Gem que pode facilitar muito a sua vida.
Alguns exemplos de detecções possíveis:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
require "browser" browser = Browser.new("Some User Agent", accept_language: "en-us") # General info browser.chrome? browser.core_media? browser.edge? # Newest MS browser browser.firefox? browser.full_version browser.ie? browser.ie?(6) # detect specific IE version # Get device info browser.device browser.device.id browser.device.name browser.device.blackberry_playbook? browser.device.console? browser.device.ipad? browser.device.iphone? browser.device.ipod_touch? browser.device.kindle? browser.device.kindle_fire? browser.device.mobile? browser.device.nintendo? browser.device.playstation? # Get platform infos browser.platform.windows10? browser.platform.windows7? browser.platform.windows8? browser.platform.windows8_1? browser.platform.windows? browser.platform.windows_mobile? browser.platform.windows_phone? browser.platform.windows_rt? |
10 – Rspec Rails – Testes
Documentação oficial | Estrelas no GitHub: 3069
Sim você precisa testar sua aplicação e o Rspec é um bom caminho 🙂
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 :).
Exemplo, testando a chamada dos métodos de um Controller:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
require "rails_helper" RSpec.describe PostsController, :type => :controller do describe "GET #index" do it "responds successfully with an HTTP 200 status code" do get :index expect(response).to be_success expect(response).to have_http_status(200) end it "renders the index template" do get :index expect(response).to render_template("index") end it "loads all of the posts into @posts" do post1, post2 = Post.create!, Post.create! get :index expect(assigns(:posts)).to match_array([post1, post2]) end end end |
11 – Factory Girl – Testes
Documentação oficial | Estrelas no GitHub: 5050
Crie seus testes mais facilmente usando geradores para criar seus records
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.
Exemplo, de uma factory para criar um User ou um Admin:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
FactoryGirl.define do factory :user do first_name "John" last_name "Doe" admin false end # This will use the User class (Admin would have been guessed) factory :admin, class: User do first_name "Admin" last_name "User" admin true end end |
12 – Faker – Testes
Documentação oficial | Estrelas no GitHub: 4536
Gere dados ‘fake’ para facilitar na hora de escrever seus testes e factorys
Está é 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.
Alguns exemplos de dados que são possíveis gerar:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Faker::Name.name # "Christophe Bartell" Faker::Internet.email #=> "kirsten.greenholt@corkeryfisher.info" Faker::Address.city #=> "Imogeneborough" Faker::Address.street_name #=> "Larkin Fork" Faker::Bitcoin.address #=> "1HUoGjmgChmnxxYhz87YytV4gVjfPaExmh" Faker::Bitcoin.testnet_address #=> "msHGunDvoEwmVFXvd2Bub1SNw5RP1YHJaf" Faker::Business.credit_card_number #=> "1228-1221-1221-1431" Faker::Business.credit_card_expiry_date #=> Faker::Code.isbn #=> "759021701-8" Faker::Code.ean #=> "4600051000057" Faker::Color.hex_color #=> "#31a785" Faker::Color.color_name #=> "yellow" Faker::Commerce.color #=> "lavender" Faker::Commerce.department #=> "Grocery, Health & Beauty" Faker::Company.name #=> "Hirthe-Ritchie" Faker::Company.suffix #=> "Group" |

Não perca nenhum conteúdo
Receba nosso resumo semanal com os novos posts, cursos, talks e vagas o/
Conclusão
Você tem sugestões de Gems para a próxima lista? Comenta aí em baixo.
Ficou com alguma dúvida ou tem outras sugestões?
Clica aqui para enviar sua sugestão ou me adiciona no Facebook clicando aqui.
Muito Obrigado pela atenção,
Grande abraço,
Leonardo Scorza
Primeira vez no OneBitCode? Curtiu esse conteúdo?
O OneBitCode tem muito mais para você!
O OneBitCode traz conteúdos de qualidade, e em português, sobre programação com foco em Ruby on Rails e também JavaScript.
Além disso, aqui sempre levamos à você conteúdos valiosos sobre a carreira de programação, dicas sobre currículos, portfólios, perfil profissional, soft skills, enfim, tudo o que você precisa saber para continuar evoluindo como Programador(a)!
Fique por dentro de todos os conteúdos o/
Nossas redes sociais:
📹 • https://youtube.com/Onebitcode [Live todas as terças-feiras às 19h)
💻 • https://linkedin.com/company/onebitcode
🙂 • https://facebook.com/onebitcode
📱 • https://instagram.com/one_bit_code
🐦 • https://twitter.com/onebitcode
Nossos cursos:
🥇 • Programador Full Stack Javascript em 8 Semanas
💎 • Curso Completo de Ruby
⚙ • Minicurso: API Rails 5 Completo
🐞 • Minicurso de Testes para Ruby on Rails com RSpec
Espero que curta nossos conteúdos e sempre que precisar de ajuda, fala com a gente!
Estamos aqui para você 🙂
Bem-vindo à família OneBitCode o/