> ## Documentation Index
> Fetch the complete documentation index at: https://docs.appsignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Adicionar instrumentação de método

<Tip>
  <p>Notas:</p>

  <ul>
    <li>
      Este recurso está disponível desde a versão 1.3 da gem Ruby e só funciona para
      classes.
    </li>

    <li>
      O suporte ao Ruby 3.0 para argumentos nomeados foi adicionado na gem Ruby `2.11.4`.
    </li>
  </ul>
</Tip>

Às vezes, os [blocos de instrumentação](/ruby/instrumentation/instrumentation) 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

<CodeGroup>
  ```ruby Ruby theme={null}
  require 'appsignal/integrations/object'
  ```
</CodeGroup>

e prossiga para especificar quais métodos você quer testar em qualquer classe que desejar.

### Exemplo

<CodeGroup>
  ```ruby Ruby theme={null}
  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
  ```
</CodeGroup>

## 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.

<img src="https://mintcdn.com/appsignal-715f5a51/4TRZP0Sq9Zq7PAPW/assets/images/screenshots/method_instrumentation.png?fit=max&auto=format&n=4TRZP0Sq9Zq7PAPW&q=85&s=52f4c7f087df04214b1c2d01be8caa89" alt="Event tree with method instrumentation" width="702" height="348" data-path="assets/images/screenshots/method_instrumentation.png" />

Você também pode personalizar o nome do evento que é enviado para nós usando a
opção `:name`.

<CodeGroup>
  ```ruby Ruby theme={null}
  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
  ```
</CodeGroup>
