Sha256: f19f63a98fb9c235f752f78bb04183c40fb26aa4f3e7692bb93127ac2a011579

Contents?: true

Size: 941 Bytes

Versions: 29

Compression:

Stored size: 941 Bytes

Contents

require 'wunderbar'
require 'rbconfig'

# run command/block as a background daemon
module Wunderbar
  def self.submit(cmd=nil)
    fork do
      # detach from tty
      Process.setsid
      fork and exit

      # clear working directory and mask
      Dir.chdir '/'
      File.umask 0000

      # close open files
      STDIN.reopen '/dev/null'
      if RbConfig::CONFIG['host_os'] =~ /darwin|mac os/
        STDOUT.reopen '/dev/null'
      else
        STDOUT.reopen '/dev/null', 'a'
      end
      STDERR.reopen STDOUT

      # clear environment of cgi cruft
      require 'cgi'
      ENV.keys.select {|key| key =~ /^HTTP_/}.each do |key|
        ENV.delete key.dup.untaint
      end
      ::CGI::QueryExtension.public_instance_methods.each do |method|
        ENV.delete method.to_s.upcase
      end

      # run cmd and/or block
      system({'USER' => $USER, 'HOME' => $HOME}, cmd) if cmd
      yield if block_given?
    end
  end
end

Version data entries

29 entries across 29 versions & 1 rubygems

Version Path
wunderbar-1.3.4 lib/wunderbar/job-control.rb
wunderbar-1.3.3 lib/wunderbar/job-control.rb
wunderbar-1.3.2 lib/wunderbar/job-control.rb
wunderbar-1.3.1 lib/wunderbar/job-control.rb
wunderbar-1.3.0 lib/wunderbar/job-control.rb
wunderbar-1.2.10 lib/wunderbar/job-control.rb
wunderbar-1.2.9 lib/wunderbar/job-control.rb
wunderbar-1.2.8 lib/wunderbar/job-control.rb
wunderbar-1.2.7 lib/wunderbar/job-control.rb
wunderbar-1.2.6 lib/wunderbar/job-control.rb
wunderbar-1.2.5 lib/wunderbar/job-control.rb
wunderbar-1.2.4 lib/wunderbar/job-control.rb
wunderbar-1.2.3 lib/wunderbar/job-control.rb
wunderbar-1.2.2 lib/wunderbar/job-control.rb
wunderbar-1.2.1 lib/wunderbar/job-control.rb
wunderbar-1.2.0 lib/wunderbar/job-control.rb
wunderbar-1.1.2 lib/wunderbar/job-control.rb
wunderbar-1.1.1 lib/wunderbar/job-control.rb
wunderbar-1.1.0 lib/wunderbar/job-control.rb
wunderbar-1.0.28 lib/wunderbar/job-control.rb