refinery / refinerycms-authentication-devise

Devise based authentication extension for Refinery CMS
MIT License
17 stars 61 forks source link

Still struggling with migrating a pre-refinery-authentication-devise application #11

Closed Atastor closed 6 years ago

Atastor commented 9 years ago

Hi, I am still struggling with migrating my pre-refinery-authentication-devise application. I described initial trouble in https://github.com/refinery/refinerycms-authentication-devise/issues/6

My current problem ist the handling of the existing refinery tables, which of course have the old names, i.e. former refinery_roles now is expected to be refinery_authentication_devise_roles, former refinery_roles_users now is expected to be refinery_authentication_devise_roles_users and so on.

My current attempt is, to tell each and every refinery model in question that it should use a table with the old name. Looking for an in-rails solution I am trying the following:

This gets rid of the initial rails/refinerycms complaints for the first model popping up, aka Refinery::Authentication::Devise::Role; the decorator refinery_authentication_devise_role_decorator.rb contains the following code:

Refinery::Authentication::Devise::Role.class_eval do
  self.table_name = "refinery_roles"
end

And, as stated, this lets me carry on with the second refinerycms model, namely Refinery::Authentication::Devise::RolesUsers; the decorator refinery_authentication_devise_roles_users_decorator.rb contains the following code:

Refinery::Authentication::Devise::RolesUsers.class_eval do
  self.table_name = "refinery_roles_users"
end

Then, accessing the login-page fails with

Started GET "/refb-development/login" for ::1 at 2015-08-28 11:32:40 +0200 Processing by Refinery::Authentication::Devise::SessionsController#new as HTML Parameters: {"locale"=>:de} (0.4ms) SELECT COUNT(_) FROM "refinery_images" INNER JOIN "refinery_image_translations" ON "refinery_image_translations"."refinery_image_id" = "refinery_images"."id" WHERE "refinery_image_translations"."image_alt" = 'ad-main' AND "refinery_image_translations"."locale" = ? [["locale", "de"]] Refinery::Authentication::Devise::Role Load (0.1ms) SELECT "refineryroles". FROM "refinery_roles" WHERE "refinery_roles"."title" = ? ORDER BY "refinery_roles"."id" ASC LIMIT 1 [["title", "Refinery"]] Completed 500 Internal Server Error in 5ms (ActiveRecord: 0.5ms)

ActiveRecord::StatementInvalid (Could not find table 'refinery_authentication_devise_roles_users'): activerecord (4.2.4) lib/active_record/connection_adapters/sqlite3_adapter.rb:511:in table_structure' activerecord (4.2.4) lib/active_record/connection_adapters/sqlite3_adapter.rb:385:incolumns' activerecord (4.2.4) lib/active_record/connection_adapters/schema_cache.rb:43:in columns' activerecord (4.2.4) lib/active_record/connection_adapters/schema_cache.rb:49:incolumns_hash' activerecord (4.2.4) lib/active_record/associations/association_scope.rb:85:in column_for' activerecord (4.2.4) lib/active_record/associations/association_scope.rb:94:inbind' activerecord (4.2.4) lib/active_record/associations/association_scope.rb:103:in last_chain_scope' activerecord (4.2.4) lib/active_record/associations/association_scope.rb:139:inadd_constraints' activerecord (4.2.4) lib/active_record/associations/association_scope.rb:39:in scope' activerecord (4.2.4) lib/active_record/associations/association_scope.rb:5:inscope' activerecord (4.2.4) lib/active_record/associations/association.rb:97:in association_scope' /Users/michaelp/.rvmruby (2.2.3) bundler/gems/active_scaffold-5d513dc328a4/lib/active_scaffold/tableless.rb:45:inassociation_scope_with_tableless' activerecord (4.2.4) lib/active_record/associations/association.rb:86:in scope' activerecord (4.2.4) lib/active_record/associations/collection_association.rb:423:inscope' activerecord (4.2.4) lib/active_record/associations/collection_proxy.rb:37:in initialize' activerecord (4.2.4) lib/active_record/relation/delegation.rb:106:innew' activerecord (4.2.4) lib/active_record/relation/delegation.rb:106:in create' activerecord (4.2.4) lib/active_record/associations/collection_association.rb:41:inreader' activerecord (4.2.4) lib/active_record/associations/builder/association.rb:115:in users' refinerycms-authentication-devise (1.0.4) app/decorators/controllers/action_controller_base_decorator.rb:10:inrefinery_users_exist?' refinerycms-authentication-devise (1.0.4) app/controllers/refinery/authentication/devise/sessions_controller.rb:32:in force_signup_when_no_users!' activesupport (4.2.4) lib/active_support/callbacks.rb:432:inblock in make_lambda' activesupport (4.2.4) lib/active_support/callbacks.rb:164:in call' activesupport (4.2.4) lib/active_support/callbacks.rb:164:inblock in halting' activesupport (4.2.4) lib/active_support/callbacks.rb:504:in call' activesupport (4.2.4) lib/active_support/callbacks.rb:504:inblock in call' activesupport (4.2.4) lib/active_support/callbacks.rb:504:in each' activesupport (4.2.4) lib/active_support/callbacks.rb:504:incall' activesupport (4.2.4) lib/active_support/callbacks.rb:92:in __run_callbacks__' activesupport (4.2.4) lib/active_support/callbacks.rb:778:in_run_process_action_callbacks' activesupport (4.2.4) lib/active_support/callbacks.rb:81:in run_callbacks' actionpack (4.2.4) lib/abstract_controller/callbacks.rb:19:inprocess_action' actionpack (4.2.4) lib/action_controller/metal/rescue.rb:29:in process_action' actionpack (4.2.4) lib/action_controller/metal/instrumentation.rb:32:inblock in process_action' activesupport (4.2.4) lib/active_support/notifications.rb:164:in block in instrument' activesupport (4.2.4) lib/active_support/notifications/instrumenter.rb:20:ininstrument' activesupport (4.2.4) lib/active_support/notifications.rb:164:in instrument' actionpack (4.2.4) lib/action_controller/metal/instrumentation.rb:30:inprocess_action' actionpack (4.2.4) lib/action_controller/metal/params_wrapper.rb:250:in process_action' activerecord (4.2.4) lib/active_record/railties/controller_runtime.rb:18:inprocess_action' actionpack (4.2.4) lib/abstract_controller/base.rb:137:in process' actionview (4.2.4) lib/action_view/rendering.rb:30:inprocess' actionpack (4.2.4) lib/action_controller/metal.rb:196:in dispatch' actionpack (4.2.4) lib/action_controller/metal/rack_delegation.rb:13:indispatch' actionpack (4.2.4) lib/action_controller/metal.rb:237:in block in action' actionpack (4.2.4) lib/action_dispatch/routing/route_set.rb:76:incall' actionpack (4.2.4) lib/action_dispatch/routing/route_set.rb:76:in dispatch' actionpack (4.2.4) lib/action_dispatch/routing/route_set.rb:45:inserve' actionpack (4.2.4) lib/action_dispatch/routing/mapper.rb:49:in serve' actionpack (4.2.4) lib/action_dispatch/journey/router.rb:43:inblock in serve' actionpack (4.2.4) lib/action_dispatch/journey/router.rb:30:in each' actionpack (4.2.4) lib/action_dispatch/journey/router.rb:30:inserve' actionpack (4.2.4) lib/action_dispatch/routing/route_set.rb:821:in call' railties (4.2.4) lib/rails/engine.rb:518:incall' railties (4.2.4) lib/rails/railtie.rb:194:in public_send' railties (4.2.4) lib/rails/railtie.rb:194:inmethod_missing' actionpack (4.2.4) lib/action_dispatch/routing/mapper.rb:51:in serve' actionpack (4.2.4) lib/action_dispatch/journey/router.rb:43:inblock in serve' actionpack (4.2.4) lib/action_dispatch/journey/router.rb:30:in each' actionpack (4.2.4) lib/action_dispatch/journey/router.rb:30:inserve' actionpack (4.2.4) lib/action_dispatch/routing/route_set.rb:821:in call' dragonfly (1.0.10) lib/dragonfly/middleware.rb:14:incall' dragonfly (1.0.10) lib/dragonfly/middleware.rb:14:in call' warden (1.2.3) lib/warden/manager.rb:35:inblock in call' warden (1.2.3) lib/warden/manager.rb:34:in catch' warden (1.2.3) lib/warden/manager.rb:34:incall' rack (1.6.4) lib/rack/etag.rb:24:in call' rack (1.6.4) lib/rack/conditionalget.rb:25:incall' rack (1.6.4) lib/rack/head.rb:13:in call' actionpack (4.2.4) lib/action_dispatch/middleware/params_parser.rb:27:incall' actionpack (4.2.4) lib/action_dispatch/middleware/flash.rb:260:in call' rack (1.6.4) lib/rack/session/abstract/id.rb:225:incontext' rack (1.6.4) lib/rack/session/abstract/id.rb:220:in call' actionpack (4.2.4) lib/action_dispatch/middleware/cookies.rb:560:incall' activerecord (4.2.4) lib/active_record/query_cache.rb:36:in call' activerecord (4.2.4) lib/active_record/connection_adapters/abstract/connection_pool.rb:653:incall' activerecord (4.2.4) lib/active_record/migration.rb:377:in call' actionpack (4.2.4) lib/action_dispatch/middleware/callbacks.rb:29:inblock in call' activesupport (4.2.4) lib/active_support/callbacks.rb:88:in __run_callbacks__' activesupport (4.2.4) lib/active_support/callbacks.rb:778:in_run_call_callbacks' activesupport (4.2.4) lib/active_support/callbacks.rb:81:inrun_callbacks' actionpack (4.2.4) lib/action_dispatch/middleware/callbacks.rb:27:incall' actionpack (4.2.4) lib/action_dispatch/middleware/reloader.rb:73:incall' actionpack (4.2.4) lib/action_dispatch/middleware/remote_ip.rb:78:incall' actionpack (4.2.4) lib/action_dispatch/middleware/debug_exceptions.rb:17:incall' actionpack (4.2.4) lib/action_dispatch/middleware/show_exceptions.rb:30:incall' railties (4.2.4) lib/rails/rack/logger.rb:38:incall_app' railties (4.2.4) lib/rails/rack/logger.rb:20:inblock in call' activesupport (4.2.4) lib/active_support/tagged_logging.rb:68:inblock in tagged' activesupport (4.2.4) lib/active_support/tagged_logging.rb:26:intagged' activesupport (4.2.4) lib/active_support/tagged_logging.rb:68:intagged' railties (4.2.4) lib/rails/rack/logger.rb:20:incall' quiet_assets (1.1.0) lib/quiet_assets.rb:27:incall_with_quiet_assets' request_store (1.2.0) lib/request_store/middleware.rb:8:incall' actionpack (4.2.4) lib/action_dispatch/middleware/request_id.rb:21:incall' rack (1.6.4) lib/rack/methodoverride.rb:22:incall' rack (1.6.4) lib/rack/runtime.rb:18:incall' activesupport (4.2.4) lib/active_support/cache/strategy/local_cache_middleware.rb:28:incall' dragonfly (1.0.10) lib/dragonfly/cookie_monster.rb:9:incall' rack (1.6.4) lib/rack/lock.rb:17:incall' actionpack (4.2.4) lib/action_dispatch/middleware/static.rb:116:incall' rack (1.6.4) lib/rack/sendfile.rb:113:incall' railties (4.2.4) lib/rails/engine.rb:518:incall' railties (4.2.4) lib/rails/application.rb:165:incall' rack (1.6.4) lib/rack/lock.rb:17:incall' rack (1.6.4) lib/rack/content_length.rb:15:incall' rack (1.6.4) lib/rack/handler/webrick.rb:88:inservice' /Users/michaelp/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/webrick/httpserver.rb:138:inservice' /Users/michaelp/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/webrick/httpserver.rb:94:inrun' /Users/michaelp/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/webrick/server.rb:294:inblock in start_thread'

I will gladly receive any suggestions about

Thanks a lot in advance Michael

Atastor commented 9 years ago

Ok, I got a solution, wrapping it up and will post it then with a pull request; won't be before Sunday evening, though.

I added configurable options describing the tables used for Roles and RolesUsers to refinerycms-authentication-devise