Class: Ledmon::Monster::Deployer

Inherits:
Object
  • Object
show all
Defined in:
lib/ledmon/monster/deployer.rb

Instance Method Summary collapse

Instance Method Details

#deploy!(bundle_path:, &block) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/ledmon/monster/deployer.rb', line 5

def deploy!(bundle_path:, &block)
  require 'http'
  require 'json'

  response = HTTP.headers(build_headers).post(build_upload_url, form: { file: HTTP::FormData::File.new(bundle_path) })

  unless response.status.success?
    raise Ledmon::Error, "Deploy failed with status: #{response.status}"
  end

  buffer = ""
  response.body.each do |chunk|
    buffer += chunk

    while buffer.include?("\n")
      line, buffer = buffer.split("\n", 2)
      process_deploy_line(line, &block)
    end
  end

  # Process any remaining data in buffer
  process_deploy_line(buffer, &block) unless buffer.strip.empty?
end

#logs(&block) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/ledmon/monster/deployer.rb', line 29

def logs(&block)
  response = HTTP.headers(build_headers).get(build_logs_url)

  unless response.status.success?
    raise Ledmon::Error, "Logs failed with status: #{response.status}"
  end

  buffer = ""
  response.body.each do |chunk|
    buffer += chunk

    while buffer.include?("\n")
      line, buffer = buffer.split("\n", 2)
      process_log_line(line, &block)
    end
  end

  # Process any remaining data in buffer
  process_log_line(buffer, &block) unless buffer.strip.empty?
end