class Merb::BootLoader::RackUpApplication

Public Class Methods

run() click to toggle source

Setup the Merb Rack App or read a rackup file located at Merb::Config with the same syntax as the rackup tool that comes with rack. Automatically evals the file in the context of a Rack::Builder.new { } block. Allows for mounting additional apps or middleware.

Returns

nil

:api: plugin

# File lib/merb-core/bootloader.rb, line 1322
def self.run
  require 'rack'
  if File.exists?(Merb.dir_for(:config) / "rack.rb")
    Merb::Config[:rackup] ||= Merb.dir_for(:config) / "rack.rb"
  end

  if Merb::Config[:rackup]
    rackup_code = File.read(Merb::Config[:rackup])
    Merb::Config[:app] = eval("::Rack::Builder.new {( #{rackup_code}\n )}.to_app", TOPLEVEL_BINDING, Merb::Config[:rackup])
  else
    Merb::Config[:app] = ::Rack::Builder.new {
       use Merb::Rack::Head # handle head requests
       use Merb::Rack::ContentLength # report content length
       if prefix = ::Merb::Config[:path_prefix]
         use Merb::Rack::PathPrefix, prefix
       end
       use Merb::Rack::Static, Merb.dir_for(:public)
       run Merb::Rack::Application.new
     }.to_app
  end

  nil
end