Pular para o conteúdo principal

Notas:

  • Este recurso está disponível desde a versão 1.3 da gem Ruby e só funciona para classes.
  • O suporte ao Ruby 3.0 para argumentos nomeados foi adicionado na gem Ruby 2.11.4.
Às vezes, os blocos de instrumentação não são precisos o suficiente. Cada aplicação é diferente, e o mesmo vale para o código que a executa. Os desenvolvedores sabem que código e, mais precisamente, que métodos instrumentar. É possível instrumentar métodos no seu código Ruby diretamente com o AppSignal. Usando a gem Ruby appsignal, você pode usar nossas integrações com objetos, que fornecem alguns helpers úteis para isso.

Instalação

Ative a integração de objetos requerendo a seguinte linha após carregar a própria gem appsignal
require 'appsignal/integrations/object'
e prossiga para especificar quais métodos você quer testar em qualquer classe que desejar.

Exemplo

require 'appsignal'
require 'appsignal/integrations/object'

class Foo
  def bar
    1
  end
  appsignal_instrument_method :bar

  def self.bar
    2
  end
  appsignal_instrument_class_method :bar
end

Foo.new.bar
# => 1
Foo.bar
# => 2

Uso

Temos helpers diferentes para métodos de instância e métodos de classe, appsignal_instrument_method e appsignal_instrument_class_method respectivamente. Chame-os no nível da classe em qualquer classe Ruby, mesmo aquelas da biblioteca padrão do Ruby, e comece a instrumentar. Você não precisa incluir mais nada na classe, uma vez que carregue o arquivo de integração, ele se torna disponível em todo lugar. Instrumente qualquer método chamando o helper com o nome do método que você quer instrumentar. Se o método não existir, ele lançará um erro, assim como o Ruby faria por padrão. Uma vez que uma requisição tenha sido processada pelo AppSignal com esse tipo de instrumentação, você poderá ver a instrumentação de método no detalhamento de eventos na página de amostra. Event tree with method instrumentation Você também pode personalizar o nome do evento que é enviado para nós usando a opção :name.
class Foo
  def bar
  end
  appsignal_instrument_method :bar

  def self.bar
  end
  appsignal_instrument_class_method :bar, name: "bar.class_method.Foo.methods"
end