sonic
sonic

Reputation: 1430

Locomotive CMS and mongoid version

I created few years ago websites based on mongodb 3.4 and "locomotive_cms" gem. My hosting provider upgraded mongodb to 3.6 and my website getting this error when uploading the image file

Moped::Errors::OperationFailure (The operation: #<Moped::Protocol::Command
@length=468
...
failed with error 9: "The 'cursor' option is required, except for aggregate with the explain argument"

I use mongoid (3.1.7)

It has something to do with moped(aggregation problem)

 moped (1.5.3) lib/moped/node.rb:99:in `block in command'
  moped (1.5.3) lib/moped/node.rb:600:in `block (3 levels) in flush'
  moped (1.5.3) lib/moped/node.rb:599:in `map'
  moped (1.5.3) lib/moped/node.rb:599:in `block (2 levels) in flush'
  moped (1.5.3) lib/moped/node.rb:150:in `ensure_connected'
  moped (1.5.3) lib/moped/node.rb:595:in `block in flush'
  moped (1.5.3) lib/moped/node.rb:610:in `logging'
  moped (1.5.3) lib/moped/node.rb:594:in `flush'
  moped (1.5.3) lib/moped/node.rb:583:in `process'
  moped (1.5.3) lib/moped/node.rb:92:in `command'
  moped (1.5.3) lib/moped/session/context.rb:51:in `block in command'
  moped (1.5.3) lib/moped/session/context.rb:105:in `block in with_node'
  moped (1.5.3) lib/moped/cluster.rb:251:in `with_secondary'
  moped (1.5.3) lib/moped/session/context.rb:104:in `with_node'
  moped (1.5.3) lib/moped/session/context.rb:50:in `command'
  moped (1.5.3) lib/moped/database.rb:76:in `command'
  moped (1.5.3) lib/moped/session.rb:78:in `command'
  moped (1.5.3) lib/moped/collection.rb:128:in `aggregate'
  mongoid (3.1.7) lib/mongoid/contextual/aggregable/mongo.rb:27:in `aggregates'
  mongoid (3.1.7) lib/mongoid/contextual/aggregable/mongo.rb:71:in `max'
  mongoid (3.1.7) lib/mongoid/contextual.rb:11:in `max'
  mongoid (3.1.7) lib/mongoid/finders.rb:13:in `max'
  /usrcustom_fields (2.3.4) lib/custom_fields/types/belongs_to.rb:52:in `block in apply_belongs_to_custom_field'
  activesupport (3.2.22.5) lib/active_support/callbacks.rb:440:in `_run__4082834224722639677__create__278889843058572249__callbacks'
  activesupport (3.2.22.5) lib/active_support/callbacks.rb:405:in `__run_callback'
  activesupport (3.2.22.5) lib/active_support/callbacks.rb:385:in `_run_create_callbacks'
  activesupport (3.2.22.5) lib/active_support/callbacks.rb:81:in `run_callbacks'
  mongoid (3.1.7) lib/mongoid/callbacks.rb:130:in `run_callbacks'
  mongoid (3.1.7) lib/mongoid/persistence/insertion.rb:24:in `block in prepare'
  activesupport (3.2.22.5) lib/active_support/callbacks.rb:458:in `_run__4082834224722639677__save__278889843058572249__callbacks'
  activesupport (3.2.22.5) lib/active_support/callbacks.rb:405:in `__run_callback'
  activesupport (3.2.22.5) lib/active_support/callbacks.rb:385:in `_run_save_callbacks'
  activesupport (3.2.22.5) lib/active_support/callbacks.rb:81:in `run_callbacks'
  mongoid (3.1.7) lib/mongoid/callbacks.rb:130:in `run_callbacks'
  mongoid (3.1.7) lib/mongoid/persistence/insertion.rb:23:in `prepare'
  mongoid (3.1.7) lib/mongoid/persistence/operations/insert.rb:26:in `persist'
  mongoid (3.1.7) lib/mongoid/persistence.rb:56:in `insert'
  mongoid (3.1.7) lib/mongoid/persistence.rb:85:in `save'
  mongoid (3.1.7) lib/mongoid/relations/many.rb:44:in `create'
  /usrlocomotive_cms (2.5.7) app/controllers/locomotive/content_entries_controller.rb:46:in `create'
  actionpack (3.2.22.5) lib/action_controller/metal/implicit_render.rb:4:in `send_action'
  actionpack (3.2.22.5) lib/abstract_controller/base.rb:167:in `process_action'
  actionpack (3.2.22.5) lib/action_controller/metal/rendering.rb:10:in `process_action'
  actionpack (3.2.22.5) lib/abstract_controller/callbacks.rb:18:in `block in process_action'
  activesupport (3.2.22.5) lib/active_support/callbacks.rb:569:in `block in _run__3965168837898506995__process_action__980960899211290186__callbacks'
  activesupport (3.2.22.5) lib/active_support/callbacks.rb:215:in `block in _conditional_callback_around_842'
  activesupport (3.2.22.5) lib/active_support/core_ext/time/zones.rb:45:in `use_zone'
  locomotive_cms (2.5.7) lib/locomotive/action_controller/timezone.rb:8:in `set_timezone'
  activesupport (3.2.22.5) lib/active_support/callbacks.rb:214:in `_conditional_callback_around_842'
  activesupport (3.2.22.5) lib/active_support/callbacks.rb:502:in `_run__3965168837898506995__process_action__980960899211290186__callbacks'
  activesupport (3.2.22.5) lib/active_support/callbacks.rb:405:in `__run_callback'
  activesupport (3.2.22.5) lib/active_support/callbacks.rb:385:in `_run_process_action_callbacks'
  activesupport (3.2.22.5) lib/active_support/callbacks.rb:81:in `run_callbacks'
  actionpack (3.2.22.5) lib/abstract_controller/callbacks.rb:17:in `process_action'
  actionpack (3.2.22.5) lib/action_controller/metal/rescue.rb:29:in `process_action'
  actionpack (3.2.22.5) lib/action_controller/metal/instrumentation.rb:30:in `block in process_action'
  activesupport (3.2.22.5) lib/active_support/notifications.rb:123:in `block in instrument'
  activesupport (3.2.22.5) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
  activesupport (3.2.22.5) lib/active_support/notifications.rb:123:in `instrument'
  actionpack (3.2.22.5) lib/action_controller/metal/instrumentation.rb:29:in `process_action'
  actionpack (3.2.22.5) lib/action_controller/metal/params_wrapper.rb:207:in `process_action'
  actionpack (3.2.22.5) lib/abstract_controller/base.rb:121:in `process'
  actionpack (3.2.22.5) lib/abstract_controller/rendering.rb:46:in `process'
  actionpack (3.2.22.5) lib/action_controller/metal.rb:203:in `dispatch'
  actionpack (3.2.22.5) lib/action_controller/metal/rack_delegation.rb:14:in `dispatch'
  actionpack (3.2.22.5) lib/action_controller/metal.rb:246:in `block in action'
  actionpack (3.2.22.5) lib/action_dispatch/routing/route_set.rb:73:in `dispatch'
  actionpack (3.2.22.5) lib/action_dispatch/routing/route_set.rb:36:in `call'
  journey (1.0.4) lib/journey/router.rb:68:in `block in call'
  journey (1.0.4) lib/journey/router.rb:56:in `each'
  journey (1.0.4) lib/journey/router.rb:56:in `call'
  actionpack (3.2.22.5) lib/action_dispatch/routing/route_set.rb:608:in `call'
  railties (3.2.22.5) lib/rails/engine.rb:484:in `call'
  railties (3.2.22.5) lib/rails/railtie/configurable.rb:30:in `method_missing'
  journey (1.0.4) lib/journey/router.rb:68:in `block in call'
  journey (1.0.4) lib/journey/router.rb:56:in `each'
  journey (1.0.4) lib/journey/router.rb:56:in `call'
  actionpack (3.2.22.5) lib/action_dispatch/routing/route_set.rb:608:in `call'
  locomotive_cms (2.5.7) lib/locomotive/middlewares/locale_redirection.rb:13:in `call'
  locomotive_cms (2.5.7) lib/locomotive/middlewares/locale.rb:11:in `call'
  locomotive_cms (2.5.7) lib/locomotive/middlewares/site.rb:11:in `call'
  locomotive_cms (2.5.7) lib/locomotive/middlewares/inline_editor.rb:10:in `call'
  locomotive_cms (2.5.7) lib/locomotive/middlewares/seo_trailing_slash.rb:18:in `call'
  dragonfly (1.0.12) lib/dragonfly/middleware.rb:14:in `call'
  mongoid (3.1.7) lib/rack/mongoid/middleware/identity_map.rb:34:in `block in call'
  mongoid (3.1.7) lib/mongoid/unit_of_work.rb:39:in `unit_of_work'
  mongoid (3.1.7) lib/rack/mongoid/middleware/identity_map.rb:34:in `call'
  warden (1.2.7) lib/warden/manager.rb:36:in `block in call'
  warden (1.2.7) lib/warden/manager.rb:35:in `catch'
  warden (1.2.7) lib/warden/manager.rb:35:in `call'
  actionpack (3.2.22.5) lib/action_dispatch/middleware/best_standards_support.rb:17:in `call'
  rack (1.4.7) lib/rack/etag.rb:23:in `call'
  rack (1.4.7) lib/rack/conditionalget.rb:35:in `call'
  actionpack (3.2.22.5) lib/action_dispatch/middleware/head.rb:14:in `call'
  actionpack (3.2.22.5) lib/action_dispatch/middleware/params_parser.rb:21:in `call'
  actionpack (3.2.22.5) lib/action_dispatch/middleware/flash.rb:242:in `call'
  rack (1.4.7) lib/rack/session/abstract/id.rb:210:in `context'
  rack (1.4.7) lib/rack/session/abstract/id.rb:205:in `call'
  actionpack (3.2.22.5) lib/action_dispatch/middleware/cookies.rb:341:in `call'
  actionpack (3.2.22.5) lib/action_dispatch/middleware/callbacks.rb:28:in `block in call'
  activesupport (3.2.22.5) lib/active_support/callbacks.rb:405:in `_run__2523231567589513662__call__278889843058572249__callbacks'
  activesupport (3.2.22.5) lib/active_support/callbacks.rb:405:in `__run_callback'
  activesupport (3.2.22.5) lib/active_support/callbacks.rb:385:in `_run_call_callbacks'
  activesupport (3.2.22.5) lib/active_support/callbacks.rb:81:in `run_callbacks'
  actionpack (3.2.22.5) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
  actionpack (3.2.22.5) lib/action_dispatch/middleware/remote_ip.rb:31:in `call'
  actionpack (3.2.22.5) lib/action_dispatch/middleware/debug_exceptions.rb:16:in `call'
  actionpack (3.2.22.5) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
  railties (3.2.22.5) lib/rails/rack/logger.rb:32:in `call_app'
  railties (3.2.22.5) lib/rails/rack/logger.rb:16:in `block in call'
  activesupport (3.2.22.5) lib/active_support/tagged_logging.rb:22:in `tagged'
  railties (3.2.22.5) lib/rails/rack/logger.rb:16:in `call'
  actionpack (3.2.22.5) lib/action_dispatch/middleware/request_id.rb:22:in `call'
  rack (1.4.7) lib/rack/methodoverride.rb:21:in `call'
  rack (1.4.7) lib/rack/runtime.rb:17:in `call'
  dragonfly (1.0.12) lib/dragonfly/cookie_monster.rb:9:in `call'
  activesupport (3.2.22.5) lib/active_support/cache/strategy/local_cache.rb:72:in `call'
  rack (1.4.7) lib/rack/lock.rb:15:in `call'
  rack-cache (1.8.0) lib/rack/cache/context.rb:140:in `forward'
  rack-cache (1.8.0) lib/rack/cache/context.rb:147:in `pass'
  rack-cache (1.8.0) lib/rack/cache/context.rb:159:in `invalidate'
  rack-cache (1.8.0) lib/rack/cache/context.rb:74:in `call!'
  rack-cache (1.8.0) lib/rack/cache/context.rb:51:in `call'
  locomotive_cms (2.5.7) lib/locomotive/middlewares/permalink.rb:17:in `call'
  railties (3.2.22.5) lib/rails/engine.rb:484:in `call'
  railties (3.2.22.5) lib/rails/application.rb:231:in `call'
  railties (3.2.22.5) lib/rails/railtie/configurable.rb:30:in `method_missing'
  /usr/local/lib/ruby/gems/2.3/gems/passenger-5.1.12/src/ruby_supportlib/phusion_passenger/rack/thread_handler_extension.rb:97:in `process_request'
  /usr/local/lib/ruby/gems/2.3/gems/passenger-5.1.12/src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb:160:in `accept_and_process_next_request'
  /usr/local/lib/ruby/gems/2.3/gems/passenger-5.1.12/src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb:113:in `main_loop'
  /usr/local/lib/ruby/gems/2.3/gems/passenger-5.1.12/src/ruby_supportlib/phusion_passenger/request_handler.rb:416:in `block (3 levels) in start_threads'
  /usr/local/lib/ruby/gems/2.3/gems/passenger-5.1.12/src/ruby_supportlib/phusion_passenger/utils.rb:113:in `block in create_thread_and_abort_on_exception'

I tried to update versions but I got only this version, which doesn't work for mongodb 3.6...

locomotive_cms (>= 2.5.7, ~> 2.5) was resolved to 2.5.7, which depends on
  moped (~> 1.5.3)

This is really annoying, because I can't downgrade database, either update the cms. I found that there is new Locomotive cms from some time but in prerequisites there is still mongodb 3.4 and I guess it's not all the same working, name was change to 'locomotivecms' gem.

Upvotes: 0

Views: 145

Answers (1)

sonic
sonic

Reputation: 1430

Ok I found a solution here https://github.com/mongoid/moped/issues/283 (mhuggins answer) and changed it little bit

def aggregate(*pipeline)
  # Ordering of keys apparently matters to Mongo -- `aggregate` has to come before `cursor` here.
  extract_result(database.session.command(aggregate: name, pipeline: pipeline.flatten, cursor: {}))
end

to contain database.session instead of session

This adds cursor to aggregate function by the default. It wasn't that hard to override this function after all but to find what it causes was harder part.

Anyway, I leave this question here, maybe someone finds it useful.

Upvotes: 0

Related Questions