2009-05-20 5 views
13

Ceci est une suite à cette question. Pendant le développement, je dois redémarrer l'application rails chaque fois que je change le code dans lib/pour que les changements de code prennent effet. Comment obtenir ce code pour recharger automatiquement comme les contrôleurs, les modèles, etc?Comment puis-je faire le code dans lib/recharger automatiquement lorsque le fichier change?

+0

duplication possible de [(Rails) Rechargement de fichiers "lib" sans avoir à redémarrer le serveur ...?] (Http://stackoverflow.com/questions/1114388/rails-reloading-lib-files-without-having- to-restart-server) –

+0

duplication possible de [Ruby on Rails 3 - Recharger le répertoire lib pour chaque requête] (http://stackoverflow.com/questions/3282655/ruby-on-rails-3-reload-lib-directory- pour-chaque-demande) – shime

Répondre

0

pourquoi ne pas simplement entrer

load Rails.root + '/lib/your_lib.rb' 
+1

cela fonctionne juste en chargeant par exemple – ecoologic

+0

Echec à moins que j'utilise 'join':' load Rails.root.join ('lib/your_lib.rb') ' –

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

Pour l'utiliser, il suffit include ActsAsReloadable dans votre lib/* fichiers et ajouter config.autoload_paths += %W(#{config.root}/lib) dans config/application.rb

2

Pour Rails 3, modifier les instructions donné dans l'article de la réponse de @ science. Dans votre fichier environments/development.rb, ajoutez les lignes:

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

Bien sûr, remplacer le nom de votre module pour MyModuleInLibFolder.

+0

@ La réponse de science a été supprimée en tant que réponse à un lien seulement (le lien a depuis pourri, pour ce que ça vaut). –

Questions connexes