Project

subprocess

0.1
Low commit activity in last 3 years
There's a lot of open issues
A long-lived project that still receives updates
Control and communicate with spawned processes
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
 Dependencies

Development

~> 5.0
>= 0
>= 0
>= 0
 Project Readme

Subprocess Ruby Yard Docs

Jacques Cousteau Submarine

A solid subprocess library for ruby, inspired by python's.

Installation

The recommended way of installing subprocess is through Rubygems:

$ gem install subprocess

You can also build subprocess from source by running:

$ gem build subprocess.gemspec

Usage

Full documentation is on RubyDoc. A few examples:

require 'subprocess'

Check user's animal allegiances:

begin
  Subprocess.check_call(['grep', '-q', 'llamas', '~/favorite_animals'])
rescue Subprocess::NonZeroExit => e
  puts e.message
  puts "Why aren't llamas one of your favorite animals?"
end

Parse the output of uptime(1) to find the system's load:

system_load = Subprocess.check_output(['uptime']).split(' ').last(3)

Send mail to your friends with sendmail(1):

Subprocess.check_call(%W{sendmail -t}, :stdin => Subprocess::PIPE) do |p|
  p.communicate <<-EMAIL
From: alpaca@example.com
To: llama@example.com
Subject: I am so fluffy.

SO FLUFFY!
http://upload.wikimedia.org/wikipedia/commons/3/3e/Unshorn_alpaca_grazing.jpg
  EMAIL
end

Most of the documentation for Python's subprocess module applies equally well to this gem as well. While there are a few places when our semantics differs from Python's, users of the Python module should largely feel at home using subprocess. We have attempted to document all of the differences, but if we have missed something, please file an issue.

Maintenance

Steps to release a new version:

# Work directly on master
git checkout master

# -- edit version in lib/subprocess/version.rb --

# Update RBI files
bundle exec rake sord

# Subsequent commands reference the version
VERSION=1.5.5
git commit -am "Bump version to $VERSION"
git tag "v$VERSION"
git push origin master --tags
bundle exec rake publish

If you get errors, ask someone to add you to bindings/rubygems-api-key in Vault or ask someone who already has permissions. See http://go/password-vault

Acknowledgements

Many thanks to Bram Swenson, the author of the old subprocess gem, for graciously letting us use the name.