Railsアプリケーションですべてのルートを取得できますか?rake routes
のような出力が必要で、結果を配列に入れますか?.
出来ますか?どうやって?
方法を見ることができますRailsは、rakeタスクからそれらのルートを吐き出します。それは/gems/Rails/2.3.x/lib/tasks/routes.rake
にありますRails 2。基本的には一般的なケースではActionController::Routing::Routes.routes
を実行し、それを問い合わせます。
まあ、あなたがそれを必要とする場所とは無関係に、あなたはすることができます:
routes = `rake routes`.split("\n")
あるいは:
routes = `rake routes`.split("\n").map{ |r| r.gsub(', ', ',').split(' ') }
それを達成することであった頭痛を広めるために、私は@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ページのすべてのアクセス許可を一度に作成するために使用したものです。