Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Upgrading to neo4j.rb 8.0 and neo4j-core 7.0.0 breaks Devise code #27

Open
Grace opened this issue Dec 18, 2016 · 3 comments
Open

Upgrading to neo4j.rb 8.0 and neo4j-core 7.0.0 breaks Devise code #27

Grace opened this issue Dec 18, 2016 · 3 comments

Comments

@Grace
Copy link

Grace commented Dec 18, 2016

NoMethodError in Devise::SessionsController#create

Extracted source (around line #62):

60 list = response.body || []
61 list.map do |item|
62 {type: CONSTRAINT_TYPES[item[:type]],
63 label: item[:label].to_sym,
64 properties: item[:property_keys].map(&:to_sym)}

Fulltrace:

neo4j-core (7.0.0) lib/neo4j/core/cypher_session/adaptors/http.rb:62:in `constraints'
neo4j-core (7.0.0) lib/neo4j/core/cypher_session.rb:36:in `block (2 levels) in <class:CypherSession>'
neo4j (8.0.0) lib/neo4j/model_schema.rb:35:in `model_constraints'
neo4j (8.0.0) lib/neo4j/model_schema.rb:131:in `each_schema_element'
neo4j (8.0.0) lib/neo4j/model_schema.rb:94:in `validate_model_schema!'
neo4j (8.0.0) lib/neo4j/active_base.rb:78:in `validate_model_schema!'
neo4j (8.0.0) lib/neo4j/active_base.rb:50:in `new_query'
neo4j (8.0.0) lib/neo4j/active_node/query/query_proxy.rb:305:in `_query'
neo4j (8.0.0) lib/neo4j/active_node/query/query_proxy.rb:290:in `_query_model_as'
neo4j (8.0.0) lib/neo4j/active_node/query/query_proxy.rb:113:in `base_query'
neo4j (8.0.0) lib/neo4j/active_node/query/query_proxy.rb:98:in `query_as'
neo4j (8.0.0) lib/neo4j/active_node/query/query_proxy.rb:87:in `query'
neo4j (8.0.0) lib/neo4j/active_node/query/query_proxy_methods.rb:253:in `first_and_last'
neo4j (8.0.0) lib/neo4j/active_node/query/query_proxy_methods.rb:31:in `first'
neo4j (8.0.0) lib/neo4j/active_node/orm_adapter.rb:42:in `find_first'
devise (4.2.0) lib/devise/models/authenticatable.rb:267:in `find_first_by_auth_conditions'
devise (4.2.0) lib/devise/models/authenticatable.rb:263:in `find_for_authentication'
devise (4.2.0) lib/devise/models/database_authenticatable.rb:162:in `find_for_database_authentication'
devise (4.2.0) lib/devise/strategies/database_authenticatable.rb:8:in `authenticate!'
warden (1.2.6) lib/warden/strategies/base.rb:53:in `_run!'
warden (1.2.6) lib/warden/proxy.rb:358:in `block in _run_strategies_for'
warden (1.2.6) lib/warden/proxy.rb:353:in `each'
warden (1.2.6) lib/warden/proxy.rb:353:in `_run_strategies_for'
warden (1.2.6) lib/warden/proxy.rb:323:in `_perform_authentication'
warden (1.2.6) lib/warden/proxy.rb:127:in `authenticate!'
devise (4.2.0) app/controllers/devise/sessions_controller.rb:17:in `create'
actionpack (5.0.0.1) lib/action_controller/metal/basic_implicit_render.rb:4:in `send_action'
actionpack (5.0.0.1) lib/abstract_controller/base.rb:188:in `process_action'
actionpack (5.0.0.1) lib/action_controller/metal/rendering.rb:30:in `process_action'
actionpack (5.0.0.1) lib/abstract_controller/callbacks.rb:20:in `block in process_action'
activesupport (5.0.0.1) lib/active_support/callbacks.rb:126:in `call'
activesupport (5.0.0.1) lib/active_support/callbacks.rb:506:in `block (2 levels) in compile'
activesupport (5.0.0.1) lib/active_support/callbacks.rb:455:in `call'
activesupport (5.0.0.1) lib/active_support/callbacks.rb:101:in `__run_callbacks__'
activesupport (5.0.0.1) lib/active_support/callbacks.rb:750:in `_run_process_action_callbacks'
activesupport (5.0.0.1) lib/active_support/callbacks.rb:90:in `run_callbacks'
actionpack (5.0.0.1) lib/abstract_controller/callbacks.rb:19:in `process_action'
actionpack (5.0.0.1) lib/action_controller/metal/rescue.rb:20:in `process_action'
actionpack (5.0.0.1) lib/action_controller/metal/instrumentation.rb:32:in `block in process_action'
activesupport (5.0.0.1) lib/active_support/notifications.rb:164:in `block in instrument'
activesupport (5.0.0.1) lib/active_support/notifications/instrumenter.rb:21:in `instrument'
activesupport (5.0.0.1) lib/active_support/notifications.rb:164:in `instrument'
actionpack (5.0.0.1) lib/action_controller/metal/instrumentation.rb:30:in `process_action'
actionpack (5.0.0.1) lib/action_controller/metal/params_wrapper.rb:248:in `process_action'
searchkick (1.4.1) lib/searchkick/logging.rb:153:in `process_action'
actionpack (5.0.0.1) lib/abstract_controller/base.rb:126:in `process'
actionview (5.0.0.1) lib/action_view/rendering.rb:30:in `process'
actionpack (5.0.0.1) lib/action_controller/metal.rb:190:in `dispatch'
actionpack (5.0.0.1) lib/action_controller/metal.rb:262:in `dispatch'
actionpack (5.0.0.1) lib/action_dispatch/routing/route_set.rb:50:in `dispatch'
actionpack (5.0.0.1) lib/action_dispatch/routing/route_set.rb:32:in `serve'
actionpack (5.0.0.1) lib/action_dispatch/routing/mapper.rb:16:in `block in <class:Constraints>'
actionpack (5.0.0.1) lib/action_dispatch/routing/mapper.rb:46:in `serve'
actionpack (5.0.0.1) lib/action_dispatch/journey/router.rb:39:in `block in serve'
actionpack (5.0.0.1) lib/action_dispatch/journey/router.rb:26:in `each'
actionpack (5.0.0.1) lib/action_dispatch/journey/router.rb:26:in `serve'
actionpack (5.0.0.1) lib/action_dispatch/routing/route_set.rb:725:in `call'
warden (1.2.6) lib/warden/manager.rb:35:in `block in call'
warden (1.2.6) lib/warden/manager.rb:34:in `catch'
warden (1.2.6) lib/warden/manager.rb:34:in `call'
rack (2.0.1) lib/rack/etag.rb:25:in `call'
rack (2.0.1) lib/rack/conditional_get.rb:38:in `call'
rack (2.0.1) lib/rack/head.rb:12:in `call'
rack (2.0.1) lib/rack/session/abstract/id.rb:222:in `context'
rack (2.0.1) lib/rack/session/abstract/id.rb:216:in `call'
actionpack (5.0.0.1) lib/action_dispatch/middleware/cookies.rb:613:in `call'
neo4j (8.0.0) lib/neo4j/migrations/check_pending.rb:16:in `call'
actionpack (5.0.0.1) lib/action_dispatch/middleware/callbacks.rb:38:in `block in call'
activesupport (5.0.0.1) lib/active_support/callbacks.rb:97:in `__run_callbacks__'
activesupport (5.0.0.1) lib/active_support/callbacks.rb:750:in `_run_call_callbacks'
activesupport (5.0.0.1) lib/active_support/callbacks.rb:90:in `run_callbacks'
actionpack (5.0.0.1) lib/action_dispatch/middleware/callbacks.rb:36:in `call'
actionpack (5.0.0.1) lib/action_dispatch/middleware/executor.rb:12:in `call'
actionpack (5.0.0.1) lib/action_dispatch/middleware/remote_ip.rb:79:in `call'
actionpack (5.0.0.1) lib/action_dispatch/middleware/debug_exceptions.rb:49:in `call'
web-console (3.4.0) lib/web_console/middleware.rb:135:in `call_app'
web-console (3.4.0) lib/web_console/middleware.rb:28:in `block in call'
web-console (3.4.0) lib/web_console/middleware.rb:18:in `catch'
web-console (3.4.0) lib/web_console/middleware.rb:18:in `call'
actionpack (5.0.0.1) lib/action_dispatch/middleware/show_exceptions.rb:31:in `call'
railties (5.0.0.1) lib/rails/rack/logger.rb:36:in `call_app'
railties (5.0.0.1) lib/rails/rack/logger.rb:24:in `block in call'
activesupport (5.0.0.1) lib/active_support/tagged_logging.rb:70:in `block in tagged'
activesupport (5.0.0.1) lib/active_support/tagged_logging.rb:26:in `tagged'
activesupport (5.0.0.1) lib/active_support/tagged_logging.rb:70:in `tagged'
railties (5.0.0.1) lib/rails/rack/logger.rb:24:in `call'
sprockets-rails (3.2.0) lib/sprockets/rails/quiet_assets.rb:13:in `call'
request_store (1.3.1) lib/request_store/middleware.rb:9:in `call'
actionpack (5.0.0.1) lib/action_dispatch/middleware/request_id.rb:24:in `call'
rack (2.0.1) lib/rack/method_override.rb:22:in `call'
rack (2.0.1) lib/rack/runtime.rb:22:in `call'
activesupport (5.0.0.1) lib/active_support/cache/strategy/local_cache_middleware.rb:28:in `call'
actionpack (5.0.0.1) lib/action_dispatch/middleware/executor.rb:12:in `call'
actionpack (5.0.0.1) lib/action_dispatch/middleware/static.rb:136:in `call'
rack (2.0.1) lib/rack/sendfile.rb:111:in `call'
railties (5.0.0.1) lib/rails/engine.rb:522:in `call'
puma (3.6.2) lib/puma/configuration.rb:225:in `call'
puma (3.6.2) lib/puma/server.rb:578:in `handle_request'
puma (3.6.2) lib/puma/server.rb:415:in `process_client'
puma (3.6.2) lib/puma/server.rb:275:in `block in run'
puma (3.6.2) lib/puma/thread_pool.rb:116:in `block in spawn_thread'
@cheerfulstoic
Copy link
Contributor

Hey @Grace thanks for the report! I'm actually cleaning up a bit of stuff in this gem right now, so I'll have a look at this shortly!

@cheerfulstoic
Copy link
Contributor

I've looked a bit and I'm wondering what version of Neo4j are you using?

It seems that this is failing in the place where version 8.0 of the neo4j gem is trying to figure out what constraints are in the database so that it can validate that your app has the constraints it needs. I'm wondering if the version of your Neo4j database is affecting the response from db/data/schema/constraint

@cheerfulstoic
Copy link
Contributor

I think I've fixed this (or at least made it better). There was an issue where Neo4j was returning an error when the gem was trying to get constraints or indexes which was simply causing the gem's code to trip up. That error should now be raised as an exception. Try running:

bundle update neo4j neo4j-core

At that point you should get a CypherSession::ConnectionFailedError exception with more information from Neo4j on what is wrong

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants