digitalocean
digitalocean copied to clipboard
The easiest and most complete rubygem for DigitalOcean.
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.
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
- Fork it
- Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - 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
