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.
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.
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.
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.
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