【问题标题】:Rails-api with Mongoid in local gem本地 gem 中带有 Mongoid 的 Rails-api
【发布时间】:2014-03-07 13:53:00
【问题描述】:

我有一个rails-api 项目,它使用我自己的本地 gem 进行授权。 此 gem 应连接 MongoDB 以存储用户和令牌。

我无法使用MongoidMongoDB 建立联系并做

Mongoid.load!(yaml_dir, env)

当我从 Mongoid (load!, logger) 调用任何方法时,我得到了

/Users/M/.rvm/gems/ruby-2.1.0/gems/mongoid-1.0.6/lib/mongoid.rb:68:in 'method_missing': undefined method 'load!' for #<Mongoid::Config:0x000001049e10d8> (NoMethodError)

如何从本地 gem 连接 mongo?

【问题讨论】:

  • 这通常对我有用,但我使用大于 3.0 的 mongoid 版本。根据旧的 Mongoid 2.0 文档,您应该在应用程序的初始化Mongoid.configure do |config| config.master = Mongo::Connection.new.db("godfather") end 中尝试以下操作。但这些是根据 Mongoid 2.0 文档,很有可能它们不适用于您的版本。由于不再支持您的 mongoid 版本,我强烈建议您升级到 3.0。并将您的 rails 版本升级到至少 3.2.13
  • 我用的是Mongoid 4,不知道为什么它也安装了mongoid 1。
  • 您不会是第一个提出投诉的人。我认为由于您的 rails 版本,它默认下载了 mongoid 1。我认为如果你升级了你的 rails 版本,然后在你的 gemfile 中停留在gem "mongoid", "~> 4.0.0.beta1" 你应该很高兴
  • 是的。我改变了它,它现在似乎正在工作。
  • 好的,我会把评论移到答案部分,这样这个问题就不会出现在未回答的垃圾箱中。随意upvote ;)

标签: ruby-on-rails mongodb gem mongoid database-connection


【解决方案1】:

解决办法是指定

gem 'mongoid', github: 'mongoid/mongoid'

在宝石Gemfile

gem 'mongoid', '~>4.0.0.beta1', github: 'mongoid/mongoid'

导轨Gemfile

gem.gemspec 必须有以下条目:

spec.add_runtime_dependency 'mongoid'
spec.add_runtime_dependency 'bson'
spec.add_runtime_dependency 'bson_ext'

【讨论】:

    【解决方案2】:

    问题的原因是您使用的 mongoid 版本不支持该方法(在您的情况下为 1.0.6 版本)

    看来,根据您的 rails 版本,mongoid gem 下载了一个非常旧的版本。一旦你升级你的rails版本并将以下内容添加到你的gemfile中,你的问题应该得到解决: gem "mongoid", "~> 4.0.0.beta1"

    此外,一旦有稳定版本发布(即测试后),请务必升级您的 mongoid 版本

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-15
      • 1970-01-01
      • 2012-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多