我的config.ru
require 'rack'
use Rack::Static, :root => '_site'
但是当我运行时rackup
出现错误
/usr/local/share/gems/gems/rack-1.5.2/lib/rack/builder.rb:133:in `to_app': 缺少运行或映射语句 (RuntimeError)
我想_site_
在根 URL的文件夹中托管文件
Rack::Static
是一个使用的中间件Rack::File
,它是一个应用程序。如果您所做的只是提供静态文件,您可以直接运行Rack::File
:
# note 'run' not 'use'
run Rack::File.new('_site')
你的问题config.ru
是它缺少一个run
命令,而你总是需要一个。正如马特建议的那样,您可以使用Rack::File
中间件。
但是,如果您想保留这些Rack::Static
功能,那么您可以执行类似的操作来提供索引文件并Rack::Static
在其前面放置中间件,以提供来自_site_
.
use Rack::Static,
:urls => ["/"],
:root => "_site_"
run lambda { |env|
[
200,
{
'Content-Type' => 'text/html',
'Cache-Control' => 'public, max-age=86400'
},
File.open('public/index.html', File::RDONLY)
]
}