Class: Vines::Services::Config::Host

Inherits:
Object
  • Object
show all
Defined in:
lib/vines/services/config.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, &block) ⇒ Host

Returns a new instance of Host.



56
57
58
59
60
61
62
63
64
65
# File 'lib/vines/services/config.rb', line 56

def initialize(name, &block)
  @name, @storage, @uploads, @upstream = name, nil, nil, []
  instance_eval(&block)
  raise "storage required for #{@name}" unless @storage
  raise "upstream connection required for #{@name}" if @upstream.empty?
  unless @uploads
    @uploads = File.expand_path('data/upload')
    FileUtils.mkdir_p(@uploads)
  end
end

Instance Attribute Details

#nameObject (readonly)

Returns the value of attribute name.



54
55
56
# File 'lib/vines/services/config.rb', line 54

def name
  @name
end

Instance Method Details

#startObject



92
93
94
95
96
97
98
99
100
101
# File 'lib/vines/services/config.rb', line 92

def start
  @upstream.each do |info|
    stream = Vines::Services::Connection.new(
      host:     info[:host],
      port:     info[:port],
      password: info[:password],
      vhost:    self)
    stream.start
  end
end

#storage(name = nil, &block) ⇒ Object



77
78
79
80
81
82
83
84
# File 'lib/vines/services/config.rb', line 77

def storage(name=nil, &block)
  if name
    raise "one storage mechanism per host allowed" if @storage
    @storage = Storage.from_name(name, &block)
  else
    @storage
  end
end

#uploads(dir = nil) ⇒ Object



67
68
69
70
71
72
73
74
75
# File 'lib/vines/services/config.rb', line 67

def uploads(dir=nil)
  return @uploads unless dir
  @uploads = File.expand_path(dir)
  begin
    FileUtils.mkdir_p(@uploads)
  rescue
    raise "can't create #{@uploads}"
  end
end

#upstream(host, port, password) ⇒ Object



86
87
88
89
90
# File 'lib/vines/services/config.rb', line 86

def upstream(host, port, password)
  raise 'host, port, and password required for upstream connections' unless
    host && port && password
  @upstream << {host: host, port: port, password: password}
end