Sha256: d79627de4a634e8f5c0291bcc31f5e44e59d9f3f9d7a9175b179c14a6f283f4d
Contents?: true
Size: 1.97 KB
Versions: 1
Compression:
Stored size: 1.97 KB
Contents
module Rack::App::SingletonMethods::Mounting def mount(api_class, mount_prop={}) mount_to_path = ::Rack::App::Utils.deep_dup(mount_prop[:to]) unless api_class.is_a?(Class) and api_class <= Rack::App raise(ArgumentError, 'Invalid class given for mount, must be a Rack::App') end duplication = ::Rack::App::Utils.deep_dup(api_class) duplication.on_mounted.each do |on_mount| duplication.class_exec(mount_prop, &on_mount) end cli.merge!(duplication.cli) merge_prop = {:namespaces => [@namespaces, mount_to_path].flatten} router.merge_router!(duplication.router, merge_prop) nil end def mount_directory(directory_path, options={}) directory_full_path = ::Rack::App::Utils.expand_path(directory_path) namespace options[:to] do Dir.glob(File.join(directory_full_path, '**', '*')).each do |file_path| request_path = file_path.sub(/^#{Regexp.escape(directory_full_path)}/, '') get(request_path) { serve_file(file_path) } options(request_path) { '' } end end nil end alias create_endpoints_for_files_in mount_directory def serve_files_from(file_path, options={}) file_server = Rack::App::FileServer.new(Rack::App::Utils.expand_path(file_path)) request_path = Rack::App::Utils.join(@namespaces, options[:to], '**', '*') router.register_endpoint!('GET', request_path, @last_description, file_server) @last_description = nil end def mount_rack_based_application(rack_based_app, options={}) router.register_endpoint!( ::Rack::App::Constants::HTTP::ANY, Rack::App::Utils.join(@namespaces, options[:to], ::Rack::App::Constants::RACK_BASED_APPLICATION), @last_description, rack_based_app) @last_description = nil end alias mount_app mount_rack_based_application protected def on_mounted(&block) @on_mounted ||= [] @on_mounted << block unless block.nil? @on_mounted end alias while_being_mounted on_mounted end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
rack-app-3.0.0.delta | lib/rack/app/singleton_methods/mounting.rb |