Sha256: 3ccb42507d6ab9dea454ed7eaec28964a3df4b05ac1c0e6631664a0bac612cdc

Contents?: true

Size: 1.66 KB

Versions: 25

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

25 entries across 25 versions & 1 rubygems

Version Path
vedeu-0.5.2 lib/vedeu/distributed/subprocess.rb
vedeu-0.5.1 lib/vedeu/distributed/subprocess.rb
vedeu-0.5.0 lib/vedeu/distributed/subprocess.rb
vedeu-0.4.65 lib/vedeu/distributed/subprocess.rb
vedeu-0.4.64 lib/vedeu/distributed/subprocess.rb