2010-10-04 17 views
0

J'ai téléchargé la gemme mongo_mapper et elle a été installée avec succès. Maintenant, je l'utilise dans mon application et il jette toujours l'exception "Aucun fichier à charger mongo_mapper". Qu'est-ce que c'est censé vouloir dire?Exception utilisant MongoMapper avec Ruby: "Aucun fichier à charger mongo_mapper"

require 'mongo_mapper' 

include mongo 

MISE À JOUR: Après avoir utilisé require 'rubygems' d'abord. Mon problème initial est maintenant disparu il y a un autre problème bizarre:

Je reçois le texte suivant:

**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. 

je l'ai déjà installé bson_ext mais il garde cette exception jeter! MISE À JOUR 2: l'avertissement bson a maintenant disparu, mais je ne suis pas en mesure de lister les éléments de la collection Customers.

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 

Répondre

0

Vous devez inclure des rubygems avant d'inclure une gemme.

require 'rubygems' 
require 'mongo_mapper' 

Je suis aussi assez sûr que votre ligne suivante include mongo est incorrecte, vous voulez probablement include Mongo. En fait, vous ne voulez probablement rien du tout, puisque votre plan est d'utiliser MongoMapper, pas le pilote directement.

Mise à jour:

En ce qui concerne la chose bson_ext, ce n'est pas une exception, juste un avertissement. Évidemment, pour l'utilisation en production, vous voudriez trier cela et vous pouvez le faire en vous assurant que vous avez les dernières gemmes installées: sudo gem install mongo bson_ext mongo_mapper qui devrait vous dire (à partir du 4 octobre 2010) qu'il a installé mongo 1.1, bson_ext 1.1 et mongo_mapper 0.8 .4.

Mise à jour 2:

Besoin d'informations. Est-ce que le client que vous prévoyez d'apparaître apparaît dans le shell mongo? Comment l'avez-vous inséré? Etes-vous sûr que les noms des collections sont corrects? Donc, si vous avez utilisé un objet .NET pour créer l'ensemble de données et que vous ne pouvez pas le modifier maintenant, vous pouvez spécifier le nom de la collection à la main pour votre document MongoMapper. Exactement:

class Customer 
    include MongoMapper::Document 
    set_collection_name 'Customers' 

    # other stuff 
end 
+0

Merci! Mon problème original est résolu mais maintenant un nouveau problème arrive! S'il vous plaît voir le message original. – johndoe

+0

En fait, j'ai inséré l'objet client en utilisant .NET C# et je veux le récupérer en utilisant Ruby. L'objet Client a également plus de champs comme UserName etc. que je n'ai pas déclarés dans le mapping Ruby. L'enregistrement montre dans la coquille. Le nom de la collection est "Clients". – johndoe

+0

Ok, mis à jour ma réponse. Le nom de votre collection serait erroné s'il était créé à l'aide d'un wrapper .NET (les majuscules sont assez rares dans Ruby). – rfunduk