Closed k-graefenhain closed 1 week ago
Could you post the full backtrace of the error?
Started POST "/create-account" for 127.0.0.1 at 2024-09-26 11:58:32 +0200 Processing by RodauthController#create_account as HTML Parameters: {"authenticity_token"=>"[FILTERED]", "email"=>"katja.graefenhain@lu.ch", "password"=>"[FILTERED]", "password-confirm"=>"[FILTERED]", "commit"=>"Create Account"} Sequel (1.7ms) select version from PRODUCT_COMPONENT_VERSION where lower(product) like 'oracle%' ↳ app/misc/rodauth_app.rb:11:in
block in
NoMethodError (undefined method `length' for nil):
app/misc/rodauth_app.rb:11:in block in <class:RodauthApp>'
This is just additional logging output around this action, there are still only 2 lines of the actual error backtrace.
Do you mean this?
sequel-activerecord_connection (1.4.2) lib/sequel/extensions/activerecord_connection.rb:77:in `_trans'
sequel (5.84.0) lib/sequel/database/transactions.rb:441:in `transaction_hooks'
sequel (5.84.0) lib/sequel/database/transactions.rb:447:in `remove_transaction'
sequel (5.84.0) lib/sequel/adapters/oracle.rb:258:in `remove_transaction'
sequel (5.84.0) lib/sequel/database/transactions.rb:288:in `ensure in _transaction'
sequel (5.84.0) lib/sequel/database/transactions.rb:288:in `_transaction'
sequel (5.84.0) lib/sequel/database/transactions.rb:239:in `block in transaction'
sequel-activerecord_connection (1.4.2) lib/sequel/extensions/activerecord_connection/oracle.rb:13:in `block in synchronize'
sequel-activerecord_connection (1.4.2) lib/sequel/extensions/activerecord_connection.rb:49:in `block in synchronize'
sequel-activerecord_connection (1.4.2) lib/sequel/extensions/activerecord_connection.rb:175:in `block (2 levels) in activerecord_lock'
activesupport (7.0.8.4) lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
activesupport (7.0.8.4) lib/active_support/dependencies/interlock.rb:41:in `permit_concurrent_loads'
sequel-activerecord_connection (1.4.2) lib/sequel/extensions/activerecord_connection.rb:174:in `block in activerecord_lock'
activesupport (7.0.8.4) lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
activesupport (7.0.8.4) lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
activesupport (7.0.8.4) lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
activesupport (7.0.8.4) lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
sequel-activerecord_connection (1.4.2) lib/sequel/extensions/activerecord_connection.rb:173:in `activerecord_lock'
sequel-activerecord_connection (1.4.2) lib/sequel/extensions/activerecord_connection.rb:42:in `synchronize'
sequel-activerecord_connection (1.4.2) lib/sequel/extensions/activerecord_connection/oracle.rb:7:in `synchronize'
sequel (5.84.0) lib/sequel/database/transactions.rb:197:in `transaction'
rodauth (2.36.0) lib/rodauth/features/base.rb:607:in `transaction'
rodauth (2.36.0) lib/rodauth/features/create_account.rb:70:in `block (4 levels) in <module:Rodauth>'
rodauth (2.36.0) lib/rodauth/features/base.rb:636:in `catch'
rodauth (2.36.0) lib/rodauth/features/base.rb:636:in `catch_error'
rodauth (2.36.0) lib/rodauth/features/create_account.rb:47:in `block (3 levels) in <module:Rodauth>'
roda (3.84.0) lib/roda/request.rb:536:in `always'
roda (3.84.0) lib/roda/plugins/pass.rb:32:in `block in always'
roda (3.84.0) lib/roda/plugins/pass.rb:32:in `catch'
roda (3.84.0) lib/roda/plugins/pass.rb:32:in `always'
roda (3.84.0) lib/roda/request.rb:527:in `_verb'
roda (3.84.0) lib/roda/request.rb:273:in `post'
rodauth (2.36.0) lib/rodauth/features/create_account.rb:42:in `block (2 levels) in <module:Rodauth>'
rodauth (2.36.0) lib/rodauth.rb:145:in `block (3 levels) in route'
rodauth (2.36.0) lib/rodauth/features/base.rb:538:in `_around_rodauth'
rodauth-rails (1.15.0) lib/rodauth/rails/feature/callbacks.rb:12:in `block in _around_rodauth'
rodauth-rails (1.15.0) lib/rodauth/rails/feature/callbacks.rb:21:in `block (3 levels) in rails_controller_around'
rodauth-rails (1.15.0) lib/rodauth/rails/feature/callbacks.rb:21:in `catch'
rodauth-rails (1.15.0) lib/rodauth/rails/feature/callbacks.rb:21:in `block (2 levels) in rails_controller_around'
rodauth-rails (1.15.0) lib/rodauth/rails/feature/csrf.rb:41:in `block in rails_controller_callbacks'
activesupport (7.0.8.4) lib/active_support/callbacks.rb:118:in `block in run_callbacks'
turbo-rails (2.0.6) lib/turbo-rails.rb:24:in `with_request_id'
turbo-rails (2.0.6) app/controllers/concerns/turbo/request_id_tracking.rb:10:in `turbo_tracking_request_id'
activesupport (7.0.8.4) lib/active_support/callbacks.rb:127:in `block in run_callbacks'
actiontext (7.0.8.4) lib/action_text/rendering.rb:20:in `with_renderer'
actiontext (7.0.8.4) lib/action_text/engine.rb:69:in `block (4 levels) in <class:Engine>'
activesupport (7.0.8.4) lib/active_support/callbacks.rb:127:in `instance_exec'
activesupport (7.0.8.4) lib/active_support/callbacks.rb:127:in `block in run_callbacks'
activesupport (7.0.8.4) lib/active_support/callbacks.rb:138:in `run_callbacks'
rodauth-rails (1.15.0) lib/rodauth/rails/feature/callbacks.rb:32:in `rails_controller_callbacks'
rodauth-rails (1.15.0) lib/rodauth/rails/feature/csrf.rb:38:in `rails_controller_callbacks'
rodauth-rails (1.15.0) lib/rodauth/rails/feature/callbacks.rb:20:in `block in rails_controller_around'
rodauth-rails (1.15.0) lib/rodauth/rails/feature/callbacks.rb:37:in `rails_controller_rescue'
rodauth-rails (1.15.0) lib/rodauth/rails/feature/callbacks.rb:19:in `rails_controller_around'
rodauth-rails (1.15.0) lib/rodauth/rails/feature/internal_request.rb:37:in `rails_controller_around'
rodauth-rails (1.15.0) lib/rodauth/rails/feature/callbacks.rb:12:in `_around_rodauth'
rodauth-rails (1.15.0) lib/rodauth/rails/feature/instrumentation.rb:10:in `block in _around_rodauth'
rodauth-rails (1.15.0) lib/rodauth/rails/feature/instrumentation.rb:50:in `block (2 levels) in rails_instrument_request'
rodauth-rails (1.15.0) lib/rodauth/rails/feature/instrumentation.rb:50:in `catch'
rodauth-rails (1.15.0) lib/rodauth/rails/feature/instrumentation.rb:50:in `block in rails_instrument_request'
activesupport (7.0.8.4) lib/active_support/notifications.rb:206:in `block in instrument'
activesupport (7.0.8.4) lib/active_support/notifications/instrumenter.rb:24:in `instrument'
activesupport (7.0.8.4) lib/active_support/notifications.rb:206:in `instrument'
rodauth-rails (1.15.0) lib/rodauth/rails/feature/instrumentation.rb:49:in `rails_instrument_request'
rodauth-rails (1.15.0) lib/rodauth/rails/feature/internal_request.rb:42:in `rails_instrument_request'
rodauth-rails (1.15.0) lib/rodauth/rails/feature/instrumentation.rb:10:in `_around_rodauth'
rodauth (2.36.0) lib/rodauth.rb:143:in `block (2 levels) in route'
roda (3.84.0) lib/roda/request.rb:603:in `if_match'
roda (3.84.0) lib/roda/plugins/pass.rb:38:in `block in if_match'
roda (3.84.0) lib/roda/plugins/pass.rb:38:in `catch'
roda (3.84.0) lib/roda/plugins/pass.rb:38:in `if_match'
roda (3.84.0) lib/roda/request.rb:199:in `is'
rodauth (2.36.0) lib/rodauth.rb:140:in `block in route'
rodauth (2.36.0) lib/rodauth/features/base.rb:169:in `route!'
rodauth (2.36.0) lib/rodauth.rb:444:in `rodauth'
rodauth-rails (1.15.0) lib/rodauth/rails/app.rb:70:in `rodauth'
app/misc/rodauth_app.rb:11:in `block in <class:RodauthApp>'
roda (3.84.0) lib/roda.rb:522:in `_roda_run_main_route'
roda (3.84.0) lib/roda/plugins/middleware.rb:207:in `_roda_run_main_route'
roda (3.84.0) lib/roda/plugins/_before_hook.rb:27:in `_roda_run_main_route'
roda (3.84.0) lib/roda.rb:500:in `block in _roda_handle_main_route'
roda (3.84.0) lib/roda.rb:498:in `catch'
roda (3.84.0) lib/roda.rb:498:in `_roda_handle_main_route'
roda (3.84.0) lib/roda/plugins/error_handler.rb:88:in `_roda_handle_main_route'
roda (3.84.0) lib/roda.rb:384:in `block in base_rack_app_callable'
roda (3.84.0) lib/roda.rb:53:in `call'
roda (3.84.0) lib/roda/plugins/middleware.rb:159:in `block in call'
roda (3.84.0) lib/roda/plugins/middleware.rb:157:in `catch'
roda (3.84.0) lib/roda/plugins/middleware.rb:157:in `call'
rodauth-rails (1.15.0) lib/rodauth/rails/middleware.rb:18:in `block in call'
rodauth-rails (1.15.0) lib/rodauth/rails/middleware.rb:17:in `catch'
rodauth-rails (1.15.0) lib/rodauth/rails/middleware.rb:17:in `call'
rack (2.2.9) lib/rack/tempfile_reaper.rb:15:in `call'
rack (2.2.9) lib/rack/etag.rb:27:in `call'
rack (2.2.9) lib/rack/conditional_get.rb:40:in `call'
rack (2.2.9) lib/rack/head.rb:12:in `call'
actionpack (7.0.8.4) lib/action_dispatch/http/permissions_policy.rb:38:in `call'
actionpack (7.0.8.4) lib/action_dispatch/http/content_security_policy.rb:36:in `call'
rack (2.2.9) lib/rack/session/abstract/id.rb:266:in `context'
rack (2.2.9) lib/rack/session/abstract/id.rb:260:in `call'
actionpack (7.0.8.4) lib/action_dispatch/middleware/cookies.rb:704:in `call'
activerecord (7.0.8.4) lib/active_record/migration.rb:638:in `call'
actionpack (7.0.8.4) lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'
activesupport (7.0.8.4) lib/active_support/callbacks.rb:99:in `run_callbacks'
actionpack (7.0.8.4) lib/action_dispatch/middleware/callbacks.rb:26:in `call'
actionpack (7.0.8.4) lib/action_dispatch/middleware/executor.rb:14:in `call'
actionpack (7.0.8.4) lib/action_dispatch/middleware/actionable_exceptions.rb:17:in `call'
actionpack (7.0.8.4) lib/action_dispatch/middleware/debug_exceptions.rb:28:in `call'
web-console (4.2.1) lib/web_console/middleware.rb:132:in `call_app'
web-console (4.2.1) lib/web_console/middleware.rb:28:in `block in call'
web-console (4.2.1) lib/web_console/middleware.rb:17:in `catch'
web-console (4.2.1) lib/web_console/middleware.rb:17:in `call'
actionpack (7.0.8.4) lib/action_dispatch/middleware/show_exceptions.rb:29:in `call'
railties (7.0.8.4) lib/rails/rack/logger.rb:40:in `call_app'
railties (7.0.8.4) lib/rails/rack/logger.rb:25:in `block in call'
activesupport (7.0.8.4) lib/active_support/tagged_logging.rb:99:in `block in tagged'
activesupport (7.0.8.4) lib/active_support/tagged_logging.rb:37:in `tagged'
activesupport (7.0.8.4) lib/active_support/tagged_logging.rb:99:in `tagged'
railties (7.0.8.4) lib/rails/rack/logger.rb:25:in `call'
sprockets-rails (3.5.2) lib/sprockets/rails/quiet_assets.rb:17:in `call'
actionpack (7.0.8.4) lib/action_dispatch/middleware/remote_ip.rb:93:in `call'
actionpack (7.0.8.4) lib/action_dispatch/middleware/request_id.rb:26:in `call'
rack (2.2.9) lib/rack/method_override.rb:24:in `call'
rack (2.2.9) lib/rack/runtime.rb:22:in `call'
activesupport (7.0.8.4) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call'
actionpack (7.0.8.4) lib/action_dispatch/middleware/server_timing.rb:61:in `block in call'
actionpack (7.0.8.4) lib/action_dispatch/middleware/server_timing.rb:26:in `collect_events'
actionpack (7.0.8.4) lib/action_dispatch/middleware/server_timing.rb:60:in `call'
actionpack (7.0.8.4) lib/action_dispatch/middleware/executor.rb:14:in `call'
actionpack (7.0.8.4) lib/action_dispatch/middleware/static.rb:23:in `call'
rack (2.2.9) lib/rack/sendfile.rb:110:in `call'
actionpack (7.0.8.4) lib/action_dispatch/middleware/host_authorization.rb:138:in `call'
railties (7.0.8.4) lib/rails/engine.rb:530:in `call'
puma (6.4.2) lib/puma/configuration.rb:272:in `call'
puma (6.4.2) lib/puma/request.rb:100:in `block in handle_request'
puma (6.4.2) lib/puma/thread_pool.rb:378:in `with_force_shutdown'
puma (6.4.2) lib/puma/request.rb:99:in `handle_request'
puma (6.4.2) lib/puma/server.rb:464:in `process_client'
puma (6.4.2) lib/puma/server.rb:245:in `block in run'
puma (6.4.2) lib/puma/thread_pool.rb:155:in `block in spawn_thread'
Thanks, that was what I needed 👍🏻 It seems that sequel-activerecord_connection
doesn't handle adapters that don't support savepoints, like it seems to be the case with Oracle. I will work on a fix, and moving this issue to the appropriate repo.
I pushed a potential fix to the sequel-activerecord_connection
master branch, would you mind testing it out?
Still get the same error :(
backtrace now is:
stmt.c:265:in oci8lib_330.so
ruby-oci8-2.2.13-x64-mingw (ucrt) lib/oci8/cursor.rb:137:in `exec'
ruby-oci8-2.2.13-x64-mingw (ucrt) lib/oci8/oci8.rb:271:in `exec_internal'
ruby-oci8-2.2.13-x64-mingw (ucrt) lib/oci8/oci8.rb:262:in `exec'
activerecord-oracle_enhanced-adapter (7.0.3) lib/active_record/connection_adapters/oracle_enhanced/oci_connection.rb:445:in `block in exec'
activerecord-oracle_enhanced-adapter (7.0.3) lib/active_record/connection_adapters/oracle_enhanced/oci_connection.rb:433:in `with_retry'
activerecord-oracle_enhanced-adapter (7.0.3) lib/active_record/connection_adapters/oracle_enhanced/oci_connection.rb:445:in `exec'
sequel (5.84.0) lib/sequel/adapters/oracle.rb:93:in `block (2 levels) in _execute'
sequel (5.84.0) lib/sequel/database/logging.rb:38:in `log_connection_yield'
sequel-activerecord_connection (dd89ce9885d1) lib/sequel/extensions/activerecord_connection.rb:59:in `block in log_connection_yield'
activesupport (7.0.8.4) lib/active_support/notifications.rb:206:in `block in instrument'
activesupport (7.0.8.4) lib/active_support/notifications/instrumenter.rb:24:in `instrument'
activesupport (7.0.8.4) lib/active_support/notifications.rb:206:in `instrument'
sequel-activerecord_connection (dd89ce9885d1) lib/sequel/extensions/activerecord_connection.rb:197:in `activerecord_log'
sequel-activerecord_connection (dd89ce9885d1) lib/sequel/extensions/activerecord_connection.rb:59:in `log_connection_yield'
sequel (5.84.0) lib/sequel/adapters/oracle.rb:93:in `block in _execute'
sequel-activerecord_connection (dd89ce9885d1) lib/sequel/extensions/activerecord_connection/oracle.rb:13:in `block in synchronize'
sequel-activerecord_connection (dd89ce9885d1) lib/sequel/extensions/activerecord_connection.rb:49:in `block in synchronize'
sequel-activerecord_connection (dd89ce9885d1) lib/sequel/extensions/activerecord_connection.rb:178:in `block (2 levels) in activerecord_lock'
activesupport (7.0.8.4) lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
activesupport (7.0.8.4) lib/active_support/dependencies/interlock.rb:41:in `permit_concurrent_loads'
sequel-activerecord_connection (dd89ce9885d1) lib/sequel/extensions/activerecord_connection.rb:177:in `block in activerecord_lock'
activesupport (7.0.8.4) lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
activesupport (7.0.8.4) lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
activesupport (7.0.8.4) lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
activesupport (7.0.8.4) lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
sequel-activerecord_connection (dd89ce9885d1) lib/sequel/extensions/activerecord_connection.rb:176:in `activerecord_lock'
sequel-activerecord_connection (dd89ce9885d1) lib/sequel/extensions/activerecord_connection.rb:42:in `synchronize'
sequel-activerecord_connection (dd89ce9885d1) lib/sequel/extensions/activerecord_connection/oracle.rb:7:in `synchronize'
sequel (5.84.0) lib/sequel/adapters/oracle.rb:84:in `_execute'
sequel (5.84.0) lib/sequel/adapters/oracle.rb:73:in `execute_insert'
sequel (5.84.0) lib/sequel/dataset/actions.rb:1205:in `execute_insert'
sequel (5.84.0) lib/sequel/adapters/shared/oracle.rb:663:in `execute_insert'
sequel (5.84.0) lib/sequel/dataset/actions.rb:423:in `insert'
rodauth (2.36.0) lib/rodauth/features/create_account.rb:102:in `block in save_account'
sequel (5.84.0) lib/sequel/database/transactions.rb:235:in `block in transaction'
sequel-activerecord_connection (dd89ce9885d1) lib/sequel/extensions/activerecord_connection/oracle.rb:13:in `block in synchronize'
sequel-activerecord_connection (dd89ce9885d1) lib/sequel/extensions/activerecord_connection.rb:49:in `block in synchronize'
sequel-activerecord_connection (dd89ce9885d1) lib/sequel/extensions/activerecord_connection.rb:178:in `block (2 levels) in activerecord_lock'
activesupport (7.0.8.4) lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
activesupport (7.0.8.4) lib/active_support/dependencies/interlock.rb:41:in `permit_concurrent_loads'
sequel-activerecord_connection (dd89ce9885d1) lib/sequel/extensions/activerecord_connection.rb:177:in `block in activerecord_lock'
activesupport (7.0.8.4) lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
activesupport (7.0.8.4) lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
activesupport (7.0.8.4) lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
activesupport (7.0.8.4) lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
sequel-activerecord_connection (dd89ce9885d1) lib/sequel/extensions/activerecord_connection.rb:176:in `activerecord_lock'
sequel-activerecord_connection (dd89ce9885d1) lib/sequel/extensions/activerecord_connection.rb:42:in `synchronize'
sequel-activerecord_connection (dd89ce9885d1) lib/sequel/extensions/activerecord_connection/oracle.rb:7:in `synchronize'
sequel (5.84.0) lib/sequel/database/transactions.rb:197:in `transaction'
rodauth (2.36.0) lib/rodauth/features/base.rb:607:in `transaction'
rodauth (2.36.0) lib/rodauth/features/base.rb:828:in `raises_uniqueness_violation?'
rodauth (2.36.0) lib/rodauth/features/create_account.rb:102:in `save_account'
rodauth (2.36.0) lib/rodauth/features/create_account.rb:72:in `block (5 levels) in <module:Rodauth>'
sequel (5.84.0) lib/sequel/database/transactions.rb:264:in `_transaction'
sequel (5.84.0) lib/sequel/database/transactions.rb:239:in `block in transaction'
sequel-activerecord_connection (dd89ce9885d1) lib/sequel/extensions/activerecord_connection/oracle.rb:13:in `block in synchronize'
sequel-activerecord_connection (dd89ce9885d1) lib/sequel/extensions/activerecord_connection.rb:49:in `block in synchronize'
sequel-activerecord_connection (dd89ce9885d1) lib/sequel/extensions/activerecord_connection.rb:178:in `block (2 levels) in activerecord_lock'
activesupport (7.0.8.4) lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
activesupport (7.0.8.4) lib/active_support/dependencies/interlock.rb:41:in `permit_concurrent_loads'
sequel-activerecord_connection (dd89ce9885d1) lib/sequel/extensions/activerecord_connection.rb:177:in `block in activerecord_lock'
activesupport (7.0.8.4) lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
activesupport (7.0.8.4) lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
activesupport (7.0.8.4) lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
activesupport (7.0.8.4) lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
sequel-activerecord_connection (dd89ce9885d1) lib/sequel/extensions/activerecord_connection.rb:176:in `activerecord_lock'
sequel-activerecord_connection (dd89ce9885d1) lib/sequel/extensions/activerecord_connection.rb:42:in `synchronize'
sequel-activerecord_connection (dd89ce9885d1) lib/sequel/extensions/activerecord_connection/oracle.rb:7:in `synchronize'
sequel (5.84.0) lib/sequel/database/transactions.rb:197:in `transaction'
rodauth (2.36.0) lib/rodauth/features/base.rb:607:in `transaction'
rodauth (2.36.0) lib/rodauth/features/create_account.rb:70:in `block (4 levels) in <module:Rodauth>'
rodauth (2.36.0) lib/rodauth/features/base.rb:636:in `catch'
rodauth (2.36.0) lib/rodauth/features/base.rb:636:in `catch_error'
rodauth (2.36.0) lib/rodauth/features/create_account.rb:47:in `block (3 levels) in <module:Rodauth>'
roda (3.84.0) lib/roda/request.rb:536:in `always'
roda (3.84.0) lib/roda/plugins/pass.rb:32:in `block in always'
roda (3.84.0) lib/roda/plugins/pass.rb:32:in `catch'
roda (3.84.0) lib/roda/plugins/pass.rb:32:in `always'
roda (3.84.0) lib/roda/request.rb:527:in `_verb'
roda (3.84.0) lib/roda/request.rb:273:in `post'
rodauth (2.36.0) lib/rodauth/features/create_account.rb:42:in `block (2 levels) in <module:Rodauth>'
rodauth (2.36.0) lib/rodauth.rb:145:in `block (3 levels) in route'
rodauth (2.36.0) lib/rodauth/features/base.rb:538:in `_around_rodauth'
rodauth-rails (1.15.0) lib/rodauth/rails/feature/callbacks.rb:12:in `block in _around_rodauth'
rodauth-rails (1.15.0) lib/rodauth/rails/feature/callbacks.rb:21:in `block (3 levels) in rails_controller_around'
rodauth-rails (1.15.0) lib/rodauth/rails/feature/callbacks.rb:21:in `catch'
rodauth-rails (1.15.0) lib/rodauth/rails/feature/callbacks.rb:21:in `block (2 levels) in rails_controller_around'
rodauth-rails (1.15.0) lib/rodauth/rails/feature/csrf.rb:41:in `block in rails_controller_callbacks'
activesupport (7.0.8.4) lib/active_support/callbacks.rb:118:in `block in run_callbacks'
turbo-rails (2.0.6) lib/turbo-rails.rb:24:in `with_request_id'
turbo-rails (2.0.6) app/controllers/concerns/turbo/request_id_tracking.rb:10:in `turbo_tracking_request_id'
activesupport (7.0.8.4) lib/active_support/callbacks.rb:127:in `block in run_callbacks'
actiontext (7.0.8.4) lib/action_text/rendering.rb:20:in `with_renderer'
actiontext (7.0.8.4) lib/action_text/engine.rb:69:in `block (4 levels) in <class:Engine>'
activesupport (7.0.8.4) lib/active_support/callbacks.rb:127:in `instance_exec'
activesupport (7.0.8.4) lib/active_support/callbacks.rb:127:in `block in run_callbacks'
activesupport (7.0.8.4) lib/active_support/callbacks.rb:138:in `run_callbacks'
rodauth-rails (1.15.0) lib/rodauth/rails/feature/callbacks.rb:32:in `rails_controller_callbacks'
rodauth-rails (1.15.0) lib/rodauth/rails/feature/csrf.rb:38:in `rails_controller_callbacks'
rodauth-rails (1.15.0) lib/rodauth/rails/feature/callbacks.rb:20:in `block in rails_controller_around'
rodauth-rails (1.15.0) lib/rodauth/rails/feature/callbacks.rb:37:in `rails_controller_rescue'
rodauth-rails (1.15.0) lib/rodauth/rails/feature/callbacks.rb:19:in `rails_controller_around'
rodauth-rails (1.15.0) lib/rodauth/rails/feature/internal_request.rb:37:in `rails_controller_around'
rodauth-rails (1.15.0) lib/rodauth/rails/feature/callbacks.rb:12:in `_around_rodauth'
rodauth-rails (1.15.0) lib/rodauth/rails/feature/instrumentation.rb:10:in `block in _around_rodauth'
rodauth-rails (1.15.0) lib/rodauth/rails/feature/instrumentation.rb:50:in `block (2 levels) in rails_instrument_request'
rodauth-rails (1.15.0) lib/rodauth/rails/feature/instrumentation.rb:50:in `catch'
rodauth-rails (1.15.0) lib/rodauth/rails/feature/instrumentation.rb:50:in `block in rails_instrument_request'
activesupport (7.0.8.4) lib/active_support/notifications.rb:206:in `block in instrument'
activesupport (7.0.8.4) lib/active_support/notifications/instrumenter.rb:24:in `instrument'
activesupport (7.0.8.4) lib/active_support/notifications.rb:206:in `instrument'
rodauth-rails (1.15.0) lib/rodauth/rails/feature/instrumentation.rb:49:in `rails_instrument_request'
rodauth-rails (1.15.0) lib/rodauth/rails/feature/internal_request.rb:42:in `rails_instrument_request'
rodauth-rails (1.15.0) lib/rodauth/rails/feature/instrumentation.rb:10:in `_around_rodauth'
rodauth (2.36.0) lib/rodauth.rb:143:in `block (2 levels) in route'
roda (3.84.0) lib/roda/request.rb:603:in `if_match'
roda (3.84.0) lib/roda/plugins/pass.rb:38:in `block in if_match'
roda (3.84.0) lib/roda/plugins/pass.rb:38:in `catch'
roda (3.84.0) lib/roda/plugins/pass.rb:38:in `if_match'
roda (3.84.0) lib/roda/request.rb:199:in `is'
rodauth (2.36.0) lib/rodauth.rb:140:in `block in route'
rodauth (2.36.0) lib/rodauth/features/base.rb:169:in `route!'
rodauth (2.36.0) lib/rodauth.rb:444:in `rodauth'
rodauth-rails (1.15.0) lib/rodauth/rails/app.rb:70:in `rodauth'
app/misc/rodauth_app.rb:11:in `block in <class:RodauthApp>'
roda (3.84.0) lib/roda.rb:522:in `_roda_run_main_route'
roda (3.84.0) lib/roda/plugins/middleware.rb:207:in `_roda_run_main_route'
roda (3.84.0) lib/roda/plugins/_before_hook.rb:27:in `_roda_run_main_route'
roda (3.84.0) lib/roda.rb:500:in `block in _roda_handle_main_route'
roda (3.84.0) lib/roda.rb:498:in `catch'
roda (3.84.0) lib/roda.rb:498:in `_roda_handle_main_route'
roda (3.84.0) lib/roda/plugins/error_handler.rb:88:in `_roda_handle_main_route'
roda (3.84.0) lib/roda.rb:384:in `block in base_rack_app_callable'
roda (3.84.0) lib/roda.rb:53:in `call'
roda (3.84.0) lib/roda/plugins/middleware.rb:159:in `block in call'
roda (3.84.0) lib/roda/plugins/middleware.rb:157:in `catch'
roda (3.84.0) lib/roda/plugins/middleware.rb:157:in `call'
rodauth-rails (1.15.0) lib/rodauth/rails/middleware.rb:18:in `block in call'
rodauth-rails (1.15.0) lib/rodauth/rails/middleware.rb:17:in `catch'
rodauth-rails (1.15.0) lib/rodauth/rails/middleware.rb:17:in `call'
rack (2.2.9) lib/rack/tempfile_reaper.rb:15:in `call'
rack (2.2.9) lib/rack/etag.rb:27:in `call'
rack (2.2.9) lib/rack/conditional_get.rb:40:in `call'
rack (2.2.9) lib/rack/head.rb:12:in `call'
actionpack (7.0.8.4) lib/action_dispatch/http/permissions_policy.rb:38:in `call'
actionpack (7.0.8.4) lib/action_dispatch/http/content_security_policy.rb:36:in `call'
rack (2.2.9) lib/rack/session/abstract/id.rb:266:in `context'
rack (2.2.9) lib/rack/session/abstract/id.rb:260:in `call'
actionpack (7.0.8.4) lib/action_dispatch/middleware/cookies.rb:704:in `call'
activerecord (7.0.8.4) lib/active_record/migration.rb:638:in `call'
actionpack (7.0.8.4) lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'
activesupport (7.0.8.4) lib/active_support/callbacks.rb:99:in `run_callbacks'
actionpack (7.0.8.4) lib/action_dispatch/middleware/callbacks.rb:26:in `call'
actionpack (7.0.8.4) lib/action_dispatch/middleware/executor.rb:14:in `call'
actionpack (7.0.8.4) lib/action_dispatch/middleware/actionable_exceptions.rb:17:in `call'
actionpack (7.0.8.4) lib/action_dispatch/middleware/debug_exceptions.rb:28:in `call'
web-console (4.2.1) lib/web_console/middleware.rb:132:in `call_app'
web-console (4.2.1) lib/web_console/middleware.rb:28:in `block in call'
web-console (4.2.1) lib/web_console/middleware.rb:17:in `catch'
web-console (4.2.1) lib/web_console/middleware.rb:17:in `call'
actionpack (7.0.8.4) lib/action_dispatch/middleware/show_exceptions.rb:29:in `call'
railties (7.0.8.4) lib/rails/rack/logger.rb:40:in `call_app'
railties (7.0.8.4) lib/rails/rack/logger.rb:25:in `block in call'
activesupport (7.0.8.4) lib/active_support/tagged_logging.rb:99:in `block in tagged'
activesupport (7.0.8.4) lib/active_support/tagged_logging.rb:37:in `tagged'
activesupport (7.0.8.4) lib/active_support/tagged_logging.rb:99:in `tagged'
railties (7.0.8.4) lib/rails/rack/logger.rb:25:in `call'
sprockets-rails (3.5.2) lib/sprockets/rails/quiet_assets.rb:17:in `call'
actionpack (7.0.8.4) lib/action_dispatch/middleware/remote_ip.rb:93:in `call'
actionpack (7.0.8.4) lib/action_dispatch/middleware/request_id.rb:26:in `call'
rack (2.2.9) lib/rack/method_override.rb:24:in `call'
rack (2.2.9) lib/rack/runtime.rb:22:in `call'
activesupport (7.0.8.4) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call'
actionpack (7.0.8.4) lib/action_dispatch/middleware/server_timing.rb:61:in `block in call'
actionpack (7.0.8.4) lib/action_dispatch/middleware/server_timing.rb:26:in `collect_events'
actionpack (7.0.8.4) lib/action_dispatch/middleware/server_timing.rb:60:in `call'
actionpack (7.0.8.4) lib/action_dispatch/middleware/executor.rb:14:in `call'
actionpack (7.0.8.4) lib/action_dispatch/middleware/static.rb:23:in `call'
rack (2.2.9) lib/rack/sendfile.rb:110:in `call'
actionpack (7.0.8.4) lib/action_dispatch/middleware/host_authorization.rb:138:in `call'
railties (7.0.8.4) lib/rails/engine.rb:530:in `call'
puma (6.4.2) lib/puma/configuration.rb:272:in `call'
puma (6.4.2) lib/puma/request.rb:100:in `block in handle_request'
puma (6.4.2) lib/puma/thread_pool.rb:378:in `with_force_shutdown'
puma (6.4.2) lib/puma/request.rb:99:in `handle_request'
puma (6.4.2) lib/puma/server.rb:464:in `process_client'
puma (6.4.2) lib/puma/server.rb:245:in `block in run'
puma (6.4.2) lib/puma/thread_pool.rb:155:in `block in spawn_thread'
The error is now in a different place, is the error message/class different?
Oh sorry. No, same place but different error:
Sequel::NotNullConstraintViolation (OCIError: ORA-01400: cannot insert NULL into ("EINSATZPLANUNG"."USERS"."ID")):
app/misc/rodauth_app.rb:11:in `block in
The r.rodauth
call in the Rodauth app internally handles all Rodauth endpoints, so most errors will come from that line 😉
What does the attempted INSERT
statement look like? It appears that Oracle doesn't see the users.id
column as auto-incrementing that it should auto-fill on insert.
Hmm, creating a user from the rails console works.
With rodauth the statement is:
INSERT INTO "USERS" ("EMAIL", "STATUS", "PASSWORD_HASH") VALUES ('katja.graefenhain@lu.ch', 1, '$argon2id$v=19$m=65536,t=2,p=1$Cc2kbbk8sI2sNUy47MQXLQ$HM5Zg/mTNFaJYK9SHDY4ZikOi51r1eHrz3ud/InyIpk')
Seems like id, created_at, updated_at are missing.
The id
column is expected to be missing, since it's supposed to be an auto-incrementing column that the database populates. Is that not the case for your database?
If your application needs to populate the ID column, you can do that before Rodauth saves the account:
before_create_account do
account[:id] = SecureRandom.uuid # for example
account[:created_at] = Time.now
account[:updated_at] = Time.now
end
Timestamps need to be set explicitly as well, because those normally get set on the Active Record model level, but Rodauth uses Sequel which skips Active Record models (it only uses Active Record's DB connection).
The id column should be an auto-incrementing column from the database. The table was created with the rodauth rails migration. There also is a USERS_SEQ on the database.
The only thing we changed is renaming accounts to users in rodauth_main.rb:
# Change prefix of table and foreign key column names from default "account" accounts_table :users verify_account_table :user_verification_keys verify_login_change_table :user_login_change_keys reset_password_table :user_password_reset_keys remember_table :user_remember_keys
Any idea then why is your database complaining that users.id
is NULL
on insertion? Rodauth behaves as expected here, it leaves the id
column unset, so everything should work then, right? Does the user creation work when perfoming it through the Active Record model? If yes, does AR generate a different INSERT statement?
I don't know how to get the SQL statement when inserting a user with AR... (when creating a user in the console AR is used, right?)
However, since creation also does not work in SQL developer: how is the sequence connected with the table? Maybe a trigger is needed??
I don't know, I have zero experience with the Oracle database. I will close this issue, because the sequel-activerecord_connection
bug has been fixed (I will cut a release shortly), it appears unrelated to argon2, and rodauth/rodauth-rails aren't doing anything unexpected.
Thanks anyway! When adding database triggers inserting works. However I get an error "invalid email" (even if the record is saved to the database) from rodauth. Do you think that's a rodauth bug? No error, just a validation message..
Not sure what's up with that, I suggest you open a new issue with the necessary information (SQL logs, backtrace if applicable, email value etc).
I use rodauth-rails with argon2. When trying to create a new user I get the folloing error:
Versions: "rails", ~> 7.0, >= 7.0.8.4 "activerecord-oracle_enhanced-adapter", ~> 7.0, >= 7.0.3 "rodauth-rails", ~> 1.15 "argon2", ~> 2.3 "sequel-activerecord_connection", >= 1.4.2