module Rack::App::Extension

Public Instance Methods

apply_extensions(app_class, applied_ext_names, apply_ext_names) click to toggle source
# File lib/rack/app/extension.rb, line 5
def apply_extensions(app_class, applied_ext_names, apply_ext_names)
  apply_ext_names.each do |extension_name|
    extension_name = format_extension_name(extension_name)

    next if applied_ext_names.include?(extension_name)
    applied_ext_names << extension_name

    ext = find_extension_for(extension_name)
    app_class.class_eval(&ext)

  end
  nil
end
format_extension_name(extension_name) click to toggle source
# File lib/rack/app/extension.rb, line 19
def format_extension_name(extension_name)
  extension_name.to_s.to_sym
end
register(extension_name, &builder_block) click to toggle source
# File lib/rack/app/extension.rb, line 23
def register(extension_name, &builder_block)
  extensions[format_extension_name(extension_name)]= builder_block
end

Protected Instance Methods

extensions() click to toggle source
# File lib/rack/app/extension.rb, line 29
def extensions
  @extensions ||= {}
end
find_extension_for(sym_name) click to toggle source
# File lib/rack/app/extension.rb, line 33
def find_extension_for(sym_name)
  return extensions[sym_name.to_s.to_sym] || raise("Not registered extension name requested: #{sym_name}")
end