J'utilise Ruby on Rails 3 et je souhaite déplacer du code personnalisé et partagé dans un module.
- Quelle syntaxe dois-je utiliser pour écrire le code du module?
- Dans quel dossier de mon application dois-je placer le fichier du module?
- Comment dois-je inclure ce module dans une ou plusieurs classes d'automates?
- Quelle autre action, le cas échéant, dois-je utiliser pour utiliser le module personnalisé n'importe où dans mon application?
- Comment appeler des méthodes dans le module depuis mon application?
Merci d'avance.
ruby-on-rails-3
module
user502052
la source
la source
Réponses:
À 1. Un module est créé / ouvert en disant simplement:
Vers 2. Le
lib
dossier. Si vous souhaitez organiser vos modules dans lelib
dossier, vous pouvez les placer eux-mêmes dans des modules. Par exemple, si vous vouliez un sous-dossier,super_modules
vos modules seraient définis comme suit:Vers 3./5. Lorsque vous incluez le module dans une classe, vous pouvez simplement appeler les méthodes des modules comme si elles étaient définies dans la classe:
Pour 4. Tout d'abord, assurez-vous que votre module est vraiment nécessaire dans chaque classe de votre application. Si ce n'est pas le cas, il est logique de ne l'inclure que là où c'est nécessaire pour ne pas gonfler les classes qui n'en ont pas besoin de toute façon. Si vous voulez vraiment le module partout, incluez la hiérarchie des classes de vos classes dans l'application. Voulez-vous le module dans tous les modèles? Vous pouvez ouvrir ActiveRecord :: Base et y ajouter votre module.
la source
lib
dossier, une remarque importante est d'activer Rails3 pour décommenter la ligneconfig\application.rb
pourconfig.autoload_paths
- lisez par exemple stackoverflow.com/questions/1073076/rails-lib-modules-and ... Remarque également que vous devez faire attention à utiliser un nom de fichier pour votre module qui correspond au nom du module lui-même. Donc, si vous l'enregistrezlib/test/my_module.rb
, vous devezinclude Test::MyModule
- pour plus de détails, voir stackoverflow.com/questions/4073856/rails-3-autoloadapp/models
si le code a besoin d'accéder à d'autres modèles. Si votre code est vraiment une 'bibliothèque' et peut exister seul, je suggérer de vendre une gemme. Pour des exemples, voir github.com/shageman/the_next_big_thingA> 1. Vous pouvez utiliser la même syntaxe que toute autre classe ruby. Par exemple, je définis un module VehicleClassifer qui va utiliser la méthode classify_vehicle pour classer un véhicule en fonction du nombre de roues qu'il reçoit en entrée.
A> 2. Les modules sont généralement stockés dans le dossier / lib.
les questions 3, 4, 5 ont plus ou moins la même réponse. vous pouvez utiliser
dans la classe que vous utilisez le module et vous aurez accès à toutes les méthodes du module.
De plus, si vous avez besoin d'utiliser un module dans votre application, vous pouvez l'inclure dans votre contrôleur d'application.
la source
ApplicationHelper
?