0

我下载了 mongo_mapper gem 并成功安装。现在,我在我的应用程序中使用它,它总是抛出异常“没有文件加载 mongo_mapper”。那应该是什么意思?

require 'mongo_mapper'

include mongo

更新:首先使用 require 'rubygems' 之后。我原来的问题已经消失了,现在还有另一个奇怪的问题:

我得到以下信息:

**Notice: C extension not loaded. This is required for optimum MongoDB Ruby driver performance.
  You can install the extension as follows:
  gem install bson_ext

  If you continue to receive this message after installing, make sure that the
  bson_ext gem is in your load path and that the bson_ext and mongo gems are of the same version.

我已经安装了 bson_ext 但它一直抛出这个异常!

更新 2:bson 警告现在消失了,但我无法列出客户集合中的项目。

require 'rubygems'
require 'mongo_mapper'

include Mongo

MongoMapper.database = 'Northwind'

class Customer
  include MongoMapper::Document

  key :FirstName, String
  key :LastName, String
  key :UserName, String
end


customers = Customer.all

puts customers.count # this always is 0. It should be 1 since there is one item in the Customers collection

puts customers
4

1 回答 1

0

在包含 gem 之前,您需要包含 ruby​​gems。

require 'rubygems'
require 'mongo_mapper'

我也很确定你的下一行include mongo是不正确的,你可能想要include Mongo. 实际上,您可能根本什么都不想要,因为您的计划是使用MongoMapper,而不是直接使用驱动程序。

更新:

至于这bson_ext件事,也不例外,只是一个警告。显然,对于生产用途,您需要解决这个问题,您可以通过确保安装了最新的 gem 来做到这一点:sudo gem install mongo bson_ext mongo_mapper它应该告诉您(截至 2010 年 10 月 4 日)它安装了 mongo 1.1、bson_ext 1.1 和 mongo_mapper 0.8。 4.

更新 2:

需要更多信息。您希望出现的客户是否出现在 mongo shell 中?你是怎么插入的?你确定集合名称是正确的吗?

因此,如果您使用一些 .NET 东西来制作数据集并且现在无法更改它,您可以为您的 MongoMapper 文档手动指定集合名称。像这样:

class Customer
  include MongoMapper::Document
  set_collection_name 'Customers'

  # other stuff
end
于 2010-10-04T19:52:24.850 回答