Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Master the Heroku CLI from Ruby.

branch: master
README.md

Heroku::Commander Build Status

Master the Heroku CLI from Ruby.

Usage

Add heroku and heroku-commander to Gemfile.

gem "heroku"
gem "heroku-commander"

Heroku Configuration

Returns a hash of an application's configuration (output from heroku config).

commander = Heroku::Commander.new({ :app => "heroku-commander" })
commander.config # => a hash of all settings for the heroku-commander app

Heroku Processes

Returns or yields an array of processes by running heroku ps.

commander = Heroku::Commander.new({ :app => "heroku-commander" })
commander.processes do |process|
  # try process.pid and process.status
end

Heroku Run

Executes a command via heroku run, pipes and returns output lines. Unlike the heroku client, this also checks the process return code and raises a Heroku::Commander::Errors::CommandError if the latter is not zero, which makes this suitable for Rake tasks.

commander = Heroku::Commander.new({ :app => "heroku-commander" })
commander.run "uname -a" # => [ "Linux 2.6.32-348-ec2 #54-Ubuntu SMP x86_64 GNU" ]

You can specify the dyno size with size.

commander.run "uname -a", { size: "2X" }

Heroku Detached Run

Executes a command via heroku run:detached, spawns a heroku logs --tail -p pid for the process started on Heroku, pipes and returns output lines. This also checks the process return code and raises a Heroku::Commander::Errors::CommandError if the latter is not zero.

commander = Heroku::Commander.new({ :app => "heroku-commander" })
commander.run("uname -a", { :detached => true }) # => [ "Linux 2.6.32-348-ec2 #54-Ubuntu SMP x86_64 GNU" ]

You can examine the output from heroku logs --tail -p pid line-by-line.

commander.run("ls -R", { :detached => true }) do |line|
  # each line from the output of the command
end

You can pass the following options along with :detached:

  • size: dyno size, eg. 2X for double-dynos.
  • tail_timeout: number of seconds to wait before terminating heroku logs --tail, expecting more output (defaults to 5).
  • tail_retries: number of times to restart the tail process on error (defaults to 3).

For more information about Heroku one-off dynos see this documentation.

More Examples

See examples for more.

Contributing

Fork the project. Make your feature addition or bug fix with tests. Send a pull request. Bonus points for topic branches.

Copyright and License

MIT License, see LICENSE for details.

(c) 2013 Daniel Doubrovkine, Frank Macreery, Artsy Inc.

Something went wrong with that request. Please try again.