2010-10-21 22 views
16

मुझे हमेशा अपनी टर्मिनल विंडो को दोहरी मॉनीटर चौड़े बनाने के लिए मजबूर किया जाता है ताकि उन्हें सही पढ़ सकें। मैं बटररी जीयूआई के लिए स्टिकर नहीं हूं, लेकिन यह सीमावर्ती सीमा है।क्या "रेक मार्ग" को बेहतर बनाने का कोई तरीका है?

क्या इस आदेश के लिए कोई सुंदर प्रिंट है?

उत्तर

4

मैं रेक मार्गों फिर से लिख दिया थोड़ा कमान रेक मार्गों उत्पादन

के एक से थोड़ा अधिक प्रयोग करने योग्य html संस्करण उत्पन्न करने के लिए एक फ़ाइल pretty_routes.rake बनाएँ और lib/tasks/ में इस डाल दिया और rake pretty_routes फोन और यह

थोड़ा बेहतर होना चाहिए
desc 'Pretty print out all defined routes in match order, with names. Target specific controller with CONTROLLER=x.' 
task :pretty_routes => :environment do 
    all_routes = ENV['CONTROLLER'] ? ActionController::Routing::Routes.routes.select { |route| route.defaults[:controller] == ENV['CONTROLLER'] } : ActionController::Routing::Routes.routes 
    routes = all_routes.collect do |route| 
    name = ActionController::Routing::Routes.named_routes.routes.index(route).to_s 
    verb = route.conditions[:method].to_s.upcase 
    segs = route.segments.inject("") { |str,s| str << s.to_s } 
    segs.chop! if segs.length > 1 
    reqs = route.requirements.empty? ? "" : route.requirements.inspect 
    {:name => name, :verb => verb, :segs => segs, :reqs => reqs} 
    end 
    File.open(File.join(RAILS_ROOT, "routes.html"), "w") do |f| 
    f.puts "<html><head><title>Rails Routes</title></head><body><table border=1>" 
    f.puts "<tr><th>Name</th><th>Verb</th><th>Segments</th><th>Requirements</th></tr>" 
    routes.each do |r| 
     f.puts "<tr><td>#{r[:name]}</td><td>#{r[:verb]}</td><td>#{r[:segs]}</td><td>#{r[:reqs]}</td></tr>" 
    end 
    f.puts "</table></body></html>" 
    end 
    `open #{File.join(RAILS_ROOT, "routes.html")}` 
end 

अंतिम पंक्ति के लिए दूसरा केवल मैक ओएसएक्स पर रेल 2.x में काम करता है, लेकिन यह स्वचालित रूप से आपके ब्राउज़र में फ़ाइल खोलता है। यदि आप एक अलग मंच पर हैं, तो आपको कमांड को बदलना होगा।

आप रेल 3.x चला रहे हैं, अंतिम पंक्ति से पीछे नहीं

`open #{File.join(Rails.root, "routes.html")}` 
+3

आईटी चालाक। और मैं आपको इसके लिए बिल्कुल कडोस देता हूं, लेकिन मुझे एक ही समय में सभी मार्ग मिलना पसंद नहीं है। मैं आमतौर पर 'रेक मार्गों' के लिए जाता हूं grep कुछ विशिष्ट ' – Trip

+1

यह रेल 3 के साथ टूटा हुआ लगता है? रेक निरस्त! # (--trace के साथ कार्य चलकर पूर्ण ट्रेस देखें) – Lichtamberg

+0

Lichtamberg: बिल्कुल के लिए अपरिभाषित विधि 'सेगमेंट'। मैं अभी भी रेल 2.3.x पर हूं, रेल 3 पूरी तरह रूटिंग रूटिंग है, इसलिए आपको अपने लिए काम करने के लिए समाधान को संशोधित करना होगा। –

1

महान टिप होना चाहिए। धन्यवाद।

मैंने रेल 3.0 के लिए वर्किंग संस्करण तैयार किया। का आनंद लें।

desc 'Pretty print out all defined routes in match order, with names. Target specific controller with CONTROLLER=x.' 

task :pretty_routes => :environment do 
    all_routes = ENV['CONTROLLER'] ? ActionController::Routing::Routes.routes.select { |route| route.defaults[:controller] == ENV['CONTROLLER'] } : ActionController::Routing::Routes.routes 
    routes = all_routes.collect do |route| 
    reqs = route.requirements.empty? ? "" : route.requirements.inspect 
    {:name => route.name, :verb => route.verb, :path => route.path, :reqs => reqs} 
    end 
    File.open(File.join(RAILS_ROOT, "routes.html"), "w") do |f| 
    f.puts "<html><head><title>Rails 3 Routes</title></head><body><table border=1>" 
    f.puts "<tr><th>Name</th><th>Verb</th><th>Path</th><th>Requirements</th></tr>" 
    routes.each do |r| 
     f.puts "<tr><td>#{r[:name]}</td><td>#{r[:verb]}</td><td>#{r[:path]}</td><td>#{r[:reqs]}</td></tr>" 
    end 
    f.puts "</table></body></html>" 
    end 
end 
5
Rails 3.1 version, Replace all <YourApp> tag with your application name. 

desc 'Pretty print out all defined routes in match order, with names. Target specific controller with CONTROLLER=x.' 
task :pretty_routes => :environment do 
    all_routes = ENV['CONTROLLER'] ? <YourApp>::Application.routes.select { |route| route.defaults[:controller] == ENV['CONTROLLER'] } : <YourApp>::Application.routes 
    routes = all_routes.routes.collect do |route| 
    reqs = route.requirements.empty? ? "" : route.requirements.inspect 
    {:name => route.name, :verb => route.verb, :path => route.path, :reqs => reqs} 
    end 
    File.open(File.join(Rails.root, "routes.html"), "w") do |f| 
    f.puts "<html><head><title>Rails 3 Routes</title></head><body><table border=1>" 
    f.puts "<tr><th>Name</th><th>Verb</th><th>Path</th><th>Requirements</th></tr>" 
    routes.each do |r| 
     f.puts "<tr><td>#{r[:name]}</td><td>#{r[:verb]}</td><td>#{r[:path]}</td><td>#{r[:reqs]}</td></tr>" 
    end 
    f.puts "</table></body></html>" 
    end 
end 
2

रेल 3 के लिए, आप उपयोग कर सकते हैं: Rails.application.routes.routes.to_a (my original answer देखें)

9

संपादित करें: नीचे html_routes मणि जो रेल 3 और 4

का समर्थन करता है में पैक किया गया था जवाब

नीचे दिया गया कोड वर्तमान रेल 3.2.3, नियंत्रक द्वारा समूह और शानदार लग रहा है के साथ बनाया गया था। <Your APP> को अपने ऐप नाम में बदलना याद रखें और अपने Gemfile में मणि 'वाक्यविन्यास' जोड़ें।

Sample image

desc 'Pretty print out all defined routes in match order, with names. Target specific controller with CONTROLLER=x.' 

task :routes => :environment do 
if ENV['CONTROLLER'] 
    all_routes = <Your APP>::Application.routes.select { |route| route.defaults[:controller] == ENV['CONTROLLER'] } 
else 
    all_routes = <Your APP>::Application.routes 
end 

convertor = Syntax::Convertors::HTML.for_syntax "ruby" 

File.open(File.join(Rails.root, "routes.html"), "w") do |f| 
    f.puts "<html><head><title>Your APP</title> 
     <style type='text/css'> 
     body { background-color: #333; color: #FFF; } 
     table { border: 1px solid #777; background-color: #111; } 
     td, th { font-size: 11pt; text-align: left; padding-right: 10px; } 
     th { font-size: 12pt; } 
     pre { maring: 0; padding: 0; } 
     .contrl_head { font-size: 14pt; padding: 15px 0 5px 0; } 
     .contrl_name { color: #ACE; } 
     .punct { color: #99F; font-weight: bold; } 
     .symbol { color: #7DD; } 
     .regex { color: #F66; } 
     .string { color: #F99; }4 
     </style></head> 
     <body>" 

    last_contrl = nil 

    routes = all_routes.routes.collect do |route| 
    if !route.requirements.empty? 
     if route.requirements[:controller] != last_contrl 
     f.puts "</table>" if last_contrl 
     last_contrl = route.requirements[:controller] 
     f.puts "<div class='contrl_head'><b>Controller: <span class='contrl_name'>#{last_contrl}</span></b></div>" + 
       "<table width='100%' border='0'><tr><th>Name</th><th>Verb</th><th>Path</th><th>Requirements</th></tr>" 
     end 

     reqs = route.requirements.inspect 
     verb = route.verb.source 
     verb = verb[1..(verb.length-2)] if verb 
     r = { :name => route.name, :verb => verb, :path => route.path, :reqs => reqs } 
     f.puts "<tr><td width='12%'><b>#{r[:name]}</b></td><td width='5%'><b>#{r[:verb]}</b></td>" + 
       "<td width='3%'>#{r[:path]}</td><td width='80%'>#{convertor.convert(r[:reqs])}</td></tr>" 
    end 
    end 

    f.puts "</table></body></html>" 
end 
end 
+0

यह अविश्वसनीय लग रहा है !!! धन्यवाद!! सपना सच होना! – Trip

+0

दोस्त यह बहुत अच्छा है! चलिए एक मणि देखते हैं :) –

+0

मुझे 'अनियमित स्थिर सिंटेक्स' मिल रहा है – rkrdo

3

आप अपने ब्राउज़र में मार्गों मुद्रित करने के लिए षष्ठक इस्तेमाल कर सकते हैं: https://github.com/schneems/sextant

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