【问题标题】:How to mount Rails Engines automatically/dynamically?如何自动/动态安装 Rails 引擎?
【发布时间】:2016-06-11 01:26:55
【问题描述】:

在 Rails 应用程序中使用可挂载引擎时,有必要将此引擎挂载到父应用程序 config/routes.rb 文件中,如下所示:

mount MyEngine::Engine, at: "/my_engine"

但是,是否也可以通过某种方式动态在父应用中安装引擎,例如在安装引擎期间的初始化程序调用中使用bundle install?

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3


    【解决方案1】:
    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
    

    然后在config/application.rb的主应用中,可以设置

    config.my_engine.mounted_path = "/some_path_here"
    

    【讨论】:

    • 非常感谢!抱歉回复晚了,我现在正好有时间测试一下,它的工作就像一个魅力!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-26
    • 1970-01-01
    • 1970-01-01
    • 2012-06-11
    • 1970-01-01
    • 2013-12-08
    相关资源
    最近更新 更多