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

# AppSignal para Ruby: Ferramenta de diagnóstico

export const VersionRequirements = ({versions = []}) => {
  if (!Array.isArray(versions) || versions.length === 0) {
    return null;
  }
  const boundaries = {
    upper: " or lower",
    exact: "",
    lower: " or higher"
  };
  const containerStyle = {
    marginTop: "0.5rem",
    marginBottom: "1.5rem"
  };
  const lineStyle = {
    display: "block",
    margin: "0 0 0.35rem 0",
    fontSize: "0.875rem",
    lineHeight: "1.4"
  };
  const pillBaseStyle = {
    display: "inline-block",
    padding: "0.1em 0.4em",
    borderRadius: "0.25rem",
    border: "1px solid",
    fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace",
    fontSize: "0.85em",
    fontWeight: 500
  };
  const pillColors = {
    "AppSignal for Elixir": {
      background: "#f3e8ff",
      borderColor: "#e9d5ff",
      color: "#9333ea"
    },
    "AppSignal for Front-end": {
      background: "#fef9c3",
      borderColor: "#fde68a",
      color: "#ca8a04"
    },
    "AppSignal for Go": {
      background: "#ccfbf1",
      borderColor: "#99f6e4",
      color: "#0d9488"
    },
    "AppSignal for JavaScript": {
      background: "#fef9c3",
      borderColor: "#fde68a",
      color: "#ca8a04"
    },
    "AppSignal for Node.js": {
      background: "#dcfce7",
      borderColor: "#bbf7d0",
      color: "#16a34a"
    },
    "AppSignal for Python": {
      background: "#dbeafe",
      borderColor: "#bfdbfe",
      color: "#2563eb"
    },
    "AppSignal for Ruby": {
      background: "#fee2e2",
      borderColor: "#fecaca",
      color: "#dc2626"
    },
    "AppSignal for Rust": {
      background: "#ffedd5",
      borderColor: "#fed7aa",
      color: "#ea580c"
    }
  };
  const defaultPillColor = {
    background: "#f4f4f5",
    borderColor: "#e4e4e7",
    color: "#52525b"
  };
  const getPillStyle = name => ({
    ...pillBaseStyle,
    ...pillColors[name] || defaultPillColor
  });
  const getBoundText = bound => {
    return boundaries[bound] || boundaries.lower;
  };
  return <div style={containerStyle}>
      {versions.map((v, i) => <p key={`${v.name}-${v.version}-${v.bound || "lower"}-${i}`} style={lineStyle}>
          This feature requires{" "}
          <code style={getPillStyle(v.name)}>{v.name}</code> version {v.version}
          {getBoundText(v.bound)}.
        </p>)}
    </div>;
};

<VersionRequirements
  versions={[
{ name: "AppSignal for Ruby", version: "1.1.0" }
]}
/>

A gem AppSignal para Ruby inclui uma ferramenta de autodiagnóstico que pode ser usada para depurar a instalação e a configuração da sua integração com o AppSignal. É uma das primeiras ferramentas que nossa equipe de suporte pede para você executar ao depurar um problema.

## O relatório de diagnóstico

Você pode usar esta ferramenta de diagnóstico para testar e validar sua instalação do AppSignal. Ela gera informações úteis para depurar problemas e verifica se o agente do AppSignal consegue rodar na arquitetura da máquina e se comunicar com os servidores do AppSignal.

Esta ferramenta de diagnóstico coleta e exibe o seguinte:

* Informações sobre a gem do AppSignal.
* Informações sobre o sistema host e o Ruby.
* Se a [extensão](/appsignal/how-appsignal-operates#extension) e o [agente](/appsignal/how-appsignal-operates#agent) do AppSignal podem rodar no sistema host.
* Todas as opções de configuração definidas (incluindo valores padrão).
* Se a configuração é válida e está ativa.
* Se a Push API key está presente e é válida (requer conexão com a internet).
* De onde vêm os valores das opções de configuração.
* Se os caminhos de sistema necessários existem, têm permissão de escrita e qual usuário e grupo são os proprietários.
* Pequenos trechos do final dos arquivos de log disponíveis.

Você pode ler mais sobre como usar o comando diagnose na nossa documentação de [Depuração](/support/debugging).

## Enviando o relatório

Na versão `2.2.0` ou superior da gem, você será solicitado a enviar o relatório para o AppSignal. Se aceito, o relatório será enviado para nossos servidores e você receberá um token de suporte.

Quando você [nos enviar este token de suporte](mailto:support@appsignal.com) nós revisaremos o relatório e ajudaremos você a depurar o problema. Já notamos que copiar e colar a saída do relatório geralmente perde a formatação e dificulta a leitura, por isso ele é enviado para nossos servidores no formato JSON.

Na versão `2.8.0` da gem foi adicionada a opção de visualizar o relatório você mesmo em AppSignal.com. Um link para o relatório é exibido na saída do diagnose. Esta visualização web também mostrará quaisquer problemas de validação e avisos que nosso sistema detectou.

## Uso

Na linha de comando dentro do seu projeto, execute:

<CodeGroup>
  ```bash Bash theme={null}
  appsignal diagnose
  ```
</CodeGroup>

Se você estiver enfrentando um problema em produção e precisar enviar o relatório para o AppSignal para obter suporte, pode executar o seguinte comando para gerar e enviar o relatório para nossos servidores:

<CodeGroup>
  ```bash Bash theme={null}
  bundle exec appsignal diagnose --environment=production --send-report
  ```
</CodeGroup>

## Opções

| Opção                                                | Descrição                                                                         |
| ---------------------------------------------------- | --------------------------------------------------------------------------------- |
| [`--environment=<environment>`](#environment-option) | Define o ambiente a ser usado no comando, por exemplo, `production` ou `staging`. |
| [`--[no-]send-report`](#report-submission-option)    | Envia automaticamente ou não envia o relatório.                                   |
| `--[no-]color`                                       | Alterna a colorização da saída.                                                   |

### Opção de ambiente

Para selecionar um ambiente específico com a CLI, execute o comando abaixo:

<CodeGroup>
  ```bash Bash theme={null}
  appsignal diagnose --environment=production
  ```
</CodeGroup>

A opção de ambiente é útil quando não há um ambiente padrão (apps não-Rails e apps configurados com um [arquivo de configuração](/ruby/configuration/load-order#file)) ou quando o ambiente padrão não é o que você deseja diagnosticar. A ferramenta diagnose vai te avisar quando nenhum ambiente estiver selecionado.

### Opção de envio do relatório

As opções para [enviar o relatório](#submitting-the-report) imediatamente, ou não, foram adicionadas na versão `2.8.0` da gem do AppSignal. Selecionar se quer ou não enviar o relatório com essas opções não exibirá mais essa pergunta, facilitando o uso em ambientes não interativos.

Para executar o diagnose e enviar os dados do relatório para o AppSignal, execute o comando abaixo:

<CodeGroup>
  ```bash Bash theme={null}
  appsignal diagnose --send-report
  ```
</CodeGroup>

Para executar o diagnose sem enviar os dados do relatório para o AppSignal, execute o comando abaixo:

<CodeGroup>
  ```bash Bash theme={null}
  appsignal diagnose --no-send-report
  ```
</CodeGroup>

## Formato de saída da configuração

### Formato dos valores das opções de configuração

As opções de configuração são exibidas no CLI como seus valores inspecionados. Isso significa que as exibimos como o Ruby faria em um console.

* Valores String são exibidos entre aspas duplas, por exemplo, `"My app name"`.
* Valores Boolean são exibidos como seus valores brutos: `true` e `false`.
* Valores Array são exibidos como uma coleção de valores entre colchetes, por exemplo, `["HTTP_ACCEPT", "HTTP_ACCEPT_CHARSET"]`.
  * Arrays vazios são exibidos como dois colchetes: `[]`.
* Valores Nil são exibidos como `nil`.

### Fontes de configuração

A seção de configuração também exibe a origem dos valores das opções de configuração, o que pode ajudar a identificar fontes que sobrescrevem valores definidos em outras fontes de configuração.

Você pode ler mais sobre fontes de configuração, sua ordem de carregamento e prioridade na documentação sobre [ordem de carregamento da configuração](/ruby/configuration/load-order).

As opções de configuração são exibidas com base na fonte de seus valores e na quantidade de fontes que as definem, como no exemplo abaixo:

```text Shell theme={null}
Configuration
  # Option with a value loaded only from the default source
  send_params: true

  # Option with one source
  # A different source than the default source
  name: "My app name" (Loaded from file)

  # Option with multiple sources
  # Listed in order of priority (highest priority last)
  active: true
    Sources:
      default: false
      file:    false
      env:     true
```

[debugging]: /support/debugging.html
