Diviser routes.rb dans Rails6

Chose que tu veux faire

Je souhaite diviser le fichier de définition de routage config / routes.rb en plusieurs fichiers. Plus précisément, j'ai un fichier appelé lib / my_app / routes.rb et je veux le lire.

Ancienne solution

L'article de 2015 https://y-yagi.tumblr.com/post/118514473965/ est un succès, mais il ne fonctionne pas tel quel. La définition et l'exécution de draw fonctionnent bien, mais elles échouent car le mécanisme de rechargement semble être ancien.

Solutions récentes

Rails6 a une manière assez organisée de charger les itinéraires afin que vous n'ayez pas à le recharger vous-même. Une classe appelée Rails :: Application :: RoutesReloader est définie avec les paramètres corrects Si vous pouvez le donner, il sera complété. Si vous souhaitez décomposer routes.rb sous config / routes /, la méthode décrite dans l'article ci-dessous semble être bonne.

https://medium.com/rubycademy/how-to-keep-your-routes-clean-in-ruby-on-rails-f7cf348ec13b

Cependant, je ne pouvais lire aucun fichier avec cela, j'ai donc choisi une autre méthode.

Autres solutions

Le routage est chargé à ʻadd_routing_paths` dans initializers. J'ai donc pensé qu'il serait bon d'ajouter un chemin juste avant les initialiseurs.

Plus précisément, les paramètres suivants ont été ajoutés à config / application.rb.

config/application.rb


    initializer('add_my_app_routing_paths', before: 'add_routing_paths') do |app|
      routing_path = root.join('lib/my_app/routes.rb')
      app.routes_reloader.paths.prepend(routing_path)
    end

Maintenant, comme prévu, les routes définies dans lib / my_app / routes.rb sont chargées. Je ne semblais pas avoir l'effet secondaire de ne pas être rechargé, alors j'ai décidé d'aller avec ça.

prime

Si vous regardez le code source de la branche principale qui n'a pas encore été publié, il ressemble à ce qui suit. écrit.

    initializer :add_routing_paths do |app|
      routing_paths = paths["config/routes.rb"].existent
      external_paths = self.paths["config/routes"].paths
      routes.draw_paths.concat(external_paths)


      if routes? || routing_paths.any?
        app.routes_reloader.paths.unshift(*routing_paths)
        app.routes_reloader.route_sets << routes
        app.routes_reloader.external_routes.unshift(*external_paths)
      end
    end

Lorsque je définis une variable appelée external_paths, je sens que si je peux passer le chemin que je veux lire, je peux mieux le définir.

Recommended Posts

Diviser routes.rb dans Rails6
Association de modèles dans Rails
Ajout de colonnes dans les rails
Désactiver les turbolinks dans les rails
^, $ dans l'expression régulière Rails
Utiliser des images avec des rails
Comprendre la migration dans les rails
Markdown implémenté dans Rails
Implémenter la fonction d'application dans Rails
Transaction déclarative dans Rails #ginzarb
Japaneseize en utilisant i18n avec Rails
Implémenter l'authentification LTI dans Rails
Afficher le calendrier mensuel dans Rails
Utilisez plusieurs cases à cocher dans Rails6!
Rails: capturez les expressions régulières dans les e-mails!
[Rails] Paramètre de délai d'expiration de session dans l'appareil
Ajoutez une fonction de recherche dans Rails.
Activer jQuery et Bootstrap dans Rails 6 (Rails 6)
[rails] Implémentation de l'écran de connexion dans la devise
[Rails] Erreur de validation inattendue dans l'appareil
À propos du symbole <%%> dans Rails erb
Différences dans les méthodes de fractionnement de StringUtils
[Rails] Utiliser des cookies en mode API
Implémenter une fonction de connexion simple dans Rails
Créer une nouvelle application avec Rails
Ruby on Rails compatible japonais-anglais i18n
[Solution] Webpacker :: Manifest :: MissingEntryError dans les rails
Implémenter un formulaire de contact dans Rails
Supprimez les "actifs" et les "turbolinks" dans "Rails6".
Fonction CRUD et MVC dans Rails
Comment installer jQuery dans Rails 6
Ajout de la première fonction de pagination dans les rails
Les données ne sont pas enregistrées dans Rails.
[Rails 6] Personnaliser Bootstrap dans l'environnement Rails + Bootstrap 5.0.0-alpha
Implémenter la fonction de téléchargement CSV dans Rails
Méthodes Ruby souvent utilisées dans Rails
Comment installer Swiper in Rails
Comment implémenter la fonctionnalité de recherche dans Rails
Définitions autres que les sept actions de base dans Rails
[Rails] Restrictions de fonction dans l'appareil (connexion / déconnexion)
Comment changer le nom de l'application dans les rails
Comment insérer une vidéo dans Rails
L'identité des paramètres de rails [: id]
[rails] Liste des actions définies dans Controller
Histoire de refactoring de rails apprise sur le terrain
Ruby on Rails dans les espaces de codes Visual Studio
JavaScript (vanilla) ne répond pas dans Rails.
Comment utiliser MySQL dans le didacticiel Rails
Spécifier la vue d’origine dans l’application Rails [racine]
[Rails] À propos de local: true décrit dans form_with
[Rails] Stocker uniquement les éléments cochés dans la base de données
Comment implémenter la fonctionnalité de classement dans Rails