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

# Capistrano

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.3" },
{ name: "Capistrano", version: "2" }
]}
/>

A integração com [Capistrano](http://capistranorb.com/) garante que um marcador de deploy do AppSignal seja criado em
cada deploy. Leia mais sobre
[marcadores de deploy](/appsignal/terminology#markers). Alguma configuração manual
pode ser necessária.

## Instalação

Certifique-se de carregar o arquivo `appsignal/capistrano` no `Capfile` do Capistrano.
Isso deve ser feito automaticamente quando você executa o comando `appsignal install`
durante a instalação.

<CodeGroup>
  ```ruby Ruby theme={null}
  # Capfile
  require 'capistrano'
  # Other Capistrano requires.
  require 'appsignal/capistrano'
  ```
</CodeGroup>

## Configuração

### appsignal\_config

<CodeGroup>
  ```ruby Ruby theme={null}
  # deploy.rb
  set :appsignal_config, name: 'My app'
  ```
</CodeGroup>

`appsignal_config` permite que você sobrescreva qualquer configuração carregada do [arquivo de configuração](/ruby/configuration).

### appsignal\_env (desde a versão 1.3 da gem)

<CodeGroup>
  ```ruby Ruby theme={null}
  # deploy.rb
  set :stage, :alpha
  set :appsignal_env, :staging
  ```
</CodeGroup>

`appsignal_env` permite que você carregue um ambiente AppSignal diferente quando o nome
de um stage não corresponder ao ambiente AppSignal nomeado no arquivo de configuração
ou variável de ambiente do AppSignal.

### appsignal\_revision (desde a versão 0.8.8 da gem)

<Warning>
  Esse método de reportar marcadores de deploy está **obsoleto** e pode ser removido a qualquer momento no futuro.
  Reportar marcadores de deploy usando esse método só é útil para aplicações pequenas que usam uma única instância da aplicação. Ele cria um novo marcador de deploy em um momento específico, independentemente da versão que a aplicação está realmente executando. Isso também significa que é mais propenso a erros, agrupando dados que não deveriam pertencer ao deploy. Detectamos a implantação automaticamente lendo o arquivo `REVISION` que o Capistrano adiciona ao diretório de release desde a versão 4.5.18 da gem Ruby.
</Warning>

No Capistrano 2, o AppSignal consegue buscar a revisão da configuração do Capistrano.

No Capistrano 3, no entanto, isso não está mais disponível, e definir a
revisão é recomendado.

<CodeGroup>
  ```ruby Ruby theme={null}
  # deploy.rb
  set :appsignal_revision, "my_revision"
  ```
</CodeGroup>

A revisão pode ser definida manualmente ou buscada localmente no repositório git.

<CodeGroup>
  ```ruby Ruby theme={null}
  # Sets the current branch's git commit SHA as the revision
  set :appsignal_revision, `git rev-parse --short HEAD`.strip
  ```
</CodeGroup>

Se você estiver usando a configuração de branch do Capistrano, também pode configurar
o git para buscar o SHA do commit da branch selecionada.

<CodeGroup>
  ```ruby Ruby theme={null}
  set :branch, "main"
  # Sets the selected branch's git commit SHA as the revision
  set :appsignal_revision, `git rev-parse --short #{fetch(:branch)}`.strip
  ```
</CodeGroup>

### appsignal\_user (desde a versão 2.4.0 da gem)

Usado em combinação com `appsignal_revision` (se necessário), é possível personalizar um usuário de deploy para deploys do Capistrano.

Por padrão, isso usa o nome de usuário local do sistema, lido da variável de ambiente `USER` ou `USERNAME`, então não é necessário configurá-lo se o sistema tiver essas variáveis disponíveis.

Se você quiser personalizar o usuário de deploy, defina a opção de configuração `:appsignal_user` na sua configuração do Capistrano.

<CodeGroup>
  ```ruby Ruby theme={null}
  # deploy.rb
  set :appsignal_user, "Jane" # Custom deploy user name
  ```
</CodeGroup>

## Aplicações de exemplo

Temos duas aplicações de exemplo em nosso repositório de exemplos no GitHub. Os
exemplos mostram como configurar o AppSignal em pequenas aplicações Capistrano enquanto
carregam valores de configuração do ambiente usando gems como dotenv e
Figaro.

* [AppSignal + Capistrano + dotenv][example-dotenv-app]
* [AppSignal + Capistrano + Figaro][example-figaro-app]

[example-dotenv-app]: https://github.com/appsignal/appsignal-examples/tree/capistrano+dotenv

[example-figaro-app]: https://github.com/appsignal/appsignal-examples/tree/capistrano+figaro
