Мне действительно удалось это решить.
Кажется, они обновили код так, чтобы теперь выбрасывалась ошибка, если пользователь не найден, поэтому мне пришлось использовать rescue вместо проверки на 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
Также формат ответа изменился с
resp['body']['user']
на
resp.response.env.body['user']
Моя последняя проблема заключается в том, что при вызове client.sync_sso теперь возникает Internal server error 500.
В логах указано:
ActiveRecord::RecordNotUnique (PG::UniqueViolation: ERROR: duplicate key value violates unique constraint "user_emails_pkey"
Однако, если я использую точно такие же данные в терминале Rails и запускаю client.sync_sso, всё работает идеально.
Кстати, я не менял конечную точку для вышеупомянутых частей, чтобы они снова заработали, поэтому кажется, что /users/by-external/ всё ещё действителен.