Sha256: 0d3130d205a5240a9d86b177cf368c8941479e115c5b627e2551e02a89f74311
Contents?: true
Size: 1.75 KB
Versions: 3
Compression:
Stored size: 1.75 KB
Contents
require 'rack/static' module Hanami # Serve static assets in deployment environments (production, staging) where # the architecture doesn't include a web server. # # Web servers like Nginx are the ideal candidate to serve static assets. # They are faster than Ruby application servers (eg. Puma) and they should be # always preferred for this specific task. # # But there are some PaaS that don't allow to use web servers in front of Ruby # web applications. A classical example is Heroku, which requires the web # application to serve static assets. # # Hanami::Static is designed for this specific scenario. # # To enable it set the env variable `SERVE_STATIC_ASSETS` on `true`. # # NOTE: Please remember to precompile the assets at the deploy time with # `bundle exec hanami assets precompile`. # # @since 0.6.0 # @api private # # @see http://www.rubydoc.info/gems/rack/Rack/Static class Static < ::Rack::Static # @since 0.8.0 # @api private MAX_AGE = 60 * 60 * 24 * 365 # One year # @since 0.8.0 # @api private HEADER_RULES = [[:all, { 'Cache-Control' => "public, max-age=#{MAX_AGE}" }]].freeze # @since 0.8.0 # @api private EXCLUDED_ENTRIES = %w(. ..).freeze # @since 0.8.0 # @api private URL_PREFIX = '/'.freeze # @since 0.6.0 # @api private def initialize(app, root: Hanami.public_directory, header_rules: HEADER_RULES) super(app, urls: _urls(root), root: root, header_rules: header_rules) end private # @since 0.8.0 # @api private def _urls(root) return [] unless root.exist? Dir.entries(root).sort.map do |entry| next if EXCLUDED_ENTRIES.include?(entry) "#{URL_PREFIX}#{entry}" end.compact end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
hanami-0.9.2 | lib/hanami/static.rb |
hanami-0.9.1 | lib/hanami/static.rb |
hanami-0.9.0 | lib/hanami/static.rb |