我想知道哪种方法可以更好地为 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 应用程序都在 rails 中。
另一种方法是使用 rackup 使用 config.ru
安装所有三个应用程序(所有三个应用程序并行)
map "/" do
run RailsApp::Application
end
map "/url1" do
run SinatraApp1
end
map "/url2" do
run SinatraApp2
end
我无法找到一种方法相对于另一种方法的优势,或者出于什么原因哪种方法更好。
最佳答案
有趣的是除了后半部分(使用 rackup 安装的应用程序)之外还有任何显着差异
对
的任何请求/url1
/url2
将直接从已安装的机架应用程序成为服务器,而无需实际在 rails 的中间件堆栈中传递请求,然后检测给定安装路径的有效机架应用程序。
这会发生在第一部分,您的 sinatra 应用程序安装在文件的 routes.rb
中定义的 Rails 中
所以我正在尝试在 routes.rb
而不是 config.ru
中挂载
您的 sinatra 应用程序,然后考虑您的请求会一直传递 rails middleware stack
路由中间件在将请求传递给所需的 sinatra 应用程序时检测到适当的路径
一个简单的检查 你可以为此做的是尝试在这两种技术中点击你的路径,即 /url1
或 /url2
你会看到 sinatra 应用程序 routes.rb 会在您的 Rails 应用程序中记录请求,而另一个则不会
希望对你有帮助
关于ruby-on-rails - 机架安装应用程序与 sinatra 应用程序的 rails 安装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11165531/