我有一个关于在Sinatra上使用机架安装的问题.我有两个经典风格的Sinatra应用程序.让我们调用app.rb中定义的一个App和api.rb中定义的另一个API.
我希望它能让api.rb处理所有以'/ api'开头的路由,而app.rb会处理所有其他请求,包括root('/').
如何使用机架安装进行设置?或者有更好的解决方案吗?
我有一个共同的基本路径; 说:get /base我需要执行基本身份验证并在该路径下为所有子调用工作.说:get /base/foo和get /base/bar.
查看http://www.sinatrarb.com/intro.html#Helpers建议我应该能够使用帮助程序来完成此操作.我正在查看pass助手并使用call触发文档中的新路径.但是,我读到的另一个建议是使用正则表达式IE %r{/base/?:(path)?}或其他类似的动态路由.那么怎么样:
def '/base'
# do some funky basic auth stuff here
# to work with all request to this common
# base path?
pass
end
def %r{/base/?(path)?} do |path|
case path
when 'foo'
# do something.
when 'bar'
# do something else.
end
# some kind of redirection or template rendering here:
erb :template
end
Run Code Online (Sandbox Code Playgroud)
有没有人以前处理过这种事情?我想保持干燥.当然,我不确定给定的例子在保留params方面是最好的.