4 votes

Pourquoi utiliser /apps/libs au lieu de /libs dans Rails?

Dans la documentation de Sidekiq, il y a cette citation concernant la préférence d'utiliser /apps/libs plutôt que /libs dans les projets Rails pour éviter les erreurs de chargement automatique :

Un répertoire lib/ ne causera que des problèmes. Déplacez le code vers app/lib/ et assurez-vous que le code à l'intérieur respecte les conventions de nommage de classe.

En outre, il y a aussi :

Ne configurez pas de chemins supplémentaires dans autoload_paths ou eager_load_paths. C'est une astuce ; suivez les conventions ! Tout répertoire sous app/ peut contenir du code Ruby, vous n'avez pas besoin de configurer quoi que ce soit explicitement.

Mes questions sont :

Est-ce que ces affirmations selon lesquelles l'utilisation de /apps/libs est meilleure que /libs sont vraies ?

Cela est-il uniquement utile pour le chargement automatique des objets liés à Rails (tels que les modèles AR, les contrôleurs, les jobs, etc) ? Ou cela aidera-t-il également les POROs ?

Y a-t-il uniquement un contexte spécifique dans lequel ces commentaires ont du sens ?

5voto

Joseph Cho Points 1941

Dans mon expérience, apps/libs est plus facile à utiliser. Vous pouvez littéralement insérer quelque chose comme Class MathFunction et l'utiliser ailleurs (par exemple dans des contrôleurs ou des modules) avec MathFunction.sqrRoot.

Pour utiliser /libs, vous devez configurer votre application Rails avec autoload_paths. autoload_paths nécessite également quelques ajustements pour fonctionner correctement en production. Matz lui-même déconseille l'utilisation de autoload car il est en train d'être en cours de dépréciation.

La seule fois où j'ai eu besoin d'utiliser le répertoire libs est pour créer des tâches personnalisées de râteau. Sinon, je reste avec apps/libs.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X