2013-03-07 3 views
10

Je joue avec une application de ruby ​​autonome et ne peut pas configurer Mongoid 3.0.13 pour fonctionner.Mongoid Without Rails

J'ai couru à travers une des applications par exemple couple qui ont des blocs de configuration comme:

Mongoid::Config.instance.from_hash({"database" => "oid"}) 

Ou

Mongoid.configure do |config| 
name = "mongoid_test_db" 
host = "localhost" 
port = 27017 
config.database = Mongo::Connection.new.db(name) 
end 

Ce résultat dans:

undefined method `database=' for Mongoid::Config:Module (NoMethodError) 

Il semble que les paramètres de configuration ont changé récemment.

J'ai essayé aussi:

Mongoid::Config.connect_to("sweet") 

Mais cela semble ne rien faire.

Répondre

11

Par "autonome" je suppose que vous ne voulez pas dire rails. Mongoid fournit en fait un moyen facile de faire ce travail indépendamment de la façon dont vous l'exécutez.

  1. Définissez un fichier mongoid.yml avec vos informations de connexion à la base de données comme d'habitude.
development: 
    clients: 
    default: 
     database: mongoid 
     hosts: 
     - localhost:27017 
  1. Assurez-vous que vous avez tenu MongoId dans votre application.
  2. Appelez Mongoid.load! pour que Mongoid analyse votre fichier de configuration et s'initialise.
require 'mongoid' 
Mongoid.load!('/path/to/your/mongoid.yml') 

Cette information peut également être trouvé ici sous le "Sinatra, Padrino, et d'autres" section: http://mongoid.org/en/mongoid/docs/installation.html

La même approche est applicable pour les non-webapps. J'espère que cela pourra aider.

+0

@ ashes999 la réponse est exact cependant. : -/Il suffit d'un peu creuser/comprendre ce qui se passe sous le capot dans la base de données ci-dessous mongoïde. "client" est la terminologie officielle de MongoDB vous trouverez leurs documents, et mongoid a ajouté le concept d'une "session" en plus de cela. Dans les versions modernes de mongoid, tout le concept de la session a été supprimé. –

0

La réponse précédente est correcte pour utiliser Mongoid.load! si vous voulez charger à partir d'un fichier de configuration mongoid. J'ai couru dans un cas où j'avais besoin d'intégrer la configuration Mongoid dans un autre fichier de configuration. Par conséquent, j'avais besoin d'un moyen de charger la configuration à partir d'un hachage.

Dans> 3.1, vous pourrez appeler Mongoid.load_configuration (hash).

Malheureusement, cette fonction est privée dans 3.0. Par conséquent, la mise en place d'une méthode d'alias public avant le chargement fonctionne MongoId:

module Mongoid 
    module Config 
    def load_configuration_hash(settings) 
     load_configuration(settings) 
    end 
    end 
end 

Assurez-vous que ce code est appelé avant require 'MongoId'. Vous pouvez maintenant appeler Mongoid.load_configuration_hash (hash).

2

Essayez ceci:

prompt> ruby myapp.rb 
hello world 

prompt> cat mongoid.yml 
development: 
    sessions: 
    default: 
     database: myapp 
     hosts: 
     - localhost:27017 

prompt> cat myapp.rb 
require 'mongoid' 
Mongoid.load!("mongoid.yml", :development) 
puts "hello world" 
+0

+ 1 votre exemple de travail de 'mongoid.yml' a résolu mon problème de' assurez-vous que vous avez une clé de session de niveau supérieur avec au moins 1 configuration de session par défaut pour cela '. Les docs mongo officiels utilisent 'clients' au lieu de' sessions', ce qui ne fonctionne pas – ashes999