2011-01-01 13 views
0

Ich bin neu in Ruby, also tut mir leid, wenn diese Frage eine offensichtliche Antwort hat, aber ich hatte nicht viel Glück damit.Ruby NameError mit BSON

Aber ich immer laufen in

nicht initialisierte Konstante BSON :: ObjectID (Nameerror)

Ich habe die erfordern

require 'mongo' 

Dann ist hier das Stück Code, das Werfen ist der Fehler, Sammlung von natürlich Punkten auf eine db.

#Insert and return the row. 
def insert(row) 
    id = collection.insert row 
    collection.find_one(:_id => BSON::ObjectID.from_string(id.to_s)) 
end 

Ich bin völlig ratlos, was hier falsch ist. zu sehen, wie Ruby nicht mag, dass ich Bson vor oder nach Mongo benötige.

in 1.9.2 und 1.8.7 Versuchen

Antwort

0

War das Problem lösen 100% nicht in der Lage, aber id war schon ein BSON :: ObjectID so es Ich habe gerade zu

collection.find_one(:_id => id) 

Werke, wie ich es jetzt möchten!

3

aktualisieren: Es ist Id (oben, dann Kleinschreibung), nicht-ID.

Nur um sicher zu sein, setzen Sie die require 'mongo' in die gleiche Datei wie der Codeblock oben, und ändern Sie dann BSON::ObjectID zu ::BSON::ObjectId.

+0

Yep erfordern 'Mongo' ist an der Spitze dieser Datei, änderte es zu :: BSON :: ObjectId auch nicht geholfen. Immer noch die "nicht initialisierte Konstante BSON :: ObjectID (NameError)" – Akuseru

+2

Sie werden sich selbst treten ... es ist ein Kleinbuchstabe "d" in "ObjectId". Ich habe es gerade im IRB versucht. Klassisch. – stef

+0

Seltsam, dass dies nicht die akzeptierte Antwort ist, weil es korrekt ist, oder eher der obige Kommentar ist. – cbmanica

1

Versuchen Sie eine Anforderung 'Bson' in der Spitze Ihrer Datei.

+0

Danke, aber immer noch eine nicht initialisierte Konstante BSON :: ObjectID – Akuseru

Verwandte Themen