2010-12-23 9 views
7

मैं सिनात्रा के साथ खेल रहा हूं, और मैं अपने मार्गों में से एक को असंवेदनशील बनाना चाहता हूं। मैंने इस तरह के मार्ग को जोड़ने की कोशिश की:सिनात्रा में केस असंवेदनशील मार्ग कैसे बनाते हैं?

get "(?i)/tileflood/?" do 
end 

लेकिन यह उम्मीद के अनुसार किसी भी क्रमपरिवर्तन/टाइलफ्लूड से मेल नहीं खाता है। मैंने rubular.com पर निम्नलिखित रेगेक्स का परीक्षण किया, और यह ठीक से मेल खाता है। क्या मैं कुछ भूल रहा हूँ?

\/(?i)tileflood\/? 

उत्तर

8

आप अपने मार्ग के लिए एक असली regexp हैं:

require 'sinatra' 
get %r{^/tileflood/?$}i do 
    request.url + "\n" 
end 

सबूत:

smagic:~ phrogz$ curl http://localhost:4567/tileflood 
http://localhost:4567/tileflood 

smagic:~ phrogz$ curl http://localhost:4567/tIlEflOOd 
http://localhost:4567/tIlEflOOd 

smagic:~ phrogz$ curl http://localhost:4567/TILEFLOOD/ 
http://localhost:4567/TILEFLOOD/ 

smagic:~ phrogz$ curl http://localhost:4567/TILEFLOOD/z 
<!DOCTYPE html> 
<html> 
<head> 
    <style type="text/css"> 
    body { text-align:center;font-family:helvetica,arial;font-size:22px; 
    color:#888;margin:20px} 
    #c {margin:0 auto;width:500px;text-align:left} 
    </style> 
</head> 
<body> 
    <h2>Sinatra doesn't know this ditty.</h2> 
    <img src='/__sinatra__/404.png'> 
    <div id="c"> 
    Try this: 
    <pre>get '/TILEFLOOD/z' do 
    "Hello World" 
end</pre> 
    </div> 
</body> 
</html> 

smagic:~ phrogz$ curl http://localhost:4567/tileflaad 
<!DOCTYPE html> 
<html> 
<head> 
    <style type="text/css"> 
    body { text-align:center;font-family:helvetica,arial;font-size:22px; 
    color:#888;margin:20px} 
    #c {margin:0 auto;width:500px;text-align:left} 
    </style> 
</head> 
<body> 
    <h2>Sinatra doesn't know this ditty.</h2> 
    <img src='/__sinatra__/404.png'> 
    <div id="c"> 
    Try this: 
    <pre>get '/tileflaad' do 
    "Hello World" 
end</pre> 
    </div> 
</body> 
</html> 
+0

शानदार। यह चाल है :) –

+1

आम तौर पर, मैं ऐप में इस यूआरएल सामान्यीकरण चरण को लागू नहीं करता, मैं इसे nginx/apache/जो भी वेब सर्वर उपयोग कर रहा हूं, में करता हूं। –

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