Sti*_*k1n 3 ruby ruby-on-rails ruby-on-rails-3
在 Rails 应用程序中使用可挂载引擎时,有必要在父应用程序config/routes.rb文件中挂载这个引擎,如下所示:
mount MyEngine::Engine, at: "/my_engine"
Run Code Online (Sandbox Code Playgroud)
但是,是否也有可能以某种方式在父应用程序中动态安装引擎,例如在安装引擎期间的初始化程序调用中bundle install?
小智 5
module MyEngine
class Engine < ::Rails::Engine
isolate_namespace MyEngine
config.my_engine = ActiveSupport::OrderedOptions.new
initializer 'my_engine.configuration' do |app|
if app.config.my_engine[:mounted_path]
app.routes.append do
mount MyEngine::Engine => app.config.my_engine[:mounted_path]
end
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
然后在主应用程序中config/application.rb,您可以设置
config.my_engine.mounted_path = "/some_path_here"
Run Code Online (Sandbox Code Playgroud)