Sha256: 24b1ff696387477e62f4e3d6b69804324fb27b844885bbc8160fb4f0fc6d7a2d
Contents?: true
Size: 1.42 KB
Versions: 1
Compression:
Stored size: 1.42 KB
Contents
require 'rack' module Rack class Revision File = ::File @@revision = nil def initialize(app, options={}) initialize_options(options) @app = app @dir = Dir.pwd end def call(env) if @options[:rack_env] env[@options[:rack_env]] = revision end status, headers, body = @app.call(env) if @options[:header] headers[@options[:header]] = revision end [status, headers, body] end def reset_revision @@revision = nil end protected def revision @@revision ||= (fetch_from_env || fetch_from_file || fetch_default) end def fetch_from_env ENV[@options[:env_var]] end def fetch_from_file if ::File.exist?(detected_filename) ::File.read(detected_filename).strip end end def fetch_default @options[:default] end def detected_filename @file ||= (@options[:filename] =~ /\A\// ? @options[:filename] : File.join(@dir, @options[:filename])) end def initialize_options(options) @options = { :header => options[:header].nil? ? "X-Revision" : options[:header], :rack_env => options[:rack_env].nil? ? "rack.app_revision" : options[:rack_env], :env_var => options[:env_var] || "RACK_REVISION", :filename => options[:filename] || "REVISION", :default => options[:default] || "UNDEFINED" } end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
rack-revision-1.1.1 | lib/rack/revision.rb |