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