2013-03-07 19 views
10

Gram z samodzielną aplikacją ruby ​​i nie mogę skonfigurować Mongoid 3.0.13 do pracy.Mongoid bez szyn

Mam natknąć przykładu kilka aplikacji, które mają bloki konfiguracyjne jak:

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

Albo

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

Wynikają one w:

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

Wydaje ustawienia konfiguracyjne ostatnio się zmieniło.

Próbowałem również:

Mongoid::Config.connect_to("sweet") 

Ale wydaje się, że nic nie robią.

Odpowiedz

11

Przez "samodzielny" zakładam, że masz na myśli nie szyny. Mongoid w rzeczywistości zapewnia łatwy sposób, aby to działało bez względu na to, jak go używasz.

  1. Zdefiniuj plik mongoid.yml z informacjami o połączeniu z bazą danych w taki sposób, jak zwykle.
development: 
    clients: 
    default: 
     database: mongoid 
     hosts: 
     - localhost:27017 
  1. Upewnij się, że wymagane Mongoid w aplikacji.
  2. Zadzwoń pod Mongoid.load!, aby Mongoid przetworzył twój plik konfiguracyjny i zainicjował się.
require 'mongoid' 
Mongoid.load!('/path/to/your/mongoid.yml') 

Ten informacji można znaleźć również tutaj w ramach "Sinatra, Padrino, a inni" odcinek: http://mongoid.org/en/mongoid/docs/installation.html

To samo podejście jest stosowane tylko dla webapps. Nadzieja, która pomaga.

+0

@ ashes999 choć odpowiedź jest poprawne. : -/To po prostu wymaga trochę kopania/zrozumienia tego, co dzieje się pod maską w bazie poniżej mongoidu. "Klient" to oficjalna terminologia MongoDB, w której znajdziesz swoje dokumenty, a mongoid dodał do tego pojęcie "sesji". We współczesnych wersjach mongoid, cała koncepcja sesji została usunięta. –

0

Poprzednia odpowiedź jest poprawna, aby użyć Mongoid.load! jeśli chcesz załadować z pliku konfiguracyjnego mongoid. Wpadłem na przypadek, w którym musiałem osadzić konfigurację Mongoid w innym pliku konfiguracyjnym. Dlatego potrzebowałem sposobu na załadowanie konfiguracji z hasha.

W> 3.1, będziesz mógł wywołać Mongoid.load_configuration (hash).

Niestety ta funkcja jest prywatna w wersji 3.0. Dlatego należy skonfigurować metodę aliasów publicznych przed załadowaniem robót Mongoid:

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

Upewnij się, że ten kod zostanie wywołany, zanim będzie wymagać "mongoid". Teraz możesz wywołać Mongoid.load_configuration_hash (hash).

2

Spróbuj tego:

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 Twój przykład pracy 'mongoid.yml' rozwiązał mój problem' upewnij się, że masz klucz sesji najwyższego poziomu z co najmniej 1 domyślną konfiguracją sesji dla niego '. Oficjalne dokumenty mongo używają 'clients' zamiast' sessions', co nie działa – ashes999