在Rails外部包含用户模型时,未定义的方法'设计'

bru*_*077 3 ruby activerecord ruby-on-rails 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
Run Code Online (Sandbox Code Playgroud)

并通过手动保存两个几乎相同的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>
Run Code Online (Sandbox Code Playgroud)

如何用设计解决问题?是否有更好的方法将Rails模型包含在另一个应用程序中,而不是我目前使用的那个以避免保留两个gemfiles?谢谢

bru*_*077 5

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

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

#Load all the models
Run Code Online (Sandbox Code Playgroud)