2

Rails では、次の方法で定義したすべてのルートを表示します。

rake routes

Roda アプリでこれを行う組み込みの方法はありますか?

そうでない場合、Roda 開発者がすべてのルートをすばやく表示するために使用する一般的なパターンはありますか (おそらく、ある種の Rake タスクですか?)

4

1 に答える 1

2

自動は不可。rodaルートはリクエストが入ったときに動的に評価されるため、事前にロードされず、どこかで利用可能なデータ構造に保存されます。

ドキュメントが言うように:

ルート ブロックは、新しいリクエストが着信するたびに呼び出されます。Rack::Request のサブクラスのインスタンスが生成され、ルートを照合するためのメソッドがいくつか追加されます。

最小限の労力で済む簡単な解決策は、プラグインを使用することですが、次のように、ファイルroda-route_list内の各ルートの上部に説明のコメントが必要です。app.rb

# route: /path/to/foo
# route: GET /path/to/foo
# ...

(他の可能性についてはドキュメントを確認してください)

roda-route_list次に、ルート メタデータを含む json ファイルを作成する必要があります。これを行うには、プラグインに同梱されているスクリプトを起動します。

roda-parse_routes -f routes.json app.rb

アプリのルートにファイルroutes.jsonを作成し、最終的に次のようにルートを一覧表示できます。

route_list # => [{:path=>'/path/to/foo', :methods=>['GET', 'POST']}]
# (it is an Array of route metadata hashes)

次のような単純な rake タスクを作成して、すべてのルートを一覧表示することもできます。

# Rakefile
require 'roda'

namespace :routes do
  task :list do |task|
    class App < Roda
      plugin :route_list
      puts route_list
    end
  end
end

このスニペットよりもエレガントな解決策があるかもしれませんが、うまくいきます:)

それが役に立てば幸い!

于 2016-09-17T20:57:22.530 に答える