No meu projeto atual eu preciso de alguma coisa que me permita rodar processos em background, liberando a aplicação para o usuário. Entre as soluções atuais, a mais atraente é um plugin chamado Background-fu.
Ok, plugin instalado, exemplos rodados e tudo perfeito. Mas na hora de codificar o meu processo, ele não funcionava. Mexi em tudo, testei para não ver se era erro do código mesmo, mas nada.
Primeiro erro: Silenciei a exception gerada. Depois de consertar isso, o log me mostrou a exception linda, do jeito que eu queria.
Segundo erro: Passei um model como parâmetro, direto do controller pro agendador dos jobs. Mesmo sendo tudo código ruby, ele serializa e deserializa depois, o que fez o objeto ficar estranho e parar de responder aos métodos.
Solução: Salve o model na base, passe só o id para o agendador do Background-fu e, uma vez dentro do job, dê um find do model e chame os métodos que você quiser.

2 comments ↓
Sabes de alguma comparação entre esse Background-fu e BackgroundRB e BJ?
Tenho utilizado o BackgroundRB com sucesso, mas tenho lido que o BJ é bem mais performático.
Não conhecia esse BCK-Fu.
O Background-fu é recomendado nos casos mais simples.
Quando você tem que mexer com muitos processos, ou precisa agendá-los (às 9 da noite do dia 30 de agosto, por exemplo), o certo é usar um dos outros dois mesmo.
Leave a Comment