[英]How to mount one engine in another mountable engine in rails?
當前,在config / routes.rb中的主應用程序中安裝了兩個引擎,如下所示。
在'/ search'處掛載firstEngine :: Engine並在'/ add'處掛載secondEngine :: Engine
我想將firstEngine的安裝從應用程序轉移到secondEngine。 換句話說,如何將一個引擎安裝在另一個可安裝引擎中? 任何幫助表示贊賞。
我也一直試圖將一個引擎安裝在另一個引擎上,這就是我到目前為止所得到的:
#file myapp/config/routes.rb
mount Bar::Engine => "/bar"
#file myapp/Gemfile
gem 'bar', :path => '../bar'
項目結構是這樣的:
my_project_folder
|
+-myapp
|
+-酒吧
|
+-baz
#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路由正在運行。 這是一個非常丑陋的解決方法,我將尋找更清潔的解決方案,但我的兩個可安裝插件都在開發中,我僅從源頭使用它們,因此暫時不介意。 希望它至少能有所幫助。 如果您找到更好的解決方案,請告訴我。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.