ruby-on-rails - 如何自动/动态挂载 Rails 引擎?

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

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

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

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

最佳答案

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"

关于ruby-on-rails - 如何自动/动态挂载 Rails 引擎?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37759105/

相关文章:

ruby-on-rails - 在 Rails 自定义验证中使用范围

ruby - @property 或 self.property 使用访问器设置属性?

mysql - 如何使用 strftime 格式化查询日期

ruby-on-rails - 为什么要使用 Mocha rails ?那个有什么用途

ruby-on-rails - 在 Rails 中进行 View 更新的正确方法

ruby-on-rails - 我在检查 ruby​​ on rails 上的参数是否为空时遇到了麻烦

sql - ActiveRecord 查询以查找给定键的 JSON 值数组

ruby-on-rails - Rails 测试和 Mocha : How to stub specific model - conditional any_instance?

ruby-on-rails - rails 3 : Including an SQL function in a query

ruby-on-rails - 如何使用 Ruby on Rails 形式获取 "get"