3

我想知道哪种方法可以更好地为 ruby​​ 安装不同的应用程序。我有 2 个 sinatra 应用程序和一个 rails 应用程序。

一种方法是使用 rails 作为基础并使用routes.rb(within 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

我无法找到一种优于另一种的优势,或者出于什么原因哪种方法更好。

4

1 回答 1

3

有趣的是,除了在后一部分(使用机架安装的应用程序)这一事实之外,还有任何显着差异

任何要求

/url1

/url2

将直接从已安装的机架应用程序中成为服务器,而无需实际在导轨的中间件堆栈中传递请求,然后检测给定安装路径的有效机架应用程序。

这将发生在您的 sinatra 应用程序安装在routes.rb文件中定义的 Rails 内的第一部分

因此,我正在尝试使用mount您的 sinatra 应用程序,routes.rb而不是config.ru考虑这样一个事实,即您的请求将一直被传递, rails middleware stack 其中路由中间件检测到将请求传递给所需的 sinatra 应用程序的适当路径

一个简单的检查你可以做的是尝试点击你的路径/url1,或者/url2在这两种技术中,你会看到 sinatra 应用程序 routes.rb 会在你的 rails 应用程序中记录请求,而另一个不会

希望这有帮助

于 2012-06-23T08:39:56.550 回答