目前在config / routes.rb的主应用程序中安装了两个引擎,如下所示。
mount firstEngine :: Engine,at:'/ search'和 mount secondEngine :: Engine,at:'/ add'
我想将firstEngine从应用程序安装到secondEngine。换句话说,如何将一个引擎安装在另一个可安装的引擎中?任何帮助表示赞赏。
答案 0 :(得分:0)
我一直试图将一个引擎安装在另一个引擎之上,这是我到目前为止所得到的:
#file myapp/config/routes.rb
mount Bar::Engine => "/bar"
#file myapp/Gemfile
gem 'bar', :path => '../bar'
项目结构如下:
my_project_folder
|
+ - myapp
|
+ - 酒吧
|
+ - 巴兹
#file bar/config/routes
mount Baz::Engine => '/baz'
我遇到了将Baz安装在Bar顶部的麻烦,只需添加
#file bar/Gemfile
gem: 'baz', :path => '../baz'
没有用,我得到了未初始化的常量Baz :: Engine错误
解决这个问题:
#file bar/lib/engine.rb
require File.join(File.expand_path('../../../baz/lib', File.dirname(__FILE__)), 'baz')
现在baz.rb正在抱怨:无法加载这样的文件 - baz / engine 所以我改变了:
#file baz/lib/baz.rb
require_relative './baz/engine' # instead of require 'baz/engine'
现在我的/ bar / baz路线工作正常。 这是一个相当丑陋的解决方法,我将寻找更清晰的解决方案,但我的可安装插件正在开发中,我只使用它们来源,所以我暂时不介意。希望它至少有一点帮助。如果您找到更好的解决方案,请告诉我。