2012-11-05 5 views
5

मैं एक साधारण स्थिर रैक ऐप लिख रहा हूं।रैक: आप यूआरएल को चर के रूप में कैसे स्टोर करते हैं?

use Rack::Static, 
    :urls => ["/elements", "/img", "/pages", "/users", "/css", "/js"], 
    :root => "archive" 


map '/' do 
    run Proc.new { |env| 
    [ 
     200, 
     { 
     'Content-Type' => 'text/html', 
     'Cache-Control' => 'public, max-age=6400' 
     }, 
     File.open('archive/splash.html', File::RDONLY) 
    ] 
    } 
end 

map '/pages/search.html' do 
    run Proc.new { |env| 
    [ 
     200, 
     { 
     'Content-Type' => 'text/html', 
     'Cache-Control' => 'public, max-age=6400' 
     }, 
     File.open('archive/pages/search.html', File::RDONLY) 
    ] 
    } 
end 

map '/pages/user.html' do 
    run Proc.new { |env| 
    [ 
     200, 
     { 
     'Content-Type' => 'text/html', 
     'Cache-Control' => 'public, max-age=6400' 
     }, 
     File.open('archive/pages/user.html', File::RDONLY) 
    ] 
    } 
end 

# Each map section is repeated for each HTML page served 

मैं चर के रूप में यूआरएल भंडारण और एक नक्शा वाले अनुभाग के

map url do 
    run Proc.new { |env| 
    [ 
     200, 
     { 
     'Content-Type' => 'text/html', 
     'Cache-Control' => 'public, max-age=6400' 
     }, 
     File.open('archive' + url, File::RDONLY) 
    ] 
    } 
end 

कैसे मैं सही ढंग से इस यूआरएल निर्धारित कर सकते हैं बनाने के द्वारा इस आसान बनाने के लिए करना चाहते हैं: नीचे config.ru कोड की जाँच करें चर?

उत्तर

4

आपको मानचित्र भाग की आवश्यकता नहीं है।

run Proc.new { |env| 
    [ 
    200, 
    { 
     'Content-Type' => 'text/html', 
     'Cache-Control' => 'public, max-age=6400' 
    }, 
    File.open('archive' + env['PATH_INFO'], File::RDONLY) 
    ] 
} 
+0

काम करता है यही कारण है, धन्यवाद –

+0

ध्यान दें कि यह सामग्री प्रकार सेट हो जाएगा जो कुछ भी फ़ाइल यह पाता है के लिए 'पाठ/html', यहां तक ​​कि 'robots.txt' या 'के लिए favicon.ico '। लेकिन मुझे लगता है कि आप हमेशा उस लाइन को छोड़ सकते हैं, और ब्राउजर अनुमान लगा सकते हैं। – rbp

5

कैसे के बारे में:

static_page_mappings = { 
    '/'     => 'archive/splash.html', 
    '/pages/search.html' => 'archive/pages/search.html' 
    '/pages/user.html' => 'archive/pages/user.html', 
} 

static_page_mappings.each do |req, file| 
    map req do 
    run Proc.new { |env| 
     [ 
     200, 
     { 
      'Content-Type' => 'text/html', 
      'Cache-Control' => 'public, max-age=6400', 
     }, 
     File.open(file, File::RDONLY) 
     ] 
    } 
    end 
end 
+0

उस सुझाव की कोशिश नहीं की है लेकिन यह काम कर सकता है, धन्यवाद! –

+0

एरिक की पोस्ट में मेरी टिप्पणी देखें, फिर से सामग्री-प्रकार – rbp

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