Teilen Sie route.rb in Rails6

Was du machen willst

Ich möchte die Routing-Definitionsdatei config / route.rb in mehrere Dateien aufteilen. Insbesondere habe ich eine Datei namens lib / my_app / route.rb und möchte sie lesen.

Alte Lösung

Der Artikel von 2015 unter https://y-yagi.tumblr.com/post/118514473965/ ist ein Hit, funktioniert aber nicht so wie er ist. Die Definition und Ausführung von Draw funktioniert gut, schlägt jedoch fehl, da der Mechanismus zum erneuten Laden alt zu sein scheint.

Aktuelle Lösungen

Rails6 hat eine ziemlich gut organisierte Art, Routen zu laden, sodass Sie sie nicht selbst neu laden müssen. Eine Klasse mit dem Namen Rails :: Application :: RoutesReloader wird mit den richtigen Parametern definiert. Wenn Sie es geben können, wird es abgeschlossen sein. Wenn Sie route.rb unter config / routen / zerlegen möchten, scheint die im folgenden Artikel beschriebene Methode gut zu sein.

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

Da ich jedoch keine Datei damit lesen konnte, entschied ich mich für eine andere Methode.

Andere Lösungen

Das Routing wird unter "add_routing_paths" in initializers geladen. Daher dachte ich, es wäre gut, kurz vor den Initialisierern einen Pfad hinzuzufügen.

Insbesondere wurden die folgenden Einstellungen zu config / application.rb hinzugefügt.

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

Nun werden erwartungsgemäß die in lib / my_app / route.rb definierten Routen geladen. Ich schien nicht den Nebeneffekt zu haben, nicht neu geladen zu werden, also entschied ich mich dafür.

Bonus

Wenn Sie sich den Quellcode des Hauptzweigs ansehen, der noch nicht veröffentlicht wurde, sieht er so aus, als wäre er noch nicht veröffentlicht worden. geschrieben.

    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

Wenn ich eine Variable namens external_paths setze, habe ich das Gefühl, dass ich den Pfad, den ich lesen möchte, besser setzen kann, wenn ich ihn übergeben kann.

Recommended Posts

Teilen Sie route.rb in Rails6
Modellassoziation in Rails
Hinzufügen von Spalten in Rails
Deaktivieren Sie Turbolinks in Schienen
^, $ im regulären Ausdruck von Rails
Verwenden Sie Bilder mit Schienen
Migration in Schienen verstehen
Markdown in Rails implementiert
Implementieren Sie die Anwendungsfunktion in Rails
Deklarative Transaktion in Rails #ginzarb
Japanisieren Sie mit i18n mit Rails
Implementieren Sie die LTI-Authentifizierung in Rails
Monatskalender in Rails anzeigen
Verwenden Sie mehrere Kontrollkästchen in Rails6!
Rails: Erfassen Sie reguläre Ausdrücke in E-Mails!
[Rails] Einstellung des Sitzungszeitlimits im Gerät
Fügen Sie eine Suchfunktion in Rails hinzu.
Aktivieren Sie jQuery und Bootstrap in Rails 6 (Rails 6).
[Rails] Implementierung des Anmeldebildschirms in Devise
[Rails] Unerwarteter Validierungsfehler im Gerät
Über das Symbol <%%> in Rails erb
Unterschiede in den Split-Methoden von StringUtils
[Rails] Verwenden Sie Cookies im API-Modus
Implementieren Sie eine einfache Anmeldefunktion in Rails
Erstellen Sie eine neue App mit Rails
Ruby on Rails Japanisch-Englisch kompatibler i18n
[Lösung] Webpacker :: Manifest :: MissingEntryError in Rails
Implementieren Sie ein Kontaktformular in Rails
Entfernen Sie "Assets" und "Turbolinks" in "Rails6".
CRUD-Funktion und MVC in Rails
So installieren Sie jQuery in Rails 6
Hinzufügen der ersten Paginierungsfunktion in Schienen
Daten sind nicht in Rails registriert.
[Rails 6] Passen Sie Bootstrap in der Rails + Bootstrap 5.0.0-Alpha-Umgebung an
Implementieren Sie die CSV-Download-Funktion in Rails
Ruby-Methoden, die häufig in Rails verwendet werden
So installieren Sie Swiper in Rails
So implementieren Sie Suchfunktionen in Rails
Andere Definitionen als die sieben grundlegenden Aktionen in Rails
[Rails] Funktionseinschränkungen im Gerät (Login / Logout)
So ändern Sie den App-Namen in Rails
So fügen Sie ein Video in Rails ein
Die Identität der Schienenparameter [: id]
[Rails] Liste der in Controller definierten Aktionen
Rails Refactoring Geschichte vor Ort gelernt
Ruby on Rails in Visual Studio-Codespaces
JavaScript (Vanille) reagiert in Rails nicht.
Verwendung von MySQL im Rails-Tutorial
Festlegen der Startansicht in der Rails-App [root]
[Rails] Über local: true, beschrieben in form_with
[Schienen] Speichern Sie nur markierte Elemente in der Datenbank
So implementieren Sie Ranking-Funktionen in Rails