Class: Pantry::Commands::UpdateApplication

Inherits:
Pantry::Command show all
Defined in:
lib/pantry/commands/update_application.rb

Overview

Upload and save new configuration for an Application

See EditApplication for more information

Instance Method Summary collapse

Methods inherited from Pantry::Command

command, #finished, #finished?, message_type, #prepare_message, #receive_client_response, #receive_response, #receive_server_response, #send_request, #send_request!, #server_or_client, #server_or_client=, #wait_for_finish

Constructor Details

#initialize(application_name = nil, config_body = nil) ⇒ UpdateApplication

Returns a new instance of UpdateApplication.



9
10
11
12
# File 'lib/pantry/commands/update_application.rb', line 9

def initialize(application_name = nil, config_body = nil)
  @application_name = application_name
  @config_body      = config_body
end

Instance Method Details

#perform(message) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/pantry/commands/update_application.rb', line 21

def perform(message)
  application_name = message.body[0]
  config_body      = message.body[1]

  app_config_file = Pantry.root.join("applications", application_name, "config.yml")
  FileUtils.mkdir_p(File.dirname(app_config_file))

  begin
    Psych.parse(config_body, "config.yml")
  rescue => ex
    # Invalid YAML, don't save!
    return [false, ex.message]
  end

  File.open(app_config_file, "w+") do |file|
    file.write(config_body)
  end

  true
end

#to_messageObject



14
15
16
17
18
19
# File 'lib/pantry/commands/update_application.rb', line 14

def to_message
  super.tap do |msg|
    msg << @application_name
    msg << @config_body
  end
end