Raylarımdaki tüm rotaları alabilir miyim? rake routes
gibi bir çıktıya ihtiyacım var ve sonucu bir diziye koyuyorum.Raylarım uygulamalarındaki tüm rotaları nasıl alabilirim?
Mümkün mü? Nasıl?
Raylarımdaki tüm rotaları alabilir miyim? rake routes
gibi bir çıktıya ihtiyacım var ve sonucu bir diziye koyuyorum.Raylarım uygulamalarındaki tüm rotaları nasıl alabilirim?
Mümkün mü? Nasıl?
Rails, rake görevinden bu rotaları dışarı çıkarır. Raylar 2 için /gems/rails/2.3.x/lib/tasks/routes.rake
içinde. Genel durumda ActionController::Routing::Routes.routes
yapıyor ve sonra sorguya çekiyor gibi görünüyor.
o railties mücevher şimdi – Neikos
Eh, bağımsız İhtiyacınız nerede, bunu yapabilirsiniz: hatta
routes = `rake routes`.split("\n")
Veya:
routes = `rake routes`.split("\n").map{ |r| r.gsub(', ', ',').split(' ') }
baş ağrısı yaymak amacıyla o Tamamladılar etmek olduğunu, ben bunu jordini temelli: answer:
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
Bu, web sayfam için tüm izinleri bir kerede oluşturduğum şeydi.
Bu çıktıya nerede ihtiyacınız var? Raylar 3 için – jordinl
: 'Rails.application.routes.routes.to_a' (bakınız [benim orijinal cevap] (http://stackoverflow.com/a/10576105/407213)) Raylar 4 için – Dorian