Class: Merb::BootLoader::RackUpApplication

Inherits:
Merb::BootLoader show all
Defined in:
lib/merb-core/bootloader.rb

Class Method Summary collapse

Methods inherited from Merb::BootLoader

after, after_app_loads, before, before_app_loads, before_master_shutdown, before_worker_shutdown, default_framework, finished?, inherited, move_klass

Class Method Details

.runObject

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



1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
# 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