15
votes

This is a follow up to this question. During development I have to restart the rails app everytime I change the code in lib/ in order for the code changes to take effect. How do I get this code to automatically reload like controllers, models, etc?

4

4 Answers

3
votes

For Rails 3, vary the instructions given in the article from @science's answer. In your environments/development.rb file, add the lines:

ActiveSupport::Dependencies.autoload_paths << File::join( Rails.root, 'lib')
ActiveSupport::Dependencies.explicitly_unloadable_constants << 'MyModuleInLibFolder'

Of course, substitute the name of your module for MyModuleInLibFolder.

1
votes
module ActsAsReloadable
  def self.included(base)
    ActiveSupport::Dependencies.explicitly_unloadable_constants << base.name if Rails.env == 'development'
  end
end

To use it, simply include ActsAsReloadable in your lib/* files and add config.autoload_paths += %W(#{config.root}/lib) in config/application.rb

0
votes

why not just enter

load Rails.root + '/lib/your_lib.rb'
0
votes

If you already did the previous approaches but doesn't works (like my case), try with config.reload_classes_only_on_change in development.rb.

Rails 4.2 here ✋