我有两个Rails应用程序(使用rails 3.0.7),称之为“blog”和“auth”。我想从“博客”安装“auth”,以便我可以运行“博客”应用并将某些请求路由到“auth”应用。
似乎我需要嵌入或者创建一个“引擎”,但我不能100%确定哪个是正确的。
如何在“博客”应用程序中嵌入“auth”应用程序?
答案 0 :(得分:2)
如果您尝试在一个Ruby实例中定义了两个Rails应用程序,但Rails正在提升RuntimeError: You cannot have more than one Rails::Application
,但在this提交后它已经更改。
这在4.0.0中仍未发布,但将包含在较新版本中。 (> 4.1.0.beta)
查看the discussion on PR了解详情。
据我所知,你可能不需要有两个Rails应用程序。您可能应该尝试在Rails::Engine
中提取所需的功能。
答案 1 :(得分:2)
您可以创建" rails-engine"为了' auth'应用程序,然后将此引擎安装到rails应用程序中,即博客'应用
在下面的链接中阅读有关Rails :: Engine的更多信息 -
http://guides.rubyonrails.org/engines.html
http://api.rubyonrails.org/classes/Rails/Engine.html
要将Rails可安装引擎嵌入到Rails应用程序中,请按照以下常规步骤进行操作 -
1)打开目标Rails项目,其中应嵌入引擎。
2)打开以编辑Gemfile,并添加以下行:
gem '<engine name>', :path => "<absolute path to the Rails mountable engine project>"
3)打开以编辑Config / routes.rb,并添加以下行:
mount <engine name>::Engine, :at => "/<engine name>"
答案 2 :(得分:1)
Rails3是基于机架的应用程序。 Rackmiddleware已经有许多默认的内置应用程序。尝试运行捆绑exec rake中间件。您可以将自定义Rack应用程序添加到堆栈中。使用this blogpost查看其工作原理。
答案 3 :(得分:0)
如果auth应用程序类似于Web服务(例如facebook身份验证),那么只需保持2个应用程序运行,并从一个带有URL的应用程序向另一个应用程序发出请求。
如果这些应用程序共享一些逻辑或相同的数据库,您可以合并代码,这样两个应用程序就会成为一个,或者您可以将'auth'应用程序设置为gem或插件,并在“博客”中使用它应用