Class: Capistrano::DockerCloud::Base

Inherits:
Object
  • Object
show all
Includes:
Helpers::CollectionHelper
Defined in:
lib/capistrano/docker-cloud/base.rb

Direct Known Subclasses

Service, Stack

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Helpers::CollectionHelper

#first_or_raise_error!

Class Method Details

.belongs_to(name) ⇒ Object

Rails like belongs_to association



57
58
59
60
61
62
# File 'lib/capistrano/docker-cloud/base.rb', line 57

def self.belongs_to(name)
  define_method("#{name.to_s}=") do |object|
    instance_variable_set("@#{name.to_s}", object)
  end
  define_method("#{name.to_s}") { instance_variable_get("@#{name.to_s}") }
end

.configure(username, api_key) ⇒ Object



44
45
46
47
# File 'lib/capistrano/docker-cloud/base.rb', line 44

def self.configure(username, api_key)
  @@dockercloud_username = username
  @@dockercloud_api_key = api_key
end

.connectionObject



49
50
51
52
# File 'lib/capistrano/docker-cloud/base.rb', line 49

def self.connection
  @@connection ||= ::DockerCloud::Client.new(@@dockercloud_username,
                                             @@dockercloud_api_key)
end

.find(uuid) ⇒ Object



17
18
19
20
21
22
23
# File 'lib/capistrano/docker-cloud/base.rb', line 17

def self.find(uuid)
  object = resource.get(uuid)
  return object if object
  raise Capistrano::DockerCloud::RecordNotFound
rescue RestClient::ResourceNotFound => error
  puts "ERROR: #{error.response}"
end

.find_by(options = {}) ⇒ Object



25
26
27
28
29
30
31
32
# File 'lib/capistrano/docker-cloud/base.rb', line 25

def self.find_by(options = {})
  case
  when options.key?(:name)
    new(find_by_name(options[:name]))
  else
    raise "You can only search #{subclass_name} by `:name`."
  end
end

.find_by_name(name) ⇒ Object



34
35
36
37
38
# File 'lib/capistrano/docker-cloud/base.rb', line 34

def self.find_by_name(name)
  resource.all.detect do |stack|
    stack.name.downcase == name
  end
end

.redeploy(uuid) ⇒ Object



64
65
66
# File 'lib/capistrano/docker-cloud/base.rb', line 64

def self.redeploy(uuid)
  resource.redeploy(uuid)
end

.resourceObject



40
41
42
# File 'lib/capistrano/docker-cloud/base.rb', line 40

def self.resource
  connection.send("#{subclass_name}")
end

.subclass_nameObject

~~~~ Class Methods ~~~~



12
13
14
15
# File 'lib/capistrano/docker-cloud/base.rb', line 12

def self.subclass_name
  # FIXME : Find a better way to archive this.
  ancestors.first.to_s.split('::').last.downcase + 's'
end

Instance Method Details

#connectionObject

~~~~ Instance Methods ~~~~



69
70
71
# File 'lib/capistrano/docker-cloud/base.rb', line 69

def connection
  self.class.connection
end

#redeployObject



77
78
79
# File 'lib/capistrano/docker-cloud/base.rb', line 77

def redeploy
  self.class.redeploy(uuid)
end

#reload!Object



73
74
75
# File 'lib/capistrano/docker-cloud/base.rb', line 73

def reload!
  initialize(self.class.find(uuid))
end