2016-11-10 2 views
0

J'essaie d'exécuter du code Ruby on ubuntu 14.04 et lors de l'exécution d'obtenir erreur,uninitialized BSON constante :: document

'': non initialisée BSON constant :: Document (NameError)

Le code est,

#!/usr/bin/ruby 
require 'uri' 
require 'bson' 
require 'mongo' 
b = BSON::Document.new 
b["$query"] = {"token" => {"$gt"=>""}} 

payload = b.to_bson[4..-2] 
id_ish = ("\n\n" + "a"*24 + "\n\n") 

fake_id = "a"*24 + 
    "\x02_id\0".unpack('H*')[0] + 
    [id_ish.size/2 + 1].pack('V').unpack('H*')[0] + id_ish + "00" + 
    payload.unpack('H*')[0] 

puts URI.encode(fake_id) 

User.find fake_id 

Je suis passé par la documentation, BSON Tutorial

Une idée de ce qui me manque ici. Tout pointeur serait apprécié.

Répondre

0

Il semble que vous essayez d'exécuter ce code méthode « dans le vide. »

require silencieusement revenir false à moins réussi. En outre, pour exécuter le code, vous avez besoin des gems respectifs à installer. Tout d'abord, exécutez

$ gem install bson 
$ gem install mongo 

dans votre shell. Maintenant, réessayez avec votre script. Les gemmes ci-dessus devraient rendre tout fonctionne bien. Sinon, vous devez configurer l'environnement Ruby, il existe de nombreux tutoriels sur ce sujet.

Il pourrait également être un problème avec le système/ruby ​​local (la ligne de Hashbang dicte d'exécuter celui du système.) Essayez de supprimer cette ligne et exécuter le script avec

$ ruby script_name.rb 
+0

J'ai déjà les paquets mentionnés ci-dessus installé, voici la requête bijou --local *** LOCAL GEMS *** BSON (4.1.1) mongo (2.3.1) Je vais essayer votre prochaine option pour configurer l'environnement de rubis. – P4cK3tHuNt3R

+0

Attendez. Peut-être que le problème est avec le système/ruby ​​local. Essayez de supprimer la ligne hashbang (la première) du script et exécutez-la avec "ruby FILE_NAME.rb". – mudasobwa