我有两个Rails应用程序(使用rails 3.0.7),称它们为“blog”和“auth”。我想从“博客”中挂载“auth”,这样我就可以运行“博客”应用程序,并将某些请求路由到“auth”应用程序。如何将现有的Rails应用程序嵌入/装载到另一个Rails应用程序中?
看来我需要嵌入或可能创建一个“引擎”,但我不是100%确定哪个是正确的。
如何在“博客”应用程序中嵌入“auth”应用程序?
我有两个Rails应用程序(使用rails 3.0.7),称它们为“blog”和“auth”。我想从“博客”中挂载“auth”,这样我就可以运行“博客”应用程序,并将某些请求路由到“auth”应用程序。如何将现有的Rails应用程序嵌入/装载到另一个Rails应用程序中?
看来我需要嵌入或可能创建一个“引擎”,但我不是100%确定哪个是正确的。
如何在“博客”应用程序中嵌入“auth”应用程序?
如果auth应用程序类似于web服务(例如Facebook身份验证),那么只需保持2个应用程序运行并通过一个应用程序使用urls向另一个应用程序发出请求。
如果这些应用程序共享一些逻辑或相同的数据库,您可以合并代码,以便两个应用程序成为一个,或者您可以使'auth'应用程序像gem或插件一样并在您的博客中使用'app。
Rails3是一个基于机架的应用程序。 Rackmiddleware已经有一些默认的内置应用程序。尝试运行捆绑执行耙中间件。您可以将自定义Rack应用程序添加到堆栈中。使用this博客帖子查看它是如何工作的。
我已经看过那篇文章,但我仍然想知道,如何让我的“博客”应用程序需要“auth”应用程序?这不像“auth”rails应用程序是一个宝石,我可以在我的“博客”应用程序中添加到Gemfile中。 – codecraig
我不明白,您是否需要将验证添加到您的应用程序中? – Anatoly
我有一个名为'auth'的rails应用程序,提供身份验证。我希望我的“博客”rails应用程序的客户端代码能够通过“auth”应用程序进行GET/POST等。我无法直接从JSONP的'博客'客户端b/c中的JavaScript代码(只有GET的工作)做到这一点。我想从“博客”应用程序中安装“auth”应用程序,以便我可以访问auth。来自客户端代码的东西。那有意义吗? 现在我认为我的主要问题是,如何获得由“博客”应用程序装载的“auth”应用程序?我不能像这样的博客文章建议b/c挂载auth应用程序不在博客应用程序的加载路径。 – codecraig
如果您试图在一个Ruby实例中定义两个Rails应用程序,但它在this提交后发生了更改,Rails正在提高RuntimeError: You cannot have more than one Rails::Application
。
这在4.0.0中仍未发布,但会包含在较新的版本中。 (>4.1.0.β)
检查出the discussion on PR欲知更多信息。
从我的理解,你可能不需要有两个Rails应用程序,但。您应该尝试从Rails::Engine
中提取所需的功能。
您可以为'auth'应用程序创建“rails-engine”,然后将此引擎挂载到rails应用程序中,即'blog'应用程序。
了解更多关于的Rails ::引擎在下面的链接 -
http://guides.rubyonrails.org/engines.html
http://api.rubyonrails.org/classes/Rails/Engine.html
要嵌入滑轨安装发动机到Rails应用程序,请执行以下常规步骤 -
1 )打开需要嵌入引擎的目标Rails项目。
2)打开用于编辑的Gemfile,并添加以下行:
gem '<engine name>', :path => "<absolute path to the Rails mountable engine project>"
3)打开用于编辑配置/路由。rb,并添加以下行:
mount <engine name>::Engine, :at => "/<engine name>"
创建引擎是继续进行的方式。 – apneadiving