【问题标题】:Rails Engine with Mongoid带有 Mongoid 的 Rails 引擎
【发布时间】:2012-12-19 17:50:09
【问题描述】:

我正在创建独立的 Rails 引擎应用程序,它将使用 mongoid 进一步添加到主应用程序中。所以,我就这样开始了。

rails plugin new some_engine --mountable --skip-active-record

然后在gem文件中:

gem 'mongoid', "~> 3.0.15"

然后我运行这个命令来生成 mongo 配置文件:

some_engine\test\dummy>rails g mongoid:config

在test/dummy/config文件夹下生成mongoid.yml

现在,如果我生成一些模型,它仍在调用活动记录

some_engine>rails generate scaffold post title:string

它给出输出:

 invoke  active_record
 create    db/migrate/20121219170013_create_some_engine_posts.rb
...........

然后我更改 script/rails 文件夹下的 rails 文件:

require 'rails/all'

require "action_controller/railtie"
require "action_mailer/railtie"
require "active_resource/railtie"
require "sprockets/railtie"
require "rails/test_unit/railtie"

然后,如果我生成一些东西,它仍然不会调用 mongoid

some_engine>rails generate model post

这里什么都没有发生。

当我跑步时

some_engine>rails generate scaffold post title:string

 invoke  resource_route.....

我是否在这里遗漏了将 mongoid 与 Rails 引擎一起使用的东西?

【问题讨论】:

  • 您是否希望创建迁移? Mongodb 不需要迁移。
  • 不,我只是希望像往常一样使用生成器。如您所见,当我运行 rails g model 命令时它不会生成模型。此外,当我手动创建模型时,它无法保存记录。
  • --mountable 有什么用?我的 rails 没有那个选项。
  • stackoverflow.com/questions/6118905/… 还要检查.. rails plugin --help
  • 啊,我错过了其中的“插件”部分。谢谢:)

标签: ruby-on-rails ruby ruby-on-rails-3 mongoid rails-engines


【解决方案1】:

听起来 mongoid 仍未加载。对不起,我没有时间重现。如果您在 engine.rb 文件中明确要求 mongoid 会发生什么?

【讨论】:

  • 没问题。您可能还必须为引擎所依赖的任何其他内容添加 require 语句。
  • require 'mongoid' in engine.rb 为我工作:)
【解决方案2】:

在 Rails 4 中,如果我们不需要 active_resource。生成的插件应用程序在 bin/rails 中加载了 rails 模块。


require "action_controller/railtie"
require "action_mailer/railtie"
require "sprockets/railtie"
require "rails/test_unit/railtie"
require "mongoid"
require 'rails/engine/commands'

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-26
  • 2012-03-27
  • 1970-01-01
  • 1970-01-01
  • 2013-02-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多