Sinatra - 如何将生产网址与应用的网址相匹配

时间:2017-03-30 17:23:06

标签: sinatra url-routing production-environment

考虑以下简单的Sinatra应用程序:

require 'sinatra'
post '/user/login' do
  # login logic...
end

将应用程序部署到生产环境时,网址/user/login通常会更改为其他内容,即/nitro/nutcracker/v1/user/login。当然,Sinatra应用程序不会提供此URL。

为了削减不必要的前缀,我考虑过使用过滤器(即before块),并使用正则表达式路由(即get /*/user/login),但肯定有更好的解决方案吗?

你说什么?

1 个答案:

答案 0 :(得分:1)

您可以使用机架安装它。在生产服务器上,创建一个config.ru文件,并将其放在:

require_relative 'my_app.rb'
map('/nitro/nutcracker/v1/') { run Sinatra::Application } # Or your class, if it's modular

这将为整个应用添加/nitro/nutcracker/v1/前缀。

然后使用rackup运行服务器,或者您的应用程序服务器可能有一个命令行参数来传递机架配置文件。