Обновление 2: Мне удалось еще более сузить его до того факта, что он, очевидно, не загружает всех классов Монго, когда я запускаю грабли.Я добавил puts Mongo.constants
в config / boot.rb после require 'mongo'
.Когда я запускаю приложение, оно выводит длинный список, включающий классы Connection и ConnectionFailure.Когда я пытаюсь запустить грабли, выводится гораздо более короткий список, и эти два класса отсутствуют.Что здесь происходит?
Обновление: Спасая универсальное исключение, я устранил ошибку NameError для Mongo :: ConnectionFailure, и теперь она генерирует ошибку NameError для Mongo :: Connection.Так что я думаю, это проблема загрузки монго.
Когда я делаю puts defined? Mongo
, он печатает constant
, когда я запускаю приложение и когда я запускаю грабли.Однако puts defined? Mongo::Connection
печатает constant
, когда я запускаю приложение, но ставит пустую строку, когда я запускаю грабли.
Ошибка та же, требуется ли мне монго из config / boot.rb или из app.rb.
Я новичок в ruby и пытаюсь настроить приложение с помощью Sinatra, Unicorn и Mongo / mongoid.Я пытаюсь запустить задачу rake, и когда я запускаю rake import:areas
, я получаю следующую ошибку:
rake aborted!
NameError: uninitialized constant Mongo::ConnectionFailure
/home/amanda/Documents/development/app-name/app.rb:7:in `rescue in block in <class:App>'
Сервер mongo работает, и код проходит через более ранний вызов Mongo :: Connection ((где я ожидал бы, что он сгенерирует NameError, если mongo не был загружен) без ошибок.Наблюдая за консолью mongod, кажется, что она даже не ударяется о mongo, потому что в журналах консоли нет никаких указаний на какую-либо попытку подключения.
Когда я запускаю само приложение (используя heroku local
или * 1029)*) он запускается и прослушивает соответствующий порт, и я могу без проблем подключиться к корневой конечной точке.Наблюдая за тем, как консоль mongod запускается, я вижу, как она успешно подключается к базе данных.Я использую Mongo Gem версии 1.10.2 и Mongoid 3.1.6 (требования к кодовой базе, в которой я работаю).
соответствующие строки rakefile:
require "./config/boot"
namespace "import" do
task "areas" do
# code here
end
end
config/boot.rb:
require 'sinatra'
require 'mongo'
require 'mongoid'
require './app'
mongoid.yml:
development:
clients:
default:
database: db-name
hosts:
- localhost:27017
options:
options:
app.rb:
class App < Sinatra::Base
configure do
# mongo
begin
mongo_db = Mongo::Connection.new.db "db-name"
set :mongo_db, mongo_db
rescue Mongo::ConnectionFailure
set :mongo_db, {}
end
end
# more code here
end
Чего мне здесь не хватает?Ничто из того, что я погуглила, не показалось мне такой проблемой.Я ожидаю, что эта ошибка будет выдана на Mongo::Connection
, а не на Mongo::ConnectionFailure
.