class JsRoutes::Middleware
A Rack middleware that automatically updates routes file whenever routes.rb is modified
Inspired by github.com/fnando/i18n-js/blob/main/lib/i18n/js/middleware.rb
Public Class Methods
new(app)
click to toggle source
# File lib/js_routes/middleware.rb, line 17 def initialize(app) @app = app @routes_file = T.let(Rails.root.join("config/routes.rb"), Pathname) @mtime = T.let(nil, T.nilable(Time)) end
Public Instance Methods
call(env)
click to toggle source
# File lib/js_routes/middleware.rb, line 24 def call(env) update_js_routes @app.call(env) end
Protected Instance Methods
regenerate()
click to toggle source
# File lib/js_routes/middleware.rb, line 41 def regenerate JsRoutes.generate!(typed: true) end
routes_mtime()
click to toggle source
# File lib/js_routes/middleware.rb, line 46 def routes_mtime File.mtime(@routes_file) rescue Errno::ENOENT nil end
update_js_routes()
click to toggle source
# File lib/js_routes/middleware.rb, line 32 def update_js_routes new_mtime = routes_mtime unless new_mtime == @mtime regenerate @mtime = new_mtime end end