Substituindo user_guardian.rb em um plugin (sem necessidade de fork!)

Se alguém encontrar isso e estiver tão perdido quanto eu, estou fornecendo meu código abaixo, pois consegui fazê-lo funcionar como pretendido. Não modifiquei nenhum arquivo. Simplesmente criei um novo arquivo plugin.rb e coloquei dentro dele o seguinte:

# name: noms
# about: Permite que usuários no Modo Anônimo alterem seus nomes de usuário
# version: 0.1


require_dependency 'guardian'
require_dependency 'guardian/user_guardian'

class ::Guardian
end

module ::UserGuardian
  def can_edit_username?(user)
    return false if SiteSetting.sso_overrides_username?
    return true if is_staff?
    return false if SiteSetting.username_change_period <= 0
    return true if is_anonymous?
    is_me?(user) && ((user.post_count + user.topic_count) == 0 || user.created_at > SiteSetting.username_change_period.days.ago)
  end


  def can_edit_name?(user)
    return false unless SiteSetting.enable_names?
    return false if SiteSetting.sso_overrides_name?
    return true if is_staff?
    return true if is_anonymous?
    can_edit?(user)
  end
end

Isso substitui a classe user_guardian.rb no núcleo do Discourse para permitir que usuários alterem o nome de usuário e o nome de suas contas de usuário anônimo.

Se você comparar o que tenho aqui com o que está em user_guardian.rb no núcleo do Discourse, verá que há um monte de outras coisas com as quais não precisei fazer nada, então as deixei como estavam. Tudo o que precisei foi editar esses dois métodos can_edit_username e can_edit_name, alterando alguns valores de retorno de false para true, e consegui realizar o que precisava.

Certamente há melhorias que poderiam ser feitas, e provavelmente há melhores práticas que pude aprender lendo os posts vinculados aqui e em outros lugares. Mas se você é novo em Ruby como eu e só quer fazer uma alteração muito simples no núcleo, este é um exemplo minimalista funcional do que você precisa fazer.

Muito obrigado às pessoas neste tópico pela paciência, encorajamento e assistência! Em especial a @merefield, que na verdade me ajudou em outro post no passado.