我正在开发一个由两部分组成的应用程序:一个 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 中添加了设计 gem,但错误仍然存在。如果我理解正确的话,Devise 是一个 Rails 引擎,这就是为什么它不只是通过需要 gem 来加载的原因。
我读到在另一个应用程序中包含 Rails 模型的更好方法是要求该environment.rb
文件,但是当我尝试这样做时,ActionMailer 出现错误:
undefined method `action_mailer' for #<Rails::Application::Configuration:0xbbb54bc>
我该如何解决设计问题?有没有比我目前用来避免维护两个 gemfile 的更好的方法将 Rails 模型包含在另一个应用程序中?谢谢