考虑以下简单的Sinatra应用程序:
require 'sinatra'
post '/user/login' do
# login logic...
end
将应用程序部署到生产环境时,网址/user/login
通常会更改为其他内容,即/nitro/nutcracker/v1/user/login
。当然,Sinatra应用程序不会提供此URL。
为了削减不必要的前缀,我考虑过使用过滤器(即before
块),并使用正则表达式路由(即get /*/user/login
),但肯定有更好的解决方案吗?
你说什么?
答案 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
运行服务器,或者您的应用程序服务器可能有一个命令行参数来传递机架配置文件。