Comment ajouter une route au chemin racine

Dans mon plugin, j’ai une route définie ainsi dans config/routes.rb :

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

Et je peux exécuter :

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

et obtenir la clé publique comme je le souhaite. :tada:

Ne voulant pas laisser les choses en l’état (et les utilisateurs copieront presque certainement cela, donc 9 caractères supplémentaires ne signifient rien), je souhaite pouvoir exécuter :

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

J’ai examiné de nombreux autres plugins, et il semble que quelque chose comme ceci devrait fonctionner :

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

Cela ne fonctionne pas du tout. Plusieurs tentatives que j’ai faites (j’ai essayé beaucoup de choses et je n’aurais vraiment pas dû perdre de temps sur ce moulin à vent particulier) semblaient bien capturer la route, mais ensuite il me faudrait faire… quelque chose… pour lui indiquer de chercher ce contrôleur dans pfaffmanager/get_pub_key_by_name.

Avez-vous essayé de suivre cela

et de modifier le paramètre at: en conséquence ?

2 « J'aime »

Merci, Rafael ! Cela m’a permis d’y arriver.

En gros, j’ai simplement monté mon plugin à / puis ajouté /pfaffmanager au début des routes dans ....routes.draw. Comme pour la plupart de ces problèmes, la solution devient évidente une fois qu’on la trouve.

2 « J'aime »

L’autre façon de le faire est comme suit :

1 « J'aime »