class GV::Valley::Deployer
Public Instance Methods
deploy(name, &block)
click to toggle source
deploys app
# File lib/gv/valley/deployer.rb, line 18 def deploy name, &block # find or create app unless app = App.find(name) app = App.create(name) end # set block for output helpers @block = block indicate "Deploying App" # read procfile host = GV::Valley::Runner.random_service procfile = host.run(app["name"], "cat /app/Procfile") procfile_types = YAML.load(procfile).keys stop app # add new Procfile process types or reset jobs array for existing types procfile_types.each do |type| unless app["ps"].keys.include? type app["ps"][type] = {"scale" => 1, "containers" => []} else app["ps"][type]["containers"] = [] end end app.save # remove the old types app["ps"].keys.each do |type| unless procfile_types.include? type app["ps"].delete(type) end end app.save start app app.save end
start(app, &block)
click to toggle source
starts all procfile processes
# File lib/gv/valley/deployer.rb, line 79 def start app, &block # run available process types app["ps"].each do |type,ps| ps["scale"].times do |index| host = GV::Valley::Runner.random_service app["ps"][type]["containers"] << host.start(app["name"], type, index, &block) end end end
stop(app, &block)
click to toggle source
stops all running procfile processes
# File lib/gv/valley/deployer.rb, line 66 def stop app, &block # stop and remove all running procfile processes tuple = [:ps, /#{app['name']}\./, nil, nil ] while (self.class.space.read(tuple,0) rescue nil) do if host = (self.class.space.take(tuple,0)[2] rescue nil) host.remove app["name"] end end end
Private Instance Methods
indicate(string)
click to toggle source
# File lib/gv/valley/deployer.rb, line 91 def indicate string say %(-----> #{string}), &@block end
say(string)
click to toggle source
# File lib/gv/valley/deployer.rb, line 95 def say string pipe %(echo '\e[1G#{string}'), &@block end