Pergunta

Existe alguma maneira de configurar o agendamento simples de tarefas dentro de um aplicativo Rails? Há pedaços de código que eu quero correr a cada hora, ou todos os dias ou toda semana. Não quero dividi -los em scripts separados que eu tenho que agendar por meio de trabalhos de Cron. Se eu fizesse isso, teria que lembrar de fazer backup dos scripts e, se eu reconstruir um servidor, tenho que adicionar de volta todos os trabalhos de Cron, isso parece um pouco confuso pelo que preciso.

Eu gostaria de poder agendar um empregos em algum lugar do meu aplicativo Rails e tê -los magicamente correndo quando eu quiser! Alguma ideia?

Foi útil?

Solução

Existem jóias/plugins para isso, como Rufus-Scheduler ou o mais popular 'sempre que' Gem. Eu gosto da solução do @Douglassellers, porém, eu não tinha ouvido falar sobre isso.

Outras dicas

Eu uso o tardio de trabalho, um "banco de dados apoiado pela fila de prioridade assíncrona" para realizar algo semelhante. Dê uma olhada em http://github.com/tobi/delayed_job

Você ainda precisará ter algo que inicie 'Rake Jobs: Work', mas é melhor do que ter muitos trabalhos diferentes de Cron. Observe na documentação o atributo: run_at - que parece que ele pode resolver o problema "Agene a The Jobs em algum lugar do meu aplicativo Rails e faça com que eles sejam executados magicamente quando eu quiser que eles" ".

Você pode usar algo como Rails Cron (Gem Install Rails_Cron) para fazer isso, que gira em outro processo de Rails dedicado a fazer tarefas de segundo plano programadas. Eu recomendaria contra fazê -lo dessa maneira, pois a instância do Extra Rails terá que ser monitorada e parada e iniciada junto com o restante do seu aplicativo e, na minha experiência, é muito propenso a cair.

Uma solução melhor é apenas usar o Craken, http://github.com/latimes/craken, para gerenciar o CRONTABS através de arquivos YAML no seu aplicativo Rails. Cada tarefa agendada é definida em um arquivo YAML e, em seguida, na implantação, decide se o arquivo Crontab no nível do sistema precisa ou não ser atualizado ou não. Ele se conecta diretamente ao seu arquivo de implantação do Capistrano e é razoavelmente sua chave. Isso dá a vantagem de ainda gerenciar suas tarefas programadas no seu aplicativo Rails, enquanto realmente as executa com o nível do sistema operacional.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top