diff --git a/lib/rails_admin/engine.rb b/lib/rails_admin/engine.rb index 94dd90ff21..088b95bd73 100644 --- a/lib/rails_admin/engine.rb +++ b/lib/rails_admin/engine.rb @@ -29,9 +29,13 @@ class Engine < Rails::Engine end initializer 'RailsAdmin reload config in development' do - unless Rails.application.config.cache_classes - ActiveSupport::Reloader.before_class_unload do |cl| - RailsAdmin::Config.reset_all_models + if Rails.application.config.cache_classes + if defined?(ActiveSupport::Reloader) + ActiveSupport::Reloader.before_class_unload do + RailsAdmin::Config.reset_all_models + end + # else + # For Rails 4 not implemented end end end diff --git a/spec/rails_admin/config_spec.rb b/spec/rails_admin/config_spec.rb index 1928d1d603..97a98b86da 100644 --- a/spec/rails_admin/config_spec.rb +++ b/spec/rails_admin/config_spec.rb @@ -371,24 +371,30 @@ class Toggle < RailsAdmin::Config::Fields::Base expect(fields.map(&:name)).to match_array %i(id wins) end - it "updates model config when reloading code" do - Team.send(:rails_admin, &team_config) - - # this simulates rails code reloading - Rails.application.config.cache_classes = false - RailsAdmin::Engine.initializers.select do |i| - i.name == "RailsAdmin reload config in development" - end.first.block.call - ActiveSupport::Reloader.new.tap do |instance| - instance.class_unload! - end - # /end + it "updates model config when reloading code for rails 5" do + if defined?(ActiveSupport::Reloader) + Team.send(:rails_admin, &team_config) + + # this simulates rails code reloading + Rails.application.config.cache_classes = false + RailsAdmin::Engine.initializers.select do |i| + i.name == "RailsAdmin reload config in development" + end.first.block.call + if defined?(ActiveSupport::Reloader) + ActiveSupport::Reloader.new.tap(&:class_unload!) + # else + # for Rails 4 not imlemented + end + # /end - Team.send(:rails_admin, &team_config3) - expect(fields.map(&:name)).to match_array %i(wins) + Team.send(:rails_admin, &team_config3) + expect(fields.map(&:name)).to match_array %i(wins) - # restore setting to previous value - Rails.application.config.cache_classes = true + # restore setting to previous value + Rails.application.config.cache_classes = true + # else + # pending "for Rails 4 not implemented" + end end end end