Sha256: bf6bfda256ca72af7bbf5aef6f5c26b6dff7f177fd57b623cf0df28a021f5034
Contents?: true
Size: 1017 Bytes
Versions: 3
Compression:
Stored size: 1017 Bytes
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/v3/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 @digest = T.let(nil, T.nilable(String)) 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_digest = fetch_digest unless new_digest == @digest regenerate @digest = new_digest end end sig { void } def regenerate JsRoutes.generate!(typed: true) end sig { returns(T.nilable(String)) } def fetch_digest JsRoutes.digest rescue Errno::ENOENT nil end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
js-routes-2.3.5 | lib/js_routes/middleware.rb |
js-routes-2.3.4 | lib/js_routes/middleware.rb |
js-routes-2.3.3 | lib/js_routes/middleware.rb |