ruby-on-rails - 机架安装应用程序与 sinatra 应用程序的 rails 安装

标签 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 应用程序都在 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/

相关文章:

ruby-on-rails - ruby ,野科切 : sort nodeset by attribute value

ruby - 如何将十六进制转换为 base64urlsafe?

ruby-on-rails - 在 Rails 中给嵌套路由一个别名

ruby-on-rails - Ruby 单引号与双引号

ruby-on-rails - rails : has_many through with polymorphic association - will this work?

ruby-on-rails - rails : ArgumentError in UsersController#create wrong number of arguments (2 for 1)

Ruby:使用 open() 和 NET::HTTP 模块获取网页内容有什么区别?

ruby - 寻找 Rack 应用程序结构和 config.ru 规范?

ruby-on-rails - 即使我指定了配置,为什么 Unicorn 仍在寻找rackup 文件(config.ru)?