Como adicionar rota ao caminho raiz

No meu plugin, tenho uma rota assim em config/routes.rb:

Pfaffmanager::Engine.routes.draw do
  get "/ssh-key/:hostname" => "serverkeys#get_pub_key_by_hostname", constraints: { end

E consigo fazer

  curl https://www.pfaffmanager.com/pfaffmanager/ssh-key/test.myforum.us

e obter a chave pública como desejo. :tada:

Não disposto a deixar bem como está (e os usuários quase certamente vão copiar/colar isso, então 9 caracteres a mais não significam nada), quero conseguir fazer

  curl https://www.pfaffmanager.com/ssh-key/test.myforum.us

Já olhei vários outros plugins e parece que algo assim deveria funcionar:

Discourse::Application.routes.prepend do
  get "/ssh-key/:hostname" => "serverkeys#get_pub_key_by_hostname", constraints: { hostname: /[^\/]+/ }
end

Isso não funciona de jeito nenhum. Algumas coisas que tentei (tentei um monte de coisas e realmente não deveria ter gasto tempo com esse moinho de vento específico) pareciam estar capturando a rota corretamente, mas então eu precisaria fazer… algo… para dizer para procurar aquele controlador em pfaffmanager/get_pub_key_by_name.

Você tentou seguir este

e alterar o parâmetro at: de acordo?

2 curtidas

Obrigado, Rafael! Isso me ajudou a resolver.

Basicamente, eu apenas montei meu plugin em / e depois adicionei /pfaffmanager no início das rotas em ....routes.draw. Como na maioria desses problemas, a resposta fica óbvia assim que a encontro.

2 curtidas

A outra maneira de fazer isso é assim:

1 curtida