【问题标题】:rackup mounting apps vs rails mounting for sinatra apps机架安装应用程序与 sinatra 应用程序的导轨安装
【发布时间】:2012-06-22 23:46:11
【问题描述】:

我想知道哪种方法可以更好地为 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

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

【问题讨论】:

标签: ruby-on-rails ruby rackup


【解决方案1】:

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

任何请求

/url1

/url2

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

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

所以我尝试在routes.rbmount 你的sinatra 应用程序而不是config.ru 然后考虑你的请求将一直被传递 rails middleware stack 路由中间件在将请求传递给所需的 sinatra 应用程序时检测到适当的路径

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

希望有帮助

【讨论】:

  • 所以我认为没有理由通过 rails 安装它。用config.ru 安装它会更好吗?但是当我用谷歌搜索安装方法时,我到处都能看到导轨。通过导轨安装有什么好处?
  • @GauravShah 我看到了 2 个原因 Reason 1:- 只有在 Rails 路线中使用安装机架应用程序的人知道的原因 :),Reason-2:- 我想这是主要原因人们采用的是,在rails3 之前,rails2 确实包含如此漂亮的机架,我的意思是与 rails3 不同,rails2 不附带默认值 config.ru 虽然您可以创建定义但 not 附带默认值config.ru 可能是采用这种做法的原因,我们可以看到这种做法在 rails3 应用程序中也很明显。
  • 所以config.ru方法更好?
猜你喜欢
  • 1970-01-01
  • 2011-09-23
  • 1970-01-01
  • 2013-01-03
  • 1970-01-01
  • 2010-11-20
  • 1970-01-01
  • 2017-03-25
  • 2013-11-24
相关资源
最近更新 更多