Naar hoofdinhoud gaan
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.
# Gemfile

gem "appsignal", "~> 3.0"
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.
# Gemfile

gem "appsignal"

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. 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 om AppSignal in Ruby te configureren.
  • De optie skip_session_data is verwijderd. Gebruik in plaats daarvan de send_session_data-optie.
  • De optie debug is verwijderd. Gebruik in plaats daarvan de log_level: debug-optie.
  • De optie transaction_debug_mode is verwijderd. Gebruik in plaats daarvan de log_level: trace-optie.
  • De optie working_dir_path is verwijderd. Gebruik in plaats daarvan de working_directory_path-optie.

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 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 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.
  • 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 maakt het eenvoudiger om errors altijd te rapporteren, zonder het verschil tussen de helpers Appsignal.set_error en Appsignal.send_error te kennen.
# 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
# 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"
  }
)
  • 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 voor meer informatie.
  • De helper Appsignal::Transaction::GenericRequest is verwijderd. Gebruik onze customization helpers 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 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 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.
  • 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.

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

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.