web-dev-qa-db-ja.com

私のRailsアプリケーションですべてのルートを取得するにはどうすればよいですか?

Railsアプリケーションですべてのルートを取得できますか?rake routesのような出力が必要で、結果を配列に入れますか?.

出来ますか?どうやって?

20
el_quick

方法を見ることができますRailsは、rakeタスクからそれらのルートを吐き出します。それは/gems/Rails/2.3.x/lib/tasks/routes.rakeにありますRails 2。基本的には一般的なケースではActionController::Routing::Routes.routesを実行し、それを問い合わせます。

17
Shadwell

まあ、あなたがそれを必要とする場所とは無関係に、あなたはすることができます:

routes = `rake routes`.split("\n")

あるいは:

routes = `rake routes`.split("\n").map{ |r| r.gsub(', ', ',').split(' ') }
9
jordinl

それを達成することであった頭痛を広めるために、私は@jordiniの答えに基づいてこれを行いました:

 Rails.application.routes.routes.to_a.each do |rota|
   if rota.app.instance_variable_defined? '@defaults'
      perm = Permission.where({
        :acao => rota.defaults[:action],
        :controller => rota.defaults[:controller], 
        :verbo => rota.verb.source.to_s.gsub("^","").gsub("$","").downcase
      ).first_or_create
    end
 end

これは、自分のWebページのすべてのアクセス許可を一度に作成するために使用したものです。

6
netrevisanto