Sha256: 9e2dc09f610741d439ed11dba9bc3df478591cc8af3f1563504a2f415d170e93
Contents?: true
Size: 1.11 KB
Versions: 1
Compression:
Stored size: 1.11 KB
Contents
# typed: strict require "js_routes/types" module JsRoutes # A Rack middleware that automatically updates routes file # whenever routes.rb is modified # # Inspired by # https://github.com/fnando/i18n-js/blob/main/lib/i18n/js/middleware.rb class Middleware include JsRoutes::Types include RackApp extend T::Sig sig { params(app: T.untyped).void } def initialize(app) @app = app @routes_file = T.let(Rails.root.join("config/routes.rb"), Pathname) @mtime = T.let(nil, T.nilable(Time)) end sig { override.params(env: StringHash).returns(UntypedArray) } def call(env) update_js_routes @app.call(env) end protected sig { void } def update_js_routes new_mtime = routes_mtime unless new_mtime == @mtime regenerate @mtime = new_mtime end end sig { void } def regenerate JsRoutes.generate! JsRoutes.definitions! if JsRoutes.configuration.modern? end sig { returns(T.nilable(Time)) } def routes_mtime File.mtime(@routes_file) rescue Errno::ENOENT nil end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
js-routes-2.2.10 | lib/js_routes/middleware.rb |