Dominando o uso de Jobs no Rails

Os Jobs são uma maneira fácil de você rodar processos demorados em background (evitando lentidão na hora de responder as requisições do usuário e tornando seu sistema mais fluido).
Nesse Screencast eu expliquei como utilizá-los (usando o Active Jobs + Redis + Sidekiq) passo a passo, então venha com a gente nesse jornada e aumente seus skills 🙂


O que vamos criar

Um gerador de relatórios (em formato html) que utiliza um Job para gerar estes relatórios de forma assíncrona.

O que vamos utilizar
Links Úteis

 

Screencasts

Entendendo os Jobs (Parte 1)


Usando os Jobs (Parte 2)


Criando nosso Projeto

Subindo o Redis (já instalado)

1 – Rode no console

*O jeito mais simples é usando docker, mas você pode fazer diretamente

 

Preparando nosso Projeto

1 – Gere o projeto rodando no console:

2 – Adicione ao Gemfile gerado:

3 – Instale rodando no console:

 

Configurando o Sidekiq

1 – Crie um initializer chamado sidekiq.rb como no vídeo e coloque nele:

2 – Coloque no seu config/application.rb:

3 – Coloque no seu routes:

4 – Suba o servidor:

5 – Visite:

http://localhost:3000/sidekiq

 

Gerando nosso Controler e View

1 – Para gerar o controller rode no console:

2 – Na view index gerada coloque:

3 – No controller gerado coloque:

class ReportsController < ApplicationController

 

4 – Ajuste o routes dessa forma:

Gerando nosso Job

1 – Para gerar o Job rode no console:

2 – No Job gerado coloque:

3 – Atualize seu controller colocando:

Subindo o Sidekiq

1 – Rode no console:

Testando

1 – Visite no browser:

dating site without payment

2  – Pronto \o/



12 formas de vencer o bloqueio criativo e escrever textos memoráveis (e 6 dicas extras)

Não perca nenhum conteúdo

Receba nosso resumo semanal com os novos posts, cursos, talks e vagas o/



Espero que este Post tenha sido útil para você,
Muito Obrigado pela atenção,

Grande abraço
Leonardo Scorza


Você é novo por aqui?

Primeira vez no OneBitCode? Curtiu esse conteúdo?
O OneBitCode tem muito mais para você!

O OneBitCode trás conteúdos de qualidade e em português sobre programação com foco em Ruby on Rails e outras tecnologias como Angular, Ionic, React, desenvolvimento de Chatbots e etc.

Se você deseja aprender mais, de uma forma natural e dentro de uma comunidade ativa, visite nosso dating sites pakistani e nosso bdsm dating sites, veja os screencasts e talks no free best granny dating sites, alguns acontecimentos no Instagram, ouça os Podcasts e faça parte de nossa Newsletter.

Além disso, também estamos com alguns e-Books muito interessantes para quem deseja se aprimorar como programador e também como freelancer (os e-Books são gratuitos!):

Espero que curta nossos conteúdos e sempre que precisar de ajuda com os tutoriais, fala com a gente!
Seja por
dating sites pakistani ou e-mail, estamos aqui para você 🙂

Bem-vindo à família OneBitCode \o/

5 1 vote
Article Rating
janeiro 17, 2020
Subscribe
Notify of
guest
9 Comentários
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
alexvirtualbr
5 anos atrás

Oi Léo, muito bom material!!!

Um pequeno “bug” no final quando no ReportExampleJob está sendo gerado um arquivo html:
out_file = File.new(“#{Rails.root.join(‘public’)}/reports/report#{code}.html”, “w”)

E na Index do ReportController tem um filtro apenas para txt:
@reports = Dir[“public/reports/*.txt”]

Abraço e parabéns!!!

Flávio Carvalho
Flávio Carvalho
5 anos atrás

Vlw Leonardo por compartilhar o seu conhecimento conosco!

Jose Antonio PAdre Garcia
Jose Antonio PAdre Garcia
5 anos atrás

Buena

Roger
Roger
5 anos atrás

Ola Leonardo, fiz o teste no cloud9 e funcionou perfeito, mas tentei colocar em teste no heroku, consigo até ver o painel do sidekiq, consigo mandar a pedido do relatório para fila, mas não processa de forma nenhuma. Não sei se tem mais alguma configuração especifica do redis ou sidekiq para o Heroku. Se você tiver essa informação seria interessante disponibilizar, pois encontrei muita coisa na web, mas nada que conseguisse aproveitar, até muita coisa obsoleta. Uso Rais 5.
Desde já agradeço por compartilhar a informação

Thiago Bianchi
4 anos atrás

Olá Leonardo, parabéns pelo artigo!
Estou com um probleminha, veja se você consegue me ajudar. Tenho um job com o objetivo de preencher a variável “$stocks = [ ]”, presente no controller, com os dados recebidos de uma api externa. No job fica assim: “$stocks << JSON.parse(response)". Após realizado o job com sucesso, porém, a variável no controller permanece vazia. Sabe me dizer como posso fazer essa ligação? Obrigado.

Marcus Pereira
2 anos atrás

Me ajudou demais!

Como eu podeira fazer o mesmo com um arquivo csv por exemplo já que o Job não aceita ActionDispatch::Http::UploadedFile como parâmetro?

Ler um csv bem grande seria uma boa deixar para o Job?

Você tem algum artigo a respeito?

Feito com s2 por OneBitCode

9
0
Would love your thoughts, please comment.x
()
x
%d blogueiros gostam disto: