ruby-on-rails - 在 Rails 外部包含用户模型时未定义的方法 'devise'

标签 ruby-on-rails ruby activerecord devise

我正在开发一个由两部分组成的应用程序:一个 ruby​​ 命令行应用程序和一个用于前端的 Rails 应用程序。

我一直在 Ruby 应用程序中使用 ActiveRecord 和 Rails 模型,通过以下方式分别包含它们:

Dir[File.dirname(__FILE__) + '/../../RailsApp/app/models/*.rb'].each do |file|
  filename = File.basename(file, File.extname(file))
  require_relative "../../RailsApp/app/models/" + filename
end

并通过手动维护两个几乎相同的 Gemfile 文件来获取依赖项(我认为这不是最好的方法)

昨天我将 Devise 添加到 Rails 应用程序,现在当 ruby​​ 应用程序尝试包含用户模型时,消息 undefined method devise for class <xxxxx>出现。

我在我的 ruby​​ 应用程序的 Gemfile 中添加了 devise gem,但错误仍然存​​在。如果我理解正确的话,Devise 是一个 Rails 引擎,这就是为什么它不能仅通过要求 gem 来加载的原因。

我读到在另一个应用程序中包含 Rails 模型的更好方法是要求 environment.rb文件,但是当我尝试这样做时,ActionMailer 出现错误:

undefined method `action_mailer' for #<Rails::Application::Configuration:0xbbb54bc>

如何解决设计问题?有没有比我目前使用的方法更好的方法将 Rails 模型包含在另一个应用程序中以避免维护两个 gemfiles?谢谢

最佳答案

尽管这种架构必须在不久的将来发生变化,但我们设法通过在 ruby​​ 应用程序中包含设计及其初始化程序来解决此错误。

# FIXME: Dependency needed in Rails but not in the engine.
require 'devise'
require_relative "../../RailsApp/config/initializers/devise.rb"

#Load all the models

关于ruby-on-rails - 在 Rails 外部包含用户模型时未定义的方法 'devise',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10654469/

相关文章:

ruby-on-rails - Rails - 如何从 Rails 网站删除 Facebook Cookie

ruby - Mechanize 不提交表格

ruby - 以 `@_` 开头的实例变量

ruby - 代理背后的omniauth

ruby-on-rails - 当我有一个记录实例时,如何从我的模型枚举中获取 int 值?

mysql - 设计 Rails 中的优化查询

ruby-on-rails - Rails 控制台命令将不起作用。终端也启动了

ruby-on-rails - Rails 应用程序日志中的重复输出

ruby-on-rails - 非常长的 html 属性的 Haml 多行

ruby-on-rails - 编写 ActiveRecord 适配器