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

# Upgraden van AppSignal voor Ruby gem 3.x naar 4.x

> Een gids om applicaties te helpen upgraden van AppSignal voor Ruby gem 3 naar versie 4.

AppSignal voor Ruby 4.0 is een major release die ondersteuning voor meerdere errors, aanpasbare sample-data, wijzigingen in hoe andere gems geïnstrumenteerd worden, hoe custom instrumentation werkt, en het verwijderen van eerder verouderde modules introduceert. Volg deze gids om het upgradeproces soepeler te laten verlopen.

## Upgrade naar de laatste 3.x-serie

Voordat u upgradet naar AppSignal voor Ruby gem 4.0, upgrade naar de laatste gem uit de 3.x-serie. Deze versie print en logt deprecatiewaarschuwingen voor zaken die in versie 4.x van de Ruby gem verwijderd zijn. Voer de tests voor uw app uit waarmee de gem geïntegreerd is en los eventuele deprecatiewaarschuwingen en fouten op die u tegenkomt.

Werk eerst in het `Gemfile` van de app de versievergrendeling bij naar `~> 3.0` en voer `bundle update appsignal` uit in een terminal in dezelfde directory als het `Gemfile`.

<CodeGroup>
  ```ruby Ruby theme={null}
  # Gemfile

  gem "appsignal", "~> 3.0"
  ```
</CodeGroup>

Voer uw applicaties uit en los eventuele deprecatiewaarschuwingen op die geprint worden naar de STDERR-output van de applicatie en gelogd worden in `appsignal.log` tijdens de werking ervan.

## Upgrade naar de laatste 4.x-serie

Nadat alle deprecatiewaarschuwingen zijn opgelost met versie 3 van de Ruby gem, verwijdert u de versievergrendeling uit het `Gemfile` en voert u opnieuw `bundle update appsignal` uit om AppSignal voor Ruby naar versie 4 te updaten.

<CodeGroup>
  ```ruby Ruby theme={null}
  # Gemfile

  gem "appsignal"
  ```
</CodeGroup>

## Wijzigingen

Hieronder staan alle noemenswaardige wijzigingen tussen de laatste Ruby gem versie 3 en de nieuwe versie 4. Loop ze door en werk uw applicatie bij zoals beschreven.

### Hoofdbibliotheek

* De methode `Appsignal.start_logger` is verwijderd. De logger wordt nu automatisch gestart bij `Appsignal.start`. Applicaties moeten de `Appsignal.start_logger`-aanroep verwijderen.
* De configuratie van de AppSignal Ruby gem wordt bevroren nadat `Appsignal.start` is aangeroepen. De configuratie kan niet meer worden gewijzigd nadat de Ruby gem is gestart.
* De methode `Appsignal.start` kan slechts één keer worden aangeroepen. Volgende aanroepen worden door de Ruby gem genegeerd.

### Configuratie

* AppSignal start niet als het laden van het `config/appsignal.yml`-bestand een fout veroorzaakt. Controleer de output van de applicatie of het bestand `appsignal.log` op eventuele waarschuwingen.
* Configureer AppSignal in Ruby met de nieuwe [`Appsignal.configure` helper](/ruby/configuration/load-order#configure-helper). Apps die het patroon `Appsignal.config = Appsignal::Config.new(...)` gebruiken, moeten hun apps bijwerken om in plaats daarvan deze methode te gebruiken.
* De methode `Appsignal.config =` is verwijderd. Gebruik in plaats daarvan de [`Appsignal.configure` helper](/ruby/configuration/load-order#configure-helper) om AppSignal in Ruby te configureren.
* De optie `skip_session_data` is verwijderd. Gebruik in plaats daarvan de [`send_session_data`-optie](/ruby/configuration/options#option-send_session_data).
* De optie `debug` is verwijderd. Gebruik in plaats daarvan de [`log_level: debug`-optie](/ruby/configuration/options#option-log_level).
* De optie `transaction_debug_mode` is verwijderd. Gebruik in plaats daarvan de [`log_level: trace`-optie](/ruby/configuration/options#option-log_level).
* De optie `working_dir_path` is verwijderd. Gebruik in plaats daarvan de [`working_directory_path`-optie](/ruby/configuration/options#option-working_directory_path).

### Integraties

* De middleware `Appsignal::Rack::EventHandler` is toegevoegd. Deze voegt de tag `response_status` toe aan samples en houdt een metric `response_status` bij met de response-statuscode van de request. Zie [onze Rack-integratiedocumentatie](/ruby/integrations/rack) voor meer informatie.
* De middleware `Appsignal::Rack::InstrumentationMiddleware` vervangt de middleware `Appsignal::Rack::GenericInstrumentation`. Deze nieuwe middleware stelt de action standaard niet in op "unknown". Het is vereist om de actienaam in elke app-endpoint in te stellen met `Appsignal.set_action` wanneer alleen de middleware `InstrumentationMiddleware` wordt gebruikt. Zie [onze Rack-integratiedocumentatie](/ruby/integrations/rack) voor meer informatie.
* `Appsignal::Grape::Middleware` is hernoemd naar `Appsignal::Rack::GrapeMiddleware`.
* De `Appsignal::Rack::StreamingListener` wordt vervangen door `Appsignal::Rack::InstrumentationMiddleware`.
* De `Appsignal::Hooks::SidekiqPlugin` is verwijderd zonder vervanging.
* De Grape-, Hanami-, Padrino- en Sinatra-integraties gebruiken nu het `Appsignal.load`-mechanisme om met deze libraries te integreren. Volg de installatiegidsen voor deze libraries om bij te werken naar het nieuwe laadmechanisme.
  * [Sinatra](/ruby/integrations/sinatra)
  * [Hanami](/ruby/integrations/hanami)
  * [Grape](/ruby/integrations/grape)
  * [Padrino](/ruby/integrations/padrino)
  * Gebruikt u meer dan één van deze libraries of mount u ze op een Rails-app? [Volg ook deze gids](/ruby/integrations/rack-libraries).
* De errors en performanceproblemen die door onze Rake-integratie worden gerapporteerd, worden nu gerapporteerd onder de namespace "rake".

### Custom instrumentation

* De [`Appsignal.report_error` helper](/ruby/instrumentation/exception-handling) maakt het eenvoudiger om errors altijd te rapporteren, zonder het verschil tussen de helpers `Appsignal.set_error` en `Appsignal.send_error` te kennen.

<CodeGroup>
  ```ruby Ruby theme={null}
  # Before
  Appsignal.set_error(error)
  Appsignal.send_error(error, :tag => "value", "custom namespace")

  # After
  Appsignal.report_error(error)
  Appsignal.report_error(error) do
    Appsignal.set_namespace("custom namespace")
    Appsignal.add_tags(:tag => "value")
  end
  ```
</CodeGroup>

* Meerdere errors kunnen op één transactie worden gerapporteerd met de [`Appsignal.report_error` helper](/ruby/instrumentation/exception-handling#reporting-multiple-exceptions).
* De helpers `Appsignal.monitor_transaction` en `Appsignal.monitor_single_transaction` worden vervangen door de [`Appsignal.monitor` en `Appsignal.monitor_and_stop` helpers](/ruby/instrumentation/background-jobs).
  * Let op: nieuwere versies van de Ruby gem hebben [de `Appsignal.monitor_and_stop` helper afgeschaft](/ruby/instrumentation/background-jobs#stop-requirement).
* Nieuwe helpers voor het toevoegen van tags en sample-data (parameters, request headers, sessiegegevens en aangepaste gegevens) aan transacties. Zie de documentatie over [customization helpers](/guides/custom-data) voor meer informatie.

<CodeGroup>
  ```ruby Ruby theme={null}
  # Before
  Appsignal.tag_request(:tag => "value")
  Appsignal::Transaction.current.set_sample_data(
    "custom_data",
    :i18n => {
      :locale => "en_GB",
      :default_locale => "en_US"
    }
  )

  # After
  Appsignal.add_tags(:tag => "value")
  Appsignal.add_custom_data(
    :i18n => {
      :locale => "en_GB",
      :default_locale => "en_US"
    }
  )
  ```
</CodeGroup>

* Sample-data wordt standaard aangevuld. Het toevoegen van extra parameters, request headers, sessiegegevens en aangepaste gegevens voegt deze samen met de eerder ingestelde waarden. Zie de documentatie over [customization helpers](/guides/custom-data) voor meer informatie.
* De helper `Appsignal::Transaction::GenericRequest` is verwijderd. Gebruik onze [customization helpers](/guides/custom-data) om metadata aan de transactie toe te voegen.
* De request environment keys `appsignal.action` en `appsignal.route` zijn verwijderd. Gebruik in plaats daarvan de helper `Appsignal.set_action` om de actienaam in te stellen.
* De argumenten `tags` en `namespace` zijn verwijderd uit de helpers `Appsignal.set_error` en `Appsignal.send_error`. Gebruik in plaats daarvan de blockmethode om de transactie aan te passen voordat deze wordt verzonden. Zie [onze gids over exception handling](/ruby/instrumentation/exception-handling) voor meer informatie.
* De constante `Appsignal::Minutely` is hernoemd naar `Appsignal::Probes`.
* De methode `Appsignal::Probes.probes.register` is vervangen door `Appsignal::Probes.register`. Zie [onze documentatie over minutely probes](/ruby/instrumentation/minutely-probes) voor meer informatie.
* De helpers `Appsignal.set_host_gauge` en `Appsignal.set_process_gauge` zijn zonder vervanging verwijderd. Tag in plaats daarvan de metric met de hostname of process-ID met behulp van de [`Appsignal.set_gauge` helper](/metrics/custom#gauge).
* De `Appsignal.listen_for_error` helper is zonder vervanging verwijderd. Rescue in plaats daarvan errors handmatig met `rescue => error` en rapporteer ze met de [`Appsignal.report_error` helper](/ruby/instrumentation/exception-handling#appsignalreport_error).

### Interne onderdelen van de bibliotheek

Hier worden wijzigingen vermeld in interne onderdelen van de bibliotheek die mogelijk eerder in onze documentatie of supportcases zijn gebruikt. We raden aan hier niet meer op te vertrouwen. Dit zijn private componenten en kunnen op elk moment wijzigen. Breaking changes zijn onder andere:

* De methoden `Appsignal::Transaction.create` en `Appsignal::Transaction.new` accepteren niet langer de argumenten `id`, `request` en `options`. De transactie-ID wordt nu automatisch gegenereerd.
  * In plaats van handmatig een Transaction-object aan te maken, gebruikt u de [`Appsignal.monitor` helper](/ruby/instrumentation/background-jobs).
  * Om metadata op de transactie in te stellen, gebruikt u onze [customization helpers](/guides/custom-data).
* De methode `Appsignal::Transaction#set_http_or_background_action` is verwijderd. Gebruik in plaats daarvan de helper `Appsignal.set_action`.
* De methode `Appsignal::Transaction#set_http_or_background_queue_start` is verwijderd. Gebruik in plaats daarvan de helper `Appsignal::Transaction#set_queue_start`.
* De helper `AppSignal::Transaction#params=` is verwijderd. Gebruik in plaats daarvan de [`Appsignal.add_params` helper](/guides/custom-data/request-parameters).

## Welkom bij 4.x!

Deze gids zou het upgraden van de meeste Ruby-applicaties naar AppSignal Ruby gem 4.x moeten dekken. Als u vragen heeft, fouten tegenkomt of hulp wilt bij het upgraden naar de nieuwe versie, neem dan gerust [contact op met support][contact].

[contact]: mailto:support@appsignal.com
