Sha256: b3550fca637db59fa351ad8b31cd7279f18d6f9bbca895cacc58a9004004ebee

Contents?: true

Size: 1.66 KB

Versions: 24

Compression:

Stored size: 1.66 KB

Contents

module Vedeu

  # @example
  #   Vedeu::TestApplication.build
  class Subprocess

    # @param (see #initialize)
    def self.execute!(application)
      new(application).execute!
    end

    # Returns a new instance of Vedeu::Subprocess.
    #
    # @param application [Vedeu::TestApplication]
    # @return [Vedeu::Subprocess]
    def initialize(application)
      @application = application
      @pid         = nil
    end

    # :nocov:
    # @return [Array]
    def execute!
      file_open && file_write && file_close

      @pid = fork do
        exec(file_path)
      end

      Process.detach(@pid)

      self
    end
    # :nocov:

    # Sends the KILL signal to the process.
    #
    # @return [void]
    def kill
      Process.kill('KILL', pid)

      file_unlink
    end

    protected

    # @!attribute [r] application
    # @return [Vedeu::TestApplication]
    attr_reader :application

    # @!attribute [r] pid
    # @return [Fixnum]
    attr_reader :pid

    private

    # @return [String]
    def command
      "ruby #{file_path}"
    end

    # @return [Fixnum] The number of bytes written.
    def file_write
      file.write(application)
    end

    # @return [NilClass]
    def file_close
      file.close
    end

    # @return [Fixnum] The number of files removed; 1.
    def file_unlink
      File.unlink("/tmp/foo_#{timestamp}")
    end

    # return [String]
    def file_path
      file.path
    end

    # @return [File]
    def file_open
      @file ||= File.new("/tmp/foo_#{timestamp}", 'w', 0755)
    end
    alias_method :file, :file_open

    # return [Fixnum]
    def timestamp
      @timestamp ||= Time.now.to_i
    end

  end # Subprocess

end # Vedeu

Version data entries

24 entries across 24 versions & 1 rubygems

Version Path
vedeu-0.4.63 lib/vedeu/distributed/subprocess.rb
vedeu-0.4.62 lib/vedeu/distributed/subprocess.rb
vedeu-0.4.61 lib/vedeu/distributed/subprocess.rb
vedeu-0.4.60 lib/vedeu/distributed/subprocess.rb
vedeu-0.4.59 lib/vedeu/distributed/subprocess.rb
vedeu-0.4.58 lib/vedeu/distributed/subprocess.rb
vedeu-0.4.57 lib/vedeu/distributed/subprocess.rb
vedeu-0.4.56 lib/vedeu/distributed/subprocess.rb
vedeu-0.4.55 lib/vedeu/distributed/subprocess.rb
vedeu-0.4.54 lib/vedeu/distributed/subprocess.rb
vedeu-0.4.53 lib/vedeu/distributed/subprocess.rb
vedeu-0.4.52 lib/vedeu/distributed/subprocess.rb
vedeu-0.4.51 lib/vedeu/distributed/subprocess.rb
vedeu-0.4.50 lib/vedeu/distributed/subprocess.rb
vedeu-0.4.49 lib/vedeu/distributed/subprocess.rb
vedeu-0.4.48 lib/vedeu/distributed/subprocess.rb
vedeu-0.4.47 lib/vedeu/distributed/subprocess.rb
vedeu-0.4.46 lib/vedeu/distributed/subprocess.rb
vedeu-0.4.45 lib/vedeu/distributed/subprocess.rb
vedeu-0.4.44 lib/vedeu/distributed/subprocess.rb