【问题标题】:Include ActiveAdmin in gem在 gem 中包含 ActiveAdmin
【发布时间】:2011-12-13 17:10:32
【问题描述】:

我正在研究一个小型轨道引擎,我已经变成了一颗宝石。为了管理数据库,我想使用 ActiveAdmin。

我已将 ActiveAdmin 添加到我的 gem 依赖项列表中,当我在我的应用程序中安装 gem 时,我将 active_admin 初始化程序复制到使用 gem 的项目中的 config/initializers/。

但是 - 出于某种原因,这会导致应用程序失败并出现错误:

uninitialized constant ActiveAdmin

如果我将“activeadmin”添加到项目 Gemfile 中,它运行良好 - 但这是错误的,我不明白为什么我需要这样做。我希望我的宝石尽可能与世隔绝。

欢迎任何帮助。

【问题讨论】:

  • 我想你没有重新启动服务器。是吗?

标签: ruby-on-rails ruby-on-rails-3 rubygems gem activeadmin


【解决方案1】:

您可能需要从 gem 的 railtie (Rails 3.x) 或初始化程序 (Rails 2.x) 手动要求 activeadmin。此外,将 config/initializers/active_admin.rb 也移动到引擎可能是明智的。 Rails 3.x 的类似内容(放入 lib/my_gem/engine.rb)

require 'activeadmin' 

class MyGem::Engine < Rails::Engine
  initializer do
     # Do the same what you did in config/initializers/ of rails project
  end
end

【讨论】:

  • 谢谢。我不得不承认,当我意识到我忘了要求它时,我刚出去吃晚饭。但是还是感谢您的回答:) 但是-如果您不介意,我确实有一个后续问题。我添加了 require 部分,但现在我收到了这个错误:“未初始化的常量 MyModule::Admin”。
  • 我有同样的问题,我不知道如何解决它
【解决方案2】:

MyModule::Admin 是你的班级吗?它在 gem 中的路径是什么?如果它不在 app/ 目录中,您可能需要将以下内容添加到 lib/my_module.rb

模块 MyModule 扩展 ActiveSupport::Autoload 自动加载:管理员 结尾

【讨论】:

  • 不,这不是我的课——我认为它是 ActiveAdmin 的一部分,我的 gem 认为它应该在 MyModule:: 中,但实际上只是在外面。
猜你喜欢
  • 1970-01-01
  • 2023-03-10
  • 2012-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-14
  • 1970-01-01
相关资源
最近更新 更多