ruby - Rack:如何将 URL 存储为变量?

标签 ruby rack

我正在编写一个简单的静态 Rack 应用程序。查看下面的 config.ru 代码:

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

我想通过将 URL 存储为变量并创建一个显示

的 map 部分来简化此操作
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

如何正确设置此 url 变量?

最佳答案

怎么样:

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

关于ruby - Rack:如何将 URL 存储为变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13225343/

相关文章:

ruby-on-rails - 如果尚未调用,则强制 Webmock stub_request 在测试结束时引发

ruby - Nokogiri XML 构建器向我的 XML 添加不需要的 "class=' 调用'"?

ruby-on-rails-3 - 如何更改 Rack 离线的默认行为

ruby - 在 rackup 文件中设置服务器选项

ruby - 如何更改嵌套哈希的格式

ruby-on-rails - 通过关联ID的轮胎 Elasticsearch 过滤器

JavaScript:将行为插入对象并轻松删除这些行为

ruby-on-rails - 如何衡量每个线程在 puma 部署中使用了多少内存?

ruby-on-rails - 如何强制 Rack 解决通常的 "You have already activated rack..."错误?

ruby-on-rails - 在另一个网站上提交动态表单