Skip to content

Commit

Permalink
code reload
Browse files Browse the repository at this point in the history
  • Loading branch information
AnatolyShirykalov committed Jul 7, 2018
1 parent 15a665e commit 55a9ee3
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 19 deletions.
10 changes: 7 additions & 3 deletions lib/rails_admin/engine.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
38 changes: 22 additions & 16 deletions spec/rails_admin/config_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 55a9ee3

Please sign in to comment.