Petit travail d’un soir: organiser les classes de notre application Merb dans des sous-répertoire.
Par défaut, Merb construit ce type d’arborescence:
app
|__ controllers
|__ ...
|__ rockets.rb
|__ models
|__ ...
|__ rocket.rb
Et pour pas vous embêtez, vous entassez naturellement vos classes jusqu’à trop plein.
Maintenant, vous voulez ranger vos contrôleurs et modèles de manière plus hiérarchiques:
app
|__ controllers
|__ ...
|__ resource
|__ ...
|__ rockets.rb
|__ models
|__ ...
|__ resource
|__ ...
|__ rocket.rb
Pour faire ceci, il vous faut d’abord modifier le fichier config/router.rb, par exemple pour appeler le contrôleur de la ressource rocket:
Merb::Router.prepare do |r|
r.resources :resource_rockets, :controller => "resource/rockets"
end
Vous devez déclarer le module du contrôleur dans app/controllers/resource/rockets.rb:
module Resource
class Rockets < Application
...
end
end
Pour cette manipulation, il n’y a aucune modifications à apporter au modèle, il vous suffit de le mettre dans son sous-répertoire et il devrait être reconnu.