jemcode / rails_admin_history_rollback

History rollback for rails_admin with paper_trail
https://rubygems.org/gems/rails_admin_history_rollback
MIT License
41 stars 27 forks source link

Compatibility Issue with rails_admin 3.0.0.rc2 #27

Closed abepark01 closed 2 years ago

abepark01 commented 2 years ago

Hello!

I filed an issue in the rails_admin gem, but I get a RouteNotFound error when I try to initialize rail_admin with the rails_admin_history_rollback gem.

https://github.com/railsadminteam/rails_admin/issues/3474

I can view the admin dashboard when I take out rails_admin_history_rollback gem-related code.

config.actions do
    history_index do
      only PAPER_TRAIL_AUDIT_MODELS
    end
    history_show do
      only PAPER_TRAIL_AUDIT_MODELS
    end
  end

Here is a stripped-down version of my routes.rb. I also just grabbed the latest commit 50d34c9d1c888d2cfce6ea5bcc3e9fd25022ed57.

I still get the route error.

Gemfile

gem 'rails', '~> 7.0', '>= 7.0.2.2'
gem 'rails_admin', github: 'railsadminteam/rails_admin', ref: '50d34c9d1c888d2cfce6ea5bcc3e9fd25022ed57'
gem 'rails_admin_history_rollback', '~> 1.0', '>= 1.0.3'
gem 'rails_admin_import', '~> 3.0'

config/routes.rb

# frozen_string_literal: true

require 'sidekiq/web'
require 'sidekiq/cron/web'

Rails.application.routes.draw do
  mount StripeEvent::Engine, at: '/stripe/webhooks'
  devise_for :admins
  devise_for :users, controllers: {
    registrations: 'users/registrations',
    confirmations: 'users/confirmations',
    passwords: 'users/passwords',
    sessions: 'users/sessions',
    invitations: 'users/invitations',
    omniauth_callbacks: 'oauth'
  }
  mount RailsAdmin::Engine => '/admin', as: 'rails_admin'

  authenticate :admin do
    mount Sidekiq::Web => '/sidekiq'
  end

  match '/404', to: 'errors#not_found', via: :all
  match '/500', to: 'errors#internal_server_error', via: :all

  get '/signout' => 'oauth#destroy', :as => :signout
  get '/signin' => 'oauth#new', :as => :signin
end

config/initializers/rails_admin.rb

PAPER_TRAIL_AUDIT_MODELS = [
  'SponsorshipPackageProduct',
  'SponsorshipPackage',
  'SponsorshipProduct',
  'SubscriptionCustomerSource',
  'SubscriptionCustomer',
  'SubscriptionInvoice',
  'SubscriptionPrice',
  'Subscription',
].freeze

RailsAdmin.config do |config|
  ### Popular gems integration

  ## == Devise ==
  config.authenticate_with do
    warden.authenticate! scope: :admin
  end

  config.current_user_method(&:current_admin)

  config.actions do
    dashboard                     # mandatory
    index                         # mandatory
    new
    export
    bulk_delete
    show
    edit
    delete
    show_in_app
    import
    ## With an audit adapter, you can add:
    # history_index
    # history_show
  end

  config.configure_with(:import) do |config|
    config.logging = true
  end

  config.actions do
    history_index do
      only PAPER_TRAIL_AUDIT_MODELS
    end
    history_show do
      only PAPER_TRAIL_AUDIT_MODELS
    end
  end

  PAPER_TRAIL_AUDIT_MODELS.each do |model|
    config.audit_with :paper_trail, model, 'PaperTrail::Version'
  end
end
rails routes output ``` Prefix Verb URI Pattern Controller#Action stripe_event /stripe/webhooks StripeEvent::Engine new_admin_session GET /admins/sign_in(.:format) devise/sessions#new admin_session POST /admins/sign_in(.:format) devise/sessions#create destroy_admin_session DELETE /admins/sign_out(.:format) devise/sessions#destroy new_admin_password GET /admins/password/new(.:format) devise/passwords#new edit_admin_password GET /admins/password/edit(.:format) devise/passwords#edit admin_password PATCH /admins/password(.:format) devise/passwords#update PUT /admins/password(.:format) devise/passwords#update POST /admins/password(.:format) devise/passwords#create new_user_session GET /users/sign_in(.:format) users/sessions#new user_session POST /users/sign_in(.:format) users/sessions#create destroy_user_session DELETE /users/sign_out(.:format) users/sessions#destroy user_facebook_omniauth_authorize GET|POST /users/auth/facebook(.:format) oauth#passthru user_facebook_omniauth_callback GET|POST /users/auth/facebook/callback(.:format) oauth#facebook new_user_password GET /users/password/new(.:format) users/passwords#new edit_user_password GET /users/password/edit(.:format) users/passwords#edit user_password PATCH /users/password(.:format) users/passwords#update PUT /users/password(.:format) users/passwords#update POST /users/password(.:format) users/passwords#create cancel_user_registration GET /users/cancel(.:format) users/registrations#cancel new_user_registration GET /users/sign_up(.:format) users/registrations#new edit_user_registration GET /users/edit(.:format) users/registrations#edit user_registration PATCH /users(.:format) users/registrations#update PUT /users(.:format) users/registrations#update DELETE /users(.:format) users/registrations#destroy POST /users(.:format) users/registrations#create new_user_confirmation GET /users/confirmation/new(.:format) users/confirmations#new user_confirmation GET /users/confirmation(.:format) users/confirmations#show POST /users/confirmation(.:format) users/confirmations#create accept_user_invitation GET /users/invitation/accept(.:format) users/invitations#edit remove_user_invitation GET /users/invitation/remove(.:format) users/invitations#destroy new_user_invitation GET /users/invitation/new(.:format) users/invitations#new user_invitation PATCH /users/invitation(.:format) users/invitations#update PUT /users/invitation(.:format) users/invitations#update POST /users/invitation(.:format) users/invitations#create rails_admin /admin RailsAdmin::Engine sidekiq_web /sidekiq Sidekiq::Web /404(.:format) errors#not_found /500(.:format) errors#internal_server_error signout GET /signout(.:format) oauth#destroy signin GET /signin(.:format) oauth#new turbo_recede_historical_location GET /recede_historical_location(.:format) turbo/native/navigation#recede turbo_resume_historical_location GET /resume_historical_location(.:format) turbo/native/navigation#resume turbo_refresh_historical_location GET /refresh_historical_location(.:format) turbo/native/navigation#refresh home GET /home(.:format) redirect(301, /) root GET / high_voltage/pages#show {:id=>"home"} rails_postmark_inbound_emails POST /rails/action_mailbox/postmark/inbound_emails(.:format) action_mailbox/ingresses/postmark/inbound_emails#create rails_relay_inbound_emails POST /rails/action_mailbox/relay/inbound_emails(.:format) action_mailbox/ingresses/relay/inbound_emails#create rails_sendgrid_inbound_emails POST /rails/action_mailbox/sendgrid/inbound_emails(.:format) action_mailbox/ingresses/sendgrid/inbound_emails#create rails_mandrill_inbound_health_check GET /rails/action_mailbox/mandrill/inbound_emails(.:format) action_mailbox/ingresses/mandrill/inbound_emails#health_check rails_mandrill_inbound_emails POST /rails/action_mailbox/mandrill/inbound_emails(.:format) action_mailbox/ingresses/mandrill/inbound_emails#create rails_mailgun_inbound_emails POST /rails/action_mailbox/mailgun/inbound_emails/mime(.:format) action_mailbox/ingresses/mailgun/inbound_emails#create rails_conductor_inbound_emails GET /rails/conductor/action_mailbox/inbound_emails(.:format) rails/conductor/action_mailbox/inbound_emails#index POST /rails/conductor/action_mailbox/inbound_emails(.:format) rails/conductor/action_mailbox/inbound_emails#create new_rails_conductor_inbound_email GET /rails/conductor/action_mailbox/inbound_emails/new(.:format) rails/conductor/action_mailbox/inbound_emails#new edit_rails_conductor_inbound_email GET /rails/conductor/action_mailbox/inbound_emails/:id/edit(.:format) rails/conductor/action_mailbox/inbound_emails#edit rails_conductor_inbound_email GET /rails/conductor/action_mailbox/inbound_emails/:id(.:format) rails/conductor/action_mailbox/inbound_emails#show PATCH /rails/conductor/action_mailbox/inbound_emails/:id(.:format) rails/conductor/action_mailbox/inbound_emails#update PUT /rails/conductor/action_mailbox/inbound_emails/:id(.:format) rails/conductor/action_mailbox/inbound_emails#update DELETE /rails/conductor/action_mailbox/inbound_emails/:id(.:format) rails/conductor/action_mailbox/inbound_emails#destroy new_rails_conductor_inbound_email_source GET /rails/conductor/action_mailbox/inbound_emails/sources/new(.:format) rails/conductor/action_mailbox/inbound_emails/sources#new rails_conductor_inbound_email_sources POST /rails/conductor/action_mailbox/inbound_emails/sources(.:format) rails/conductor/action_mailbox/inbound_emails/sources#create rails_conductor_inbound_email_reroute POST /rails/conductor/action_mailbox/:inbound_email_id/reroute(.:format) rails/conductor/action_mailbox/reroutes#create rails_conductor_inbound_email_incinerate POST /rails/conductor/action_mailbox/:inbound_email_id/incinerate(.:format) rails/conductor/action_mailbox/incinerates#create rails_service_blob GET /rails/active_storage/blobs/redirect/:signed_id/*filename(.:format) active_storage/blobs/redirect#show rails_service_blob_proxy GET /rails/active_storage/blobs/proxy/:signed_id/*filename(.:format) active_storage/blobs/proxy#show GET /rails/active_storage/blobs/:signed_id/*filename(.:format) active_storage/blobs/redirect#show rails_blob_representation GET /rails/active_storage/representations/redirect/:signed_blob_id/:variation_key/*filename(.:format) active_storage/representations/redirect#show rails_blob_representation_proxy GET /rails/active_storage/representations/proxy/:signed_blob_id/:variation_key/*filename(.:format) active_storage/representations/proxy#show GET /rails/active_storage/representations/:signed_blob_id/:variation_key/*filename(.:format) active_storage/representations/redirect#show rails_disk_service GET /rails/active_storage/disk/:encoded_key/*filename(.:format) active_storage/disk#show update_rails_disk_service PUT /rails/active_storage/disk/:encoded_token(.:format) active_storage/disk#update rails_direct_uploads POST /rails/active_storage/direct_uploads(.:format) active_storage/direct_uploads#create Routes for StripeEvent::Engine: root POST / stripe_event/webhook#event Routes for RailsAdmin::Engine: history_index GET|PUT /:model_name/history(.:format) rails_admin/main#history_index bulk_action POST /:model_name/bulk_action(.:format) rails_admin/main#bulk_action history_show GET /:model_name/:id/history(.:format) rails_admin/main#history_show ```
Fullstack Trace ``` [actionpack (7.0.2.2) lib/action_dispatch/middleware/debug_exceptions.rb:32:in `call'](http://localhost:3000/admin#) [web-console (4.2.0) lib/web_console/middleware.rb:132:in `call_app'](http://localhost:3000/admin#) [web-console (4.2.0) lib/web_console/middleware.rb:28:in `block in call'](http://localhost:3000/admin#) [web-console (4.2.0) lib/web_console/middleware.rb:17:in `catch'](http://localhost:3000/admin#) [web-console (4.2.0) lib/web_console/middleware.rb:17:in `call'](http://localhost:3000/admin#) [sentry-ruby-core (5.1.0) lib/sentry/rack/capture_exceptions.rb:25:in `block in call'](http://localhost:3000/admin#) [sentry-ruby-core (5.1.0) lib/sentry/hub.rb:58:in `with_scope'](http://localhost:3000/admin#) [sentry-ruby-core (5.1.0) lib/sentry-ruby.rb:308:in `with_scope'](http://localhost:3000/admin#) [sentry-ruby-core (5.1.0) lib/sentry/rack/capture_exceptions.rb:16:in `call'](http://localhost:3000/admin#) [actionpack (7.0.2.2) lib/action_dispatch/middleware/show_exceptions.rb:26:in `call'](http://localhost:3000/admin#) [railties (7.0.2.2) lib/rails/rack/logger.rb:36:in `call_app'](http://localhost:3000/admin#) [railties (7.0.2.2) lib/rails/rack/logger.rb:25:in `block in call'](http://localhost:3000/admin#) [activesupport (7.0.2.2) lib/active_support/tagged_logging.rb:99:in `block in tagged'](http://localhost:3000/admin#) [activesupport (7.0.2.2) lib/active_support/tagged_logging.rb:37:in `tagged'](http://localhost:3000/admin#) [activesupport (7.0.2.2) lib/active_support/tagged_logging.rb:99:in `tagged'](http://localhost:3000/admin#) [railties (7.0.2.2) lib/rails/rack/logger.rb:25:in `call'](http://localhost:3000/admin#) [sprockets-rails (3.4.2) lib/sprockets/rails/quiet_assets.rb:13:in `call'](http://localhost:3000/admin#) [actionpack (7.0.2.2) lib/action_dispatch/middleware/remote_ip.rb:93:in `call'](http://localhost:3000/admin#) [request_store (1.5.1) lib/request_store/middleware.rb:19:in `call'](http://localhost:3000/admin#) [actionpack (7.0.2.2) lib/action_dispatch/middleware/request_id.rb:26:in `call'](http://localhost:3000/admin#) [rack (2.2.3) lib/rack/method_override.rb:24:in `call'](http://localhost:3000/admin#) [rack (2.2.3) lib/rack/runtime.rb:22:in `call'](http://localhost:3000/admin#) [activesupport (7.0.2.2) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call'](http://localhost:3000/admin#) [actionpack (7.0.2.2) lib/action_dispatch/middleware/executor.rb:14:in `call'](http://localhost:3000/admin#) [actionpack (7.0.2.2) lib/action_dispatch/middleware/static.rb:23:in `call'](http://localhost:3000/admin#) [rack (2.2.3) lib/rack/sendfile.rb:110:in `call'](http://localhost:3000/admin#) [actionpack (7.0.2.2) lib/action_dispatch/middleware/host_authorization.rb:137:in `call'](http://localhost:3000/admin#) [rack-cors (1.1.1) lib/rack/cors.rb:100:in `call'](http://localhost:3000/admin#) [webpacker (275fbb56e6b0) lib/webpacker/dev_server_proxy.rb:25:in `perform_request'](http://localhost:3000/admin#) [rack-proxy (0.7.2) lib/rack/proxy.rb:67:in `call'](http://localhost:3000/admin#) [railties (7.0.2.2) lib/rails/engine.rb:530:in `call'](http://localhost:3000/admin#) [puma (5.6.2) lib/puma/configuration.rb:252:in `call'](http://localhost:3000/admin#) [puma (5.6.2) lib/puma/request.rb:77:in `block in handle_request'](http://localhost:3000/admin#) [puma (5.6.2) lib/puma/thread_pool.rb:340:in `with_force_shutdown'](http://localhost:3000/admin#) [puma (5.6.2) lib/puma/request.rb:76:in `handle_request'](http://localhost:3000/admin#) [puma (5.6.2) lib/puma/server.rb:441:in `process_client'](http://localhost:3000/admin#) [puma (5.6.2) lib/puma/thread_pool.rb:147:in `block in spawn_thread'](http://localhost:3000/admin#) ```
abepark01 commented 2 years ago

Issue resolved in https://github.com/railsadminteam/rails_admin/issues/3474#issuecomment-1046629870

rikkipitt commented 2 years ago

Hey @abepark01 glad you got it sorted!