Class: Merb::Rack::Runner

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

Class Method Summary (collapse)

Class Method Details

+ (Object) start(opts = {})

Parameters:

  • opts (Hash) (defaults to: {})

    Options for the runner.

Options Hash (opts):

  • :runner_code (String)

    The code to run. If this matches a filename, that file will be read and the contents executed. Otherwise the code will be executed directly.



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'merb-core/lib/merb-core/rack/adapter/runner.rb', line 12

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