【问题标题】:Rails engine: get parent app's nameRails 引擎:获取父应用程序的名称
【发布时间】:2015-02-08 05:47:55
【问题描述】:

我想知道一个可挂载的 Rails 引擎是否可以检索它所挂载的父应用程序的名称。

我查看了official Rails engine guide,但找不到任何东西。有什么来源或想法吗?

【问题讨论】:

  • Rails 引擎是为特定的 Rails 应用程序制作的,那么为什么要动态检索其名称?
  • 我想知道这一点,因为我的引擎可以用于任何应用程序。
  • 那么从技术上讲,这就是一个 gem,它不应该对其父应用程序有任何依赖关系。也许一个例子可以解决问题?你想达到什么目的?
  • 虽然这是一个旧答案,但值得注意的是,Rails 引擎可以轻松安装在多个应用程序上,并且通常打包为 gem。

标签: ruby-on-rails rails-engines


【解决方案1】:

我很惊讶一年多没有人回答这个问题。您可以使用:

Rails.application.class.parent.name

根据您使用它的位置,您可能需要确保从根 rails 模块开始,这使得这是一个更安全的选择:

::Rails.application.class.parent.name

【讨论】:

    【解决方案2】:

    截至 2021 年,在 Rails 6.x/Ruby 2.7 中,class 没有方法 #parent

    我用:

    ::Rails.application.class.module_parent
    

    获取安装我的引擎的应用程序的(技术)名称。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多