Pular para o conteúdo principal
Toda exception registrada em uma Rake task será enviada para o AppSignal e arquivada no namespace “Background”. Observe que rastreamos apenas exceptions em Rake tasks. Não há performance monitoring para Rake tasks. (Para integrar manualmente o performance monitoring em Rake tasks selecionadas, consulte nosso guia de integração e guia de custom instrumentation.) Dependendo de qual versão da gem AppSignal você usa e em qual contexto, alguns passos manuais são necessários.

Integrações

Aplicações Rails

Para aplicações Rails, certifique-se de depender da task :environment. Isso carrega a aplicação Rails na memória e inicia o AppSignal como parte da aplicação.
# lib/tasks/my_task.rb
task :my_task => :environment do
  # faça algo
end

Rakefile

O Rakefile da sua aplicação Rails deve se parecer com o exemplo abaixo. Isso já deveria estar acontecendo, não há necessidade de alterá-lo.
# Rakefile
require File.expand_path("../config/application", __FILE__)

# Requer este arquivo apenas para versões da gem < 1.0
# require "appsignal/integrations/rake"

Rails.application.load_tasks
(Para versões mais antigas da gem AppSignal, versões < 1, você precisará requerer a integração Rake manualmente. Ela é carregada automaticamente para a versão 1.x e superiores.)

Aplicações Ruby

Para aplicações Ruby puras, alguns passos extras são necessários para carregar o AppSignal. O AppSignal precisa ser requerido, configurado e carregado. Veja também nosso guia de integração.
# Rakefile
require "appsignal"

Appsignal.start

task :foo do
  raise "bar"
end

Monitorando performance de Rake tasks

Para monitorar a performance de Rake tasks e todos os eventos que ocorrem na task, configure o AppSignal com a opção de configuração enable_rake_performance_instrumentation definida como true. Com esta funcionalidade habilitada, todas as Rake tasks serão instrumentadas e contadas em direção ao seu plano.

Requisito de stop

Para Rake tasks executando em hosts de curta duração, é necessário parar a gem AppSignal Ruby antes que o processo Rake termine. Isso garantirá que ele reporte os dados das Rake tasks ao AppSignal antes que o host seja desligado. Esse comportamento é necessário apenas em cenários como:
  • Quando uma Rake task agendada (um cron job) é executada por um serviço de hospedagem.
  • Quando uma Rake task é executada em um container que inicia para executar esta Rake task e desliga quando a Rake task termina.
  • Quando uma Rake task é executada em um Heroku runner ou provedores de hospedagem similares.
Não é necessário parar a gem AppSignal Ruby se o host no qual o script é iniciado continuar rodando após o término do script. O AppSignal é parado automaticamente quando a Rake task termina e um container ou ambiente de hospedagem como Heroku é detectado. Este comportamento é controlado pela opção enable_at_exit_hook. Certifique-se de que esta opção esteja definida como true para scripts que exigem que o AppSignal seja parado, caso não seja detectado automaticamente. Pode ser necessário adicionar uma chamada adicional de sleep de alguns segundos para garantir que haja tempo suficiente para enviar todos os dados. Use o exemplo de uso de at_exit do código abaixo, se necessário.
# Exemplo de task em host de curta duração

# Este bloco é chamado depois que todas as tasks são executadas
# Garante que o AppSignal agent tenha tempo suficiente para enviar os dados para os servidores AppSignal
at_exit { sleep 10 }

task :foo do
  # O código da sua Rake task
end

Requisito de stop legado

A seção abaixo é para aplicações usando a gem Ruby 4.5.7 e versões inferiores. Essas versões não incluem a opção enable_at_exit_hook que automatiza esse comportamento.Para versões mais novas da gem Ruby, veja a seção requisito de stop.
Ao executar uma única Rake task em um host de curta duração (por exemplo, com containers Docker, Kubernetes ou Heroku schedulers) existem três requisitos. Isso garante que a extensão AppSignal do app tenha tempo de descarregar os dados para o agent e o agent tenha tempo de enviar os dados para a nossa API antes de desligar (o container). Os requisitos são:
  • Appsignal.stop deve ser chamado na Rake task.
  • running_in_container deve ser definido como true na config.
    • Para a maioria dos tipos de container, running_in_container é automaticamente definido como true quando detectado; para outros, configuração manual é necessária.
  • Um sleep de, por exemplo, 10 segundos para dar tempo ao AppSignal agent de enviar os dados
Um exemplo de como Appsignal.stop é chamado no Rakefile:
# Exemplo de task em host de curta duração

# Este bloco é chamado depois que todas as tasks são executadas
# O argumento "rake" é o nome do nome do processo pai que está sendo
# parado e o registra como o motivo pelo qual o AppSignal está parando.
at_exit do
  Appsignal.stop "rake"
  sleep 10 # Para hosts de curta duração, dê tempo ao AppSignal agent de enviar os dados
end

task :foo do
  # Rastreando dados com o AppSignal na sua task
  Appsignal.increment_counter "my_custom_counter"
end
Observação: Um sleep de 10 segundos foi adicionado ao final do exemplo de Rake task acima. Isso é necessário para tasks que são executadas em hosts de curta duração. Quando a task é concluída, o processo é interrompido. A chamada Appsignal.stop descarrega todos os dados de transaction atualmente na extensão AppSignal para o nosso agent. Em seguida, ele dorme por 10 segundos para permitir que o agent envie os dados antes de desligar.