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

# Verteiltes Tracing für Ruby

export const Compatibility = ({versions = [], label = "Available in"}) => {
  if (!Array.isArray(versions) || versions.length === 0) {
    return null;
  }
  const defaultPillStyle = {
    borderColor: "#d4d4d8",
    background: "#f4f4f5",
    color: "#3f3f46"
  };
  const pillStyles = {
    "AppSignal for Elixir": {
      background: "#f3e8ff",
      borderColor: "#d8b4fe",
      color: "#6b21a8"
    },
    "AppSignal for Front-end": {
      background: "#fef9c3",
      borderColor: "#fde047",
      color: "#854d0e"
    },
    "AppSignal for Go": {
      background: "#ccfbf1",
      borderColor: "#5eead4",
      color: "#115e59"
    },
    "AppSignal for JavaScript": {
      background: "#fef9c3",
      borderColor: "#fde047",
      color: "#854d0e"
    },
    "AppSignal for Node.js": {
      background: "#dcfce7",
      borderColor: "#86efac",
      color: "#166534"
    },
    "AppSignal for Python": {
      background: "#dbeafe",
      borderColor: "#93c5fd",
      color: "#1e40af"
    },
    "AppSignal for Ruby": {
      background: "#fee2e2",
      borderColor: "#fca5a5",
      color: "#991b1b"
    },
    "AppSignal for Rust": {
      background: "#ffedd5",
      borderColor: "#fdba74",
      color: "#9a3412"
    }
  };
  const getPillStyle = name => ({
    ...defaultPillStyle,
    ...pillStyles[name] || ({})
  });
  return <div className="not-prose my-4 rounded-lg border border-zinc-200 bg-zinc-50 px-4 py-3 text-sm dark:border-white/10 dark:bg-white/5">
      <div className="flex flex-wrap items-center gap-x-2 gap-y-1">
        <span className="font-semibold text-zinc-700 dark:text-zinc-200">
          {label}:
        </span>
        {versions.map((v, i) => <span key={`${v.name}-${v.version}-${i}`} className="inline-flex items-center gap-1 rounded-full border px-2 py-0.5 text-xs font-medium" style={getPillStyle(v.name)}>
            <span>{v.name}</span>
            <span className="opacity-70">
              {v.version}
              {v.exact ? "" : "+"}
            </span>
          </span>)}
      </div>
    </div>;
};

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

<Note>
  **Nur im Collector-Modus:** Dies gilt, wenn AppSignal für Ruby im [Collector-Modus](/ruby/configuration/collector) läuft. Andernfalls hat es keine Auswirkung.
</Note>

[Verteiltes Tracing](/distributed-tracing) zeigt einen Request als einen einzigen Trace über alle Services hinweg, die er durchlaufen hat.

AppSignal für Ruby macht das für die folgenden Integrationen. Sie müssen nichts zwischen Ihren Services übergeben.

## HTTP-Clients

Requests, die mit diesen Bibliotheken gesendet werden, tragen den aktuellen Trace an den aufgerufenen Service weiter:

* [Excon](/ruby/integrations/excon)
* [Faraday](/ruby/integrations/faraday)
* [HTTP.rb](/ruby/integrations/http)
* [Net::HTTP](/ruby/integrations/net-http)

## HTTP-Server

Requests, die mit einem Trace eintreffen, setzen ihn fort:

* [Grape](/ruby/integrations/grape)
* [Hanami](/ruby/integrations/hanami)
* [Padrino](/ruby/integrations/padrino)
* [Rack](/ruby/integrations/rack)
* [Rails](/ruby/integrations/rails)
* [Sinatra](/ruby/integrations/sinatra)
* [Webmachine](/ruby/integrations/webmachine)

## Hintergrundjobs

Jobs laufen im selben Trace wie der Code, der sie eingereiht hat:

* [Active Job](/ruby/integrations/active-job)
* [Delayed Job](/ruby/integrations/delayed-job)
* [Que](/ruby/integrations/que)
* [Resque](/ruby/integrations/resque)
* [Shoryuken](/ruby/integrations/shoryuken)
* [Sidekiq](/ruby/integrations/sidekiq)

Wie der Trace einen Job erreicht, unterscheidet sich je nach Bibliothek. Die Seite jeder Integration beschreibt ihr eigenes Verhalten und ihre Grenzen.
