我想知道哪种可能是为ruby安装不同应用程序的更好方法。 我有2个sinatra应用程序和一个rails应用程序。
一种方法是使用rails作为基础并使用routes.rb
(在rails中)安装sinatra应用程序
RailsApp::Application.routes.draw do
mount SinatraApp1, :at => "/url1"
mount SinatraApp2, :at => "/url2"
# rest of the rail routes
end
这样,sinatra应用程序都处于轨道状态。
其他方法是使用rackup使用config.ru
(所有三个并行的应用程序)挂载所有三个
map "/" do
run RailsApp::Application
end
map "/url1" do
run SinatraApp1
end
map "/url2" do
run SinatraApp2
end
我无法找到一个优于另一个的优点,或者哪种方法更好的原因。
答案 0 :(得分:3)
有趣的是,除了后一部分(使用rackup安装的应用程序)之外,还有任何显着差异
对
的任何要求 /url1
/url2
将直接来自已安装的机架应用程序,而无需在中间件堆栈中实际传递请求,然后检测给定安装路径的有效机架应用程序。
在你的sinatra应用程序安装在文件的routes.rb
中定义的Rails中的第一部分会发生这种情况
所以,我试图在mount
而不是routes.rb
中config.ru
您的sinatra应用程序,然后考虑您的请求将一直传递 { {1}}
路由中间件检测到适当的路径,将请求传递给所需的sinatra应用程序
一个简单的检查你可以这样做是尝试在你的路径中使用rails middleware stack
或/url1
,你会看到sinatra应用程序routes.rb会在你的rails应用程序中记录请求而另一个不会
希望这个帮助