0.01
No commit activity in last 3 years
No release in over 3 years
Control Heroku from Ruby via its `heroku` shell command.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

>= 0
 Project Readme

Heroku::Commander

Gem Version Build Status Dependency Status Code Climate

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.