针对sinatra应用程序的机架安装应用程序与rails安装

时间:2012-06-22 23:46:12

标签: ruby-on-rails ruby rackup

我想知道哪种可能是为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

我无法找到一个优于另一个的优点,或者哪种方法更好的原因。

1 个答案:

答案 0 :(得分:3)

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

的任何要求

/url1

/url2

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

在你的sinatra应用程序安装在文件的routes.rb中定义的Rails中的第一部分会发生这种情况

所以,我试图在mount而不是routes.rbconfig.ru您的sinatra应用程序,然后考虑您的请求将一直传递 { {1}} 路由中间件检测到适当的路径,将请求传递给所需的sinatra应用程序

一个简单的检查你可以这样做是尝试在你的路径中使用rails middleware stack/url1,你会看到sinatra应用程序routes.rb会在你的rails应用程序中记录请求而另一个不会

希望这个帮助