【问题标题】:Boolean check if a rails engine is mounted?布尔检查是否安装了rails引擎?
【发布时间】:2017-08-25 21:46:54
【问题描述】:

我已将一个较大的项目拆分为可安装的 rails 引擎,我想找到一种方法来检查是否安装了 rails 引擎。 例如,我的主应用程序中有一个 User 类

用户.rb

class User < ApplicationRecord
    has_many :searches, as: :searchable, class_name: MySearchEngine::Search
end

我想将这个 has_many 关联以及其他用于引擎集成的代码包装在 if 语句中,以便它仅在已安装 MySearchEngine 时添加代码

【问题讨论】:

  • 您多久安装/卸载一次需要检查是否已安装的引擎?还是您只是想将代码保留在模型中漂亮的小块中,在这种情况下,您可以为用户包装所有关联,例如 MySearchEngine::UserConcerns 模块或诸如此类的东西并包含它。您还可以查看Custom configuration 并为您的应用设置配置值以包含/不包含内容
  • 只有一次,但是当我查看所有提到引擎的地方时,如果引擎未安装,则需要注释掉,我开始研究这个。在示例中如何使用配置值?

标签: ruby-on-rails rails-engines


【解决方案1】:

您应该可以通过defined? MySearchEngine::Search检查它们是否可用

【讨论】:

  • 我在使用 erb 的视图中使用它时遇到了麻烦。如果我使用此方法将链接标记与引擎中定义的路径包装在 if 块中,则块内的链接标记仍会被评估并给出错误未定义的局部变量或方法“my_search_engine”。理想情况下,该标签根本不会被评估,因为它位于 if 块内。所以视图可能需要不同的方法。我认为这在我的控制器和模型中是有效的。
猜你喜欢
  • 1970-01-01
  • 2021-11-23
  • 2017-04-13
  • 2012-03-28
  • 1970-01-01
  • 2013-03-23
  • 2010-11-06
  • 2020-10-18
  • 1970-01-01
相关资源
最近更新 更多