Il modo abituale per configurare un’app Rails per l’APM è utilizzare un inizializzatore: non sono (ancora) molto familiare con il sistema dei plugin in Discourse. Esiste un modo per caricare un tale inizializzatore all’inizio del ciclo di vita dell’app Discourse utilizzando il sistema di plugin esistente? Se no, quali altre opzioni ci sono? Preferirei non dover fare un fork dell’intera app solo per aggiungere un singolo inizializzatore
@sam Ho provato, ma sembra che questo specifico gem ddtracesi aspetti di poter essere eseguito anche in before_initialize. Tuttavia, non sembra che before_initialize sia un metodo valido in plugin.rb. Esistono altre opzioni per far eseguire un plugin in una fase più precoce del ciclo di vita dell’applicazione?
Errore:
[2020-06-30T15:30:40.348519 #2313] ERROR -- ddtrace: [ddtrace] (/workspace/plugins/discourse-datadog/gems/2.6.2/gems/ddtrace-0.37.0/lib/ddtrace/contrib/patcher.rb:43:in `on_patch_error') Impossibile applicare l'patch di Datadog::Contrib::Rails::Patcher. Causa: non è possibile modificare un Array congelato Posizione: /home/vscode/.rbenv/versions/2.6.2/lib/ruby/gems/2.6.0/gems/actionpack-6.0.3.1/lib/action_dispatch/middleware/stack.rb:102:in `insert'
Il mio prossimo passo sarebbe quello di non utilizzare lo strumento automatico applicato con i “patcher” di quel gem, ma invece integrare parte della logica di strumentazione effettiva nel plugin stesso, in modo simile a quanto hai fatto con discourse-prometheus. Credo che abbia senso comunque per integrarsi con alcune specificità di Discourse. Speravo solo che ci fosse un modo per sfruttare la magia che non ho ancora visto.