activeadmin / inherited_resources

MIT License
2.7k stars 393 forks source link

Unable to autoload constant Base #472

Open sergiogomez opened 5 years ago

sergiogomez commented 5 years ago

This issue was originally reported at https://github.com/activeadmin/activeadmin/issues/2908

Current workarounds (from the engine) are:

class Base
end

module MyCustomEngine
  class Engine < ::Rails::Engine

I guess it could be fixed rescuing NameError, LoadError at method initialize_resources_class_accessors! from inherited_resources/lib/inherited_resources/class_methods.rb (as done at https://github.com/activeadmin/inherited_resources/pull/416)

brianjlandau commented 2 years ago

I ran into this trying to get activeadmin and activeadmin-mongoid to work. I put this in my config/application.rb:

module AppName
  class Application < Rails::Application
    initializer :load_inherited_resources_base, before: 'active_admin.mongoid.resource_controller' do
      require 'application_helper'
      require 'devise_helper'
      require 'preview_helper'
      require 'application_controller'
      ir_gem_path = Bundler.rubygems.find_name('inherited_resources').first.full_gem_path
      require "#{ir_gem_path}/app/controllers/inherited_resources/base"
    end
  end
end

Hopefully anyone looking for a solution to this finds this :partying_face:

maximevaillancourt commented 1 year ago

I'm running into this, though very intermittently / randomly, and I'm struggling to reproduce the exception.

It seems like there are two associated exceptions in my case (one shadows the other):

In case others see this too, here are two very similar issues that discuss this kind of problem (which seems related to Ruby's autoload):

istana commented 3 weeks ago

I was able to fix this error by using Rails.application.config.to_prepare in Rails with Zeitwerk:

initializer :active_admin_setup do
  Rails.application.config.to_prepare do
    ....
  end
end