J'utilise la ligne suivante dans un initialiseur de chargement automatique de code dans mon /lib
directory en cours de développement:
config/initializers/custom.rb:
RELOAD_LIBS = Dir[Rails.root + 'lib/**/*.rb'] if Rails.env.development?
(à partir de Rails 3 Quicktip: le rechargement Automatique de lib, le mode de développement)
Il fonctionne très bien, mais c'est trop inefficace pour une utilisation en production au Lieu de chargement libs sur chaque demande, je veux juste charger au démarrage. Le même blog a un autre article décrivant comment le faire:
config/application.rb:
# Custom directories with classes and modules you want to be autoloadable.
config.autoload_paths += %W(#{config.root}/lib)
config.autoload_paths += Dir["#{config.root}/lib/**/"]
Cependant, quand je passe, encore en développement, je reçois NoMethodErrors lorsque vous essayez d'utiliser la lib fonctions.
Exemple d'un de mes fichiers lib:
lib/extensions.rb:
Time.class_eval do
def self.milli_stamp
Time.now.strftime('%Y%m%d%H%M%S%L').to_i
end
end
Appelant Time.milli_stamp
lèvera NoMethodError
Je me rends compte d'autres ont répondu à des questions similaires sur mais ils ont tous l'air de traiter avec les conventions de nommage et d'autres questions que je n'ai pas à vous soucier avant - Ma lib classes déjà travaillé pour par demande de chargement, j'ai juste envie de le changer à chaquedémarrage de chargement. Quelle est la bonne façon de le faire?