プラグイン内では、config/routes.rb に以下のようなルートが定義されています:
Pfaffmanager::Engine.routes.draw do
get "/ssh-key/:hostname" => "serverkeys#get_pub_key_by_hostname", constraints: { end
これにより、以下のように実行すると期待通りに公開鍵を取得できます。
curl https://www.pfaffmanager.com/pfaffmanager/ssh-key/test.myforum.us
完璧な状態を放置できない性格上(また、ユーザーはほぼ確実にこれをコピー&ペーストするため、9 文字の差は問題ありません)、以下のようにもアクセスできるようにしたいと考えています。
curl https://www.pfaffmanager.com/ssh-key/test.myforum.us
他のプラグインをいくつか調べてみたところ、以下のような実装で動作するはずだと思われます:
Discourse::Application.routes.prepend do
get "/ssh-key/:hostname" => "serverkeys#get_pub_key_by_hostname", constraints: { hostname: /[^\/]+/ }
end
しかし、これは全く機能しません。いくつか試したことがあります(多くのことを試しましたが、この風車に時間を費やすべきではなかったと後悔しています)。一見するとルートが正しくマッチしているように見えたものの、その後 pfaffmanager/get_pub_key_by_name のコントローラーを参照させるために何らかの処理を追加する必要がありました。