2012-12-04 12 views
14

मेरे पास है कहते हैं:सिनात्रा ऐप में उपयोग किए जाने वाले सभी मार्गों की सूची कैसे प्राप्त करें?

require 'sinatra' 

get '/' { "hi" } 
get '/a' { "a" } 
get '/b' { "b" } 

कोई आसान तरीका मेरी सिनात्रा आवेदन में सभी परिभाषित रूट की एक सूची प्राप्त करने के लिए है?

मैंने Sinatra::Base.routes की जांच की, लेकिन ऐसा लगता है कि मैंने अभी निर्धारित मार्गों को शामिल नहीं किया है।

मैं पाने के लिए routes.each { |r| p r } की तरह एक आत्म दस्तावेज़ीकृत एपीआई बनाने के लिए एक अच्छा तरीका है करने के लिए उम्मीद कर रहा था:

/ 
/a 
/b 

उत्तर

27

आप Sinatra::Application.routes की जाँच करनी चाहिए, जो आपके मार्गों में शामिल है। यह अपने मार्ग पैटर्न के नियमित अभिव्यक्ति प्रिंट:

require 'sinatra' 

get '/' do "root" end 
get '/a' do "a" end 
get '/b' do "b" end 

Sinatra::Application.routes["GET"].each do |route| 
    puts route[0] 
end 

चीजों को सरल बनाने sinatra-advanced-routes विस्तार पर ध्यान रखना। यह आप मार्गों आत्मनिरीक्षण के लिए एक अच्छी एपीआई देता है:

require 'sinatra' 
require 'sinatra/advanced_routes' 

get '/' do "root" end 
get '/a' do "a" end 
get '/b' do "b" end 

Sinatra::Application.each_route do |route| 
    puts route.verb + " " + route.path 
end 

अधिक दस्तावेज और उदाहरण के लिए सिनात्रा-उन्नत-मार्गों के README देखें।

+0

धन्यवाद! यह सिनात्रा :: Application.instance_variables भाग बताता है जहां से मुझे @ रूट्स मिलते हैं। वहाँ भी है [: @ शर्त,: @ रूट्स:: @ फ़िल्टर,: @errors,: @middleware,: @prototype,: @extensions,: @templates] हालांकि मुझे अभी तक यह समझना नहीं है कि इनका उपयोग कैसे किया जाए। शायद मुझे एक सवाल के रूप में पूछना चाहिए? –

1

यहाँ रूट की एक सूची उत्पादन के लिए एक रेक कार्य है:

desc 'List defined routes' 
task :routes do 
    require 'app/web/web' 

    Shoebox::Server.routes.map do |method, routes| 
    routes.map { |r| r.first.to_s }.map do |route| 
     "#{method.rjust(7, ' ')} #{route}" 
    end 
    end.flatten.sort.each do |route| 
    puts route 
    end 
end 

आउटपुट:

GET /asset/:id 
    HEAD /asset/:id 
    POST /asset/:aggregate_id/provide 
OPTIONS /asset 
संबंधित मुद्दे

 संबंधित मुद्दे