2009-10-27 5 views
2

J'essaie d'avoir un plugin Je suis en train de développer le rechargement automatique chaque fois que je change mon code, imitant le même rechargement automatique qui se produit normalement dans le mode de développement de Rail. Mon plugin est principalement un module de mixage ActiveRecord. J'ai essayé toutes les suggestions que j'ai pu trouver dans les recherches Google connexes. Rien n'a encore fonctionné.Rails auto-rechargement brancher en mode développement

Dans init.rb de mon plugin:

require 'activesupport' unless defined? ActiveSupport 
require 'activerecord' unless defined? ActiveRecord 

if RAILS_ENV == 'development' 
    ActiveSupport::Dependencies.load_once_paths.delete lib_path 
    ActiveSupport::Dependencies.load_once_paths.delete File.join(lib_path, 'crowd_compass', 'publisher.rb') 

    ActiveSupport::Dependencies.load_paths << lib_path 
    ActiveSupport::Dependencies.load_paths << File.join(lib_path, 'crowd_compass', 'publisher.rb') 
end 

ActiveRecord::Base.send(:include, CrowdCompass::Publisher) 

En regardant dans le changelog rails, je l'ai fait remarquer la fonctionnalité de rechargement automatique pour tous les plug-ins.

config.reload_plugins = true if RAILS_ENV == 'development' 

Cela n'a pas fonctionné comme je m'y attendais quand je l'ai ajouté à mon fichier conf/environment.rb

Mon plug-in est structuré de sorte que tous les fichiers sont chargés automatiquement par namespace => Répertoire. Je l'ai fait afin que je puisse éviter d'utiliser "require", car je pensais que cela empêchait mon plugin d'être rechargé automatiquement.

Je fais tout mon travail en mode développement à travers la console rails et je ne sais pas si cela se comporte différemment de courir sur mongrel (ou comme serveur web).

Le plugin fonctionne comme prévu, mais je dois recharger chaque fois que je fais un changement au code. Est-ce que quelqu'un sait un moyen d'obtenir des plugins pour recharger?

Répondre

1

La console ne fonctionne définitivement pas comme un bâtard. Toutes les techniques que vous utilisez sont faites pour recharger chaque requête, ce qui est similaire à chaque fois que vous démarrez la console.

Il n'est pas possible de recharger du code dans la console sans appeler reload!.

+0

C'est ce dont j'avais peur. J'aurais même été heureux de recharger !, mais cela n'a pas fonctionné pour moi non plus. Au lieu de cela, je dois redémarrer complètement la console chaque fois que je change quelque chose dans mon plugin. Le développement de plugins serait plus facile si cela était résolu. Merci pour votre réponse. –

+0

Avez-vous essayé d'écrire des tests? Si vous testez votre plugin, vous n'auriez pas besoin de recharger la console. –

+1

@BJ Clark. Il y a quelques jours, je suis passé à tester avec Rspec pour le plugin. C'était tellement plus rapide et avec la configuration d'autospec pour le plugin c'était très agréable de voir mes tests s'exécuter chaque fois que je sauvegardais un fichier dans le répertoire du plugin. Je ne sais pas ce que je pensais quand j'essayais de tester manuellement mon plugin. –

Questions connexes