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

# Que

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: "2.4.1" }
]}
/>

[Que](https://github.com/chanks/que/) est une alternative haute performance à DelayedJob ou QueueClassic qui améliore la fiabilité de votre application en protégeant vos jobs avec les mêmes garanties ACID que le reste de vos données.

Si Que est détecté lors du démarrage d'AppSignal, nous nous connectons automatiquement à Que pour suivre les exceptions et les problèmes de performances.

Les noms de jobs sont automatiquement détectés en fonction du nom de classe du worker Que et sont suffixés par le nom de la méthode `run`, ce qui donne quelque chose comme : `MyWorker#run`.

Vous pouvez reconnaître les événements de Que avec le nom `perform_job.que` dans la chronologie des événements sur la page de détail de l'incident de performance.

## Prise en charge d'Active Job

L'intégration Que est compatible avec [Active Job](/ruby/integrations/active-job).

Effectuez une mise à niveau vers la version 2.11.0 ou plus récente de la gem Ruby pour une prise en charge améliorée.

## Exemple d'application

Nous avons un exemple d'application dans notre dépôt d'exemples sur GitHub.

* [AppSignal + Rails 5 + Que][example-app]
  L'exemple montre comment configurer une application Rails 5 avec Que surveillée par AppSignal.

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