12 Gems que você Precisa conhecer!

Rails Gems

Sobre o Blog

Este Blog é destinado a dar dicas sobre desenvolvimento Web focado principalmente na utilização de Ruby On Rails.
Em breve teremos vídeos tutoriais no canal do Youtube, por tanto assine o canal e receba notificações sobre os novos tutoriais que virão 🙂 (Canal do Youtube)

12 Gems que podem melhorar seus projetos e facilitar sua vida

O Rails possui muitas Gems e as vezes fica difícil identificar quais as Gems que podem ter uma utilidade real no seu projeto, eu fiz uma pequena lista de Gems que não são tão utilizadas e que podem enriquecer seu projeto e te economizar um bom tempo.

*Para ir para o repositório da Gem clique no titulo do post

Brakeman

O Brakeman é uma Gem que te permite descobrir algumas vulnerabilidades do seu projeto em Rails. Rodando o Brakeman no root do seu projeto ele vai te dar uma lista das vulnerabilidades que você pode ter deixado passar no seu projeto (como SQL Injection, File Access e etc) e também vulnerabilidades da própria versão do Rails que você está utilizando. Então se você quer aumentar a qualidade do seu projeto e não ser pego desprevenido, instale o Brakeman e descubra se você está seguro.

brakeman gem

 

Better Errors

Usando essa Gem você recebe uma página de erros mais amigável e informativa enquanto estiver desenvolvendo seu projeto. Ter uma tela que te ajude a identificar o problema mais rapidamente pode diminuir o tempo que você gasta caçando Bugs.

 

Geocoder

Se a sua aplicação envolve o uso de informações geográficas como transformar um endereço em coordenadas, coordenadas em um endereço, cálculos de distâncias ou até mesmo descobrir o endereço aproximado de um IP, você pode usar o Geocoder e fazer isso com uma simples chamada no seu código.

1
2
# returns Geocoder::Result object
result = request.location

(Pegando a localização de quem fez a requisição )

 

RuboCop

Se você se preocupa em escrever um bom código e também que seu código seja de fácil entendimento para outros desenvolvedores mas ainda não memorizou as boas práticas do Rails, talvez seja interessante você usar o RuboCop para que ele faça esse trabalho duro por você e te avise quando você estiver pisando fora da linha 🙂

RuboCop Gem

 

MINA

O MINA assim como capistrano é uma ferramenta para você fazer o deploy da sua aplicação, com a diferença de que o MINA usa apenas uma conexão SSH para cada comando rodado diferente do capistrano, o que acelera o processo de deploy. Fica aí então uma alternativa ao bom e velho capistrano.

1
2
3
4
5
6
$ mina deploy
-----> Deploying to 2012-06-12-040248
       ...
       Lots of things happening...
       ...
-----> Done.

 

Slack Notifier

O Slack é o sistema unanimo  de mensagens  para equipes  entre os desenvolvedores no mundo todo e ele permite a criação de integrações, bots e etc, o que cria possibilidades muito interessantes. A Gem Slack-Notifier como o nome já diz ajuda na integração em seu Projeto e o Slack, com apenas uma simples chamada você avisa sua equipe sobre os eventos mais importantes que estão acontecendo no seu Projeto instantaneamente.
Recentemente eu usei essa Gem em um projeto para notificar uma equipe sobre novos cadastros e isso teve um efeito muito positivo no projeto.

1
2
3
4
require 'slack-notifier'
 
notifier = Slack::Notifier.new "WEBHOOK_URL"
notifier.ping "Hello World"

Whenever

Com o Whenever você consegue escrever comandos simples para programar o cron jobs e não sofre muito com isto.
Escrever comandos é tão simples quanto esse exemplo:

1
2
3
4
5
6
7
8
9
  every 3.hours do # 1.minute 1.day 1.week 1.month 1.year is also supported
    runner "MyModel.some_process"
    rake "my:rake:task"
    command "/usr/bin/my_great_command"
  end
 
  every 1.day, :at => '4:30 am' do
    runner "MyModel.task_to_run_at_four_thirty_in_the_morning"
  end

Chartkick

Com essa Gem você consegue criar Gráficos gerados por javascript usando poucas linhas de rails. Você pode criar gráficos de linha, gráfico de área e até gráficos usando o mapa mundi.
Um exemplo de gráfico de área:
chartkick gem

 

Rails admin

Se você quer gerar um BackOffice completo para seu projeto o Rails Admin é uma boa alternativa. Você consegue gerar um CRUD para suas tabelas editando apenas um simples arquivo. Se você quiser melhorar a aparência do BackOffice (que não é ruim) você pode usar um dos templates prontos ou até mesmo criar o seu.
Eu tive sucesso usando essa Gem em vários projetos e realmente recomendo o uso dela.

687474703a2f2f692e696d6775722e636f6d2f37384273654e702e706e672c

(Exemplo usando o Tema Rollincode)

 

Rack attack

O Rack Attack é um Middleware para proteger seu Web App de ataques na internet. Usando essa Gem é possível criar Safelisting, Blocklisting e bloquear o acesso para determinado IP depois de ‘X’ tentativas por minuto de acesso a determinada página como /login (Brute Force)  por exemplo.

1
2
3
4
5
6
# Always allow requests from localhost
# (blocklist & throttles are skipped)
Rack::Attack.safelist('allow from localhost') do |req|
  # Requests are allowed if the return value is truthy
  '127.0.0.1' == req.ip || '::1' == req.ip
end

(Exemplo de configuração de Safelist)

 

Awesome print

Essa Gem serve para você melhorar a aparência dos resultados das consultas ao Banco de Dados enquanto usa o Rails Console. Pode parecer um pouco simples, mas quando você precisa investigar ou testar algo usando o console é realmente difícil encontrar o campo de retornos que você está procurando  sem formatação do banco de dados.

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
rails&=> require "awesome_print"
rails&=> ap Account.limit(2).all
[
    [0] # {
                     :id => 1,
                :user_id => 5,
            :assigned_to => 7,
                   :name => "Hayes-DuBuque",
                 :access => "Public",
                :website => "http://www.hayesdubuque.com",
        :toll_free_phone => "1-800-932-6571",
                  :phone => "(111)549-5002",
                    :fax => "(349)415-2266",
             :deleted_at => nil,
             :created_at => Sat, 06 Mar 2010 09:46:10 UTC +00:00,
             :updated_at => Sat, 06 Mar 2010 16:33:10 UTC +00:00,
                  :email => "info@hayesdubuque.com",
        :background_info => nil
    },
    [1] # {
                     :id => 2,
                :user_id => 4,
            :assigned_to => 4,
                   :name => "Ziemann-Streich",
                 :access => "Public",
                :website => "http://www.ziemannstreich.com",
        :toll_free_phone => "1-800-871-0619",
                  :phone => "(042)056-1534",
                    :fax => "(106)017-8792",
             :deleted_at => nil,
             :created_at => Tue, 09 Feb 2010 13:32:10 UTC +00:00,
             :updated_at => Tue, 09 Feb 2010 20:05:01 UTC +00:00,
                  :email => "info@ziemannstreich.com",
        :background_info => nil
    }
]

Peek

O Peek é uma ferramenta para te ajudar a entender alguns dados sobre sua aplicação. Ele foi desenvolvido pelo GitHub para uso interno mas posteriormente foi liberado para qualquer um integrar em seu próprio projeto.
O Peek adiciona uma barra no seu site (enquanto você está em development) para te dar alguns  insights sobre o banco de dados, redis, mongo e etc. Vale a pena conferir.

Peek Gem

 

 

Esse foi o primeiro post desse blog, espero que tenham gostado. 🙂
Outras listas sobre Gems virão assim como outros posts (alguns em vídeo) mostrando a criação de algumas Apps de exemplo (e alguns Bots também).

Curta minha página no Facebook para receber os novos posts e se inscreva no canal do Youtube para receber notificações sobre os ScreenCasts.

Obrigado!

Leonardo Scorza

Deixe seu Feedback!

Comentários