Class: Merb::Rack::Runner

Inherits:
Object show all
Defined in:
lib/merb-core/rack/adapter/runner.rb

Class Method Summary collapse

Class Method Details

.start(opts = {}) ⇒ Object

Parameters

opts<Hash>

Options for the runner (see below).

Options (opts)

:runner_code<String>

The code to run.

Notes

If opts matches a filename, that file will be read and the contents executed. Otherwise the code will be executed directly.

:api: plugin



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/merb-core/rack/adapter/runner.rb', line 17

def self.start(opts={})
  Merb::Server.change_privilege

  if opts[:runner_code]
    runner_code = opts[:runner_code]
    if File.exists?(opts[:runner_code])
      runner_code = File.read(runner_code)
      runner_script = true
    end

    begin
      eval(runner_code, TOPLEVEL_BINDING, __FILE__, __LINE__)
    rescue Exception => e
      # check to see if user gave us a string that links like they tried to run a script file
      if !runner_script && (runner_code.include?(File::SEPARATOR) || runner_code.include?(".rb"))
        Merb.logger.error!("Merb Runner Adapter - tried to execute script file")
        Merb.logger.error!("Not Found: #{runner_code}")
      else
        raise e
      end
    end
    exit
  end  
end