2012-06-22 67 views
3

我想知道哪些可能是更好的方式为红宝石安装不同的应用程序。 我有2个sinatra应用程序和一个rails应用程序。rackup安装应用程序与导轨安装为sinatra应用程序

的一种方式是使用轨道作为碱,并使用routes.rb(内导轨)

RailsApp::Application.routes.draw do 
    mount SinatraApp1, :at => "/url1" 
    mount SinatraApp2, :at => "/url2" 
    # rest of the rail routes 
end 

这样两个西纳特拉应用都导轨安装屈应用程序。

另一种方法是使用rackup安装所有的三个使用config.ru(所有三个并行应用程序)

map "/" do 
    run RailsApp::Application 
end 

map "/url1" do 
    run SinatraApp1 
end 

map "/url2" do 
    run SinatraApp2 
end 

我无法找到了另外一个优点或方法是什么更好的原因。

+0

本文提供了一些有用的解释太:https://robots.thoughtbot.com/how-to-share-a-session-between-sinatra-and-rails – user1515295

回答

3

有趣有任何显著不同之处在于,在后半部(应用安装使用rackup)

任何请求

/url1

/url2

将直接是服务器差从安装的机架应用程序中删除,而不实际在中间件堆栈轨道中传递请求,然后检测给定安装的p的有效机架应用程序ath。

在您西纳特拉的应用程序安装里面routes.rb定义文件

所以我你正在努力mount的Rails的在第一部分中会发生哪些在routes.rb而不是config.ru您西纳特拉应用程序,然后考虑的是,你的要求都会沿着rails middleware stack 其中作为传递的请求所需的西纳特拉应用

一个简单的检查可以为此做路由中间件检测相应的路径是尝试打ÿ传递我们即/url1或路径在这两个技术/url2,你会看到西纳特拉应用routes.rb中会记录该请求在您的Rails应用程序,而其他人会不会

希望这有助于

+0

所以我没有理由通过rails安装它。用'config.ru'安装它会更好吗?但随处可见,当我谷歌安装方法,我看到了轨道之一。通过导轨安装的优点? –

+0

@GauravShah我看到它的两个理由'原因1:-'只有使用轨道路径上的挂载机架应用程序的人才知道的原因:),原因2:''我认为这是主要原因人们采用这种方法是在'rails3'之前,'rails2'确实包含了这个漂亮的机架,我的意思是与rails3不同,在rails2中并没有隐含地使用默认的'config.ru',虽然你可以创建一个定义但不是'ship'的船一个默认的'config.ru'可能是采用这种做法的原因,我们在'rails3'应用程序中也可以看到这一点。 – Viren

+0

so config.ru方法更好? –