Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I make the code in lib/ automatically reload when the file changes?

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?

like image 453
jshen Avatar asked May 20 '09 03:05

jshen


2 Answers

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.

like image 153
JellicleCat Avatar answered Nov 05 '22 18:11

JellicleCat


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

like image 44
choonkeat Avatar answered Nov 05 '22 17:11

choonkeat