Sono riuscito a risolverlo
Sembra che abbiano aggiornato il codice per generare effettivamente un errore se non viene trovato alcun utente, quindi ho dovuto fare un rescue invece di confrontare se nil?
begin
resp = client.get("/users/by-external/#{user.id}")
rescue DiscourseApi::NotFoundError => error
puts error.response.body['errors'].first
sync_user(user)
else
resp.response.env.body['user']
end
Inoltre, la risposta è cambiata da
resp['body']['user']
a
resp.response.env.body['user']
Il mio ultimo problema rimasto è che quando chiamo client.sync_sso ottengo ora un errore interno del server 500
I log mostrano
ActiveRecord::RecordNotUnique (PG::UniqueViolation: ERROR: duplicate key value violates unique constraint "user_emails_pkey")
Tuttavia, se uso gli stessi identici dettagli nel terminale rails ed eseguo client.sync_sso, funziona perfettamente
Solo per informazione, non ho cambiato l’endpoint affinché le parti sopra riprendano a funzionare, quindi sembra che /users/by-external/ sia ancora valido