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

# Sequel

A gem [Sequel][sequel] é um ORM rápido para Ruby. O AppSignal suporta o Sequel
automaticamente e nenhuma instrumentation manual é necessária.

## Desabilitar instrumentation

Temos uma opção de configuração para desabilitar a instrumentation do Sequel.

Leia mais sobre [`:instrument_sequel`][instrument-sequel].

## Problemas conhecidos

### Integração sequel-rails

Ao usar a gem [sequel-rails][sequel-rails], a instrumentation da gem
sequel-rails e da gem AppSignal podem [entrar em conflito ao executar
migrations][instrumentation-issue].

Como ambas as gems estão instrumentando o sequel, você obterá dois eventos
de instrumentation e possivelmente um erro. [Desabilite a instrumentation
sequel do AppSignal](#disable-instrumentation) se isso ocorrer.

### Falta de instrumentation

Algumas extensions do Sequel sobrescrevem a instrumentation da gem AppSignal Ruby. Uma
dessas extensions é a [error\_sql][error_sql-extension]. Isso faz com que o AppSignal
não consiga instrumentar o Sequel. O efeito é que nenhum evento de instrumentation do Sequel
aparece no AppSignal.com.

Para usar as instrumentations do AppSignal nesse cenário, a instrumentation
sequel do AppSignal precisa ser carregada manualmente depois que todas as outras extensions
tiverem sido carregadas.

<CodeGroup>
  ```ruby Ruby theme={null}
  # Carrega a extension que sobrescreve a instrumentation do AppSignal. Este é um
  # exemplo. Outras extensions podem sobrescrevê-la também.
  Sequel::Database.extension :error_sql

  # Carrega manualmente a instrumentation do sequel com o AppSignal em combinação
  # com uma extension que sobrescreve a instrumentation da gem AppSignal ao carregar.
  #
  # Certifique-se de definir `instrument_sequel` como `false` na config do AppSignal.
  # http://docs.appsignal.com/ruby/configuration/
  #
  # Observação: Use `Appsignal::Hooks::SequelLogExtension` para a versão Sequel 4.34
  # e inferior.
  Sequel::Database.register_extension(
    :appsignal_integration,
    Appsignal::Hooks::SequelLogConnectionExtension
  )
  Sequel::Database.extension(:appsignal_integration)
  ```
</CodeGroup>

Observação: somente a partir da versão `2.0.2`, a funcionalidade das outras extensions permanece
intacta após o carregamento da instrumentation do AppSignal.

## Aplicações de exemplo

Temos duas aplicações de exemplo no nosso repositório de examples no GitHub.

* [AppSignal + Sequel][example-app]\
  O exemplo mostra como configurar o AppSignal com Sequel e Rails, sem
  ActiveRecord e usando apenas a gem sequel, não a gem sequel-rails.
* [AppSignal + Sequel - app de instrumentation manual][example-manual-instrumentation-app]\
  Este exemplo mostra como carregar manualmente a instrumentation Sequel do AppSignal
  em uma aplicação Rails, usando apenas a gem sequel, não a gem sequel-rails.

[sequel]: http://sequel.jeremyevans.net/

[sequel-rails]: https://github.com/TalentBox/sequel-rails

[instrument-sequel]: /ruby/configuration/options.html#option-instrument_sequel

[instrumentation-issue]: https://github.com/appsignal/appsignal-ruby/issues/91

[example-app]: https://github.com/appsignal/appsignal-examples/tree/rails-5+sequel

[example-manual-instrumentation-app]: https://github.com/appsignal/appsignal-examples/tree/rails-5+sequel-manual-instrumentation

[error_sql-extension]: http://sequel.jeremyevans.net/rdoc-plugins/files/lib/sequel/extensions/error_sql_rb.html
