The easiest and most complete rubygem for DigitalOcean.
Ruby
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib
spec
.gitignore
.rspec
.travis.yml
Gemfile
LICENSE.txt
README.md
Rakefile
digitalocean-rubygem.jpg Add graphic Feb 11, 2014
digitalocean.gemspec
example.png Add example Feb 9, 2014

README.md

Donate

If you found this library useful, donate some CPU cycles to this project by clicking above. Thank you! 😇

Digitalocean Rubygem

The easiest and most complete rubygem for DigitalOcean.

NOTICE: This is a DigitalOcean V1 API client. It supports everything, the V1 API can do with a simple interface written in Ruby. Use DropletKit for consuming the DigitalOcean V2 API.

Build Status Gem Version

Digitalocean.client_id  = "your_client_id"
Digitalocean.api_key    = "your_api_key"
result = Digitalocean::Droplet.all
# =>
# <RecursiveOpenStruct status="OK", droplets=[
#   {"id"=>12345, "name"=>"dev", "image_id"=>2676, "size_id"=>63, "region_id"=>3, "backups_active"=>false, "ip_address"=>"198.555.55.55", "private_ip_address"=>nil, "locked"=>false, "status"=>"active", "created_at"=>"2013-06-12T03:07:14Z"},
#   {"id"=>234674, "name"=>"server2", "image_id"=>441012, "size_id"=>62, "region_id"=>1, "backups_active"=>false, "ip_address"=>"192.555.55.56", "private_ip_address"=>nil, "locked"=>false, "status"=>"active", "created_at"=>"2013-06-17T00:30:12Z"}
# ]>
#

result.status
result.droplets
result.droplets.first.ip_address

Installation

Add this line to your application's Gemfile:

gem 'digitalocean'

And then execute:

bundle

Or install it yourself as:

gem install digitalocean

Then in your application initialize the gem:

Digitalocean.client_id  = "your_client_id"
Digitalocean.api_key    = "your_api_key"

You can find your keys at https://cloud.digitalocean.com/api_access

Usage

List Droplets

Digitalocean::Droplet.all

Find Droplet

Digitalocean::Droplet.find("id_of_droplet")

Create Droplet

Digitalocean::Droplet.create({:name => droplet_name, :size_id => size_id, :image_id => image_id, :region_id => region_id})

Available Commands

Digitalocean::Domain.all
Digitalocean::Domain.find(id)
Digitalocean::Domain.create({name: name, ip_address: ip_address})
Digitalocean::Domain.destroy(id)

Digitalocean::Droplet.all
Digitalocean::Droplet.find(id)
Digitalocean::Droplet.rename(id, {name: name})
Digitalocean::Droplet.reboot(id)
Digitalocean::Droplet.power_cycle(id)
Digitalocean::Droplet.shutdown(id)
Digitalocean::Droplet.power_off(id)
Digitalocean::Droplet.power_on(id)
Digitalocean::Droplet.snapshot(id, {name: name})
Digitalocean::Droplet.create({name: name, size_id: size_id, image_id: image_id, region_id: region_id, ssh_key_ids: ssh_key_ids})
Digitalocean::Droplet.destroy(id)
Digitalocean::Droplet.resize(id, {size_id: size_id})

Digitalocean::Image.all
Digitalocean::Image.all({filter: "my_images"})
Digitalocean::Image.find(id)
Digitalocean::Image.destroy(id)
Digitalocean::Image.transfer(id, {region_id: region_id})

Digitalocean::Record.all(domain_id)
Digitalocean::Record.find(domain_id, record_id)
Digitalocean::Record.create(domain_id, {record_type: record_type, data: data})
Digitalocean::Record.edit(domain_id, record_id, {record_type: record_type, data: data})
Digitalocean::Record.destroy(domain_id, record_id)

Digitalocean::Region.all
Digitalocean::Region.find(region_id)

Digitalocean::Size.all
Digitalocean::Size.find(size_id)

Digitalocean::SshKey.all
Digitalocean::SshKey.find(id)
Digitalocean::SshKey.create({name: name, ssh_pub_key: ssh_pub_key}) # Keep in mind you have to use CGI::escape for your ssh_pub_key

Digitalocean::Event.find(id)

Example

There is a digitalocean-rubygem-example to help jumpstart your development.[tada]

Options

Digitalocean.verify_ssl = false # optionally set this to false. defaults to true.

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

When adding methods, add to the list of DEFINITIONS in lib/digitalocean.rb. Additionally, write a spec and add it to the list in the README.

Running Specs

bundle exec rspec spec/*

Publish to RubyGems.org

You first need to request access from scottmotte.

gem build digitalocean.gemspec
gem push digitalocean-1.0.1.gem