-
-
Save piclez/255 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'rfc822' | |
class Demo < ActiveRecord::Base | |
validates_presence_of :client, :message => "can't be blank" | |
validates_format_of :contact_email, | |
:with => RFC822::EmailAddress, | |
:message => "is not a valid email address" | |
validates_date :expiry_date, | |
:after => Proc.new { Date.today }, | |
:after_message => "must be in the future", | |
:allow_nil => true | |
serialize :manager, Outback::Manager | |
def before_create | |
write_attribute(:manager, Outback::YAML.load_file(File.join(RAILS_ROOT, 'lib', 'outback', 'tasks', 'sleepalot.yml'))) | |
end | |
def busy? | |
['rolling_out', 'rolling_back'].include? state | |
end | |
def rolled_out? | |
['rolled_out'].include? state | |
end | |
def rolled_back? | |
['rolled_back', nil].include? state | |
end | |
def rollout! | |
raise "Cannot roll out if already rolled out!" if rolled_out? | |
raise "Cannot roll out if already busy!" if busy? | |
self.state = 'rolling_out' | |
options = { :logfile => logfile, | |
:command => :rollout, | |
:demo => id } | |
job = Bj.submit("./script/runner ./lib/outback/run.rb", | |
:stdin => YAML::dump(options)).first | |
self.job_id = job.id | |
save | |
end | |
def job | |
begin | |
Bj.table.job.find(job_id) | |
rescue ActiveRecord::RecordNotFound | |
return nil | |
end | |
end | |
def logfile | |
File.join(RAILS_ROOT, 'log', "outback_demo_#{id}.log") | |
end | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Starting rollout. | |
Finished rollout. | |
#<Demo id: 2, client: "Client Name", url: nil, notes: nil, live: nil, created_at: "2008-07-21 20:52:21", updated_at: "2008-07-21 20:52:27", contact_email: "me@example.com", expiry_date: nil, state: "rolling_out", job_id: "2", manager: #<Outback::Manager:0x20c1064 @watcher=nil, @names={}, @direction=1, @tasks=[...stuff snipped...], @position=3>> | |
#<Demo id: 2, client: "Client Name", url: nil, notes: nil, live: nil, created_at: "2008-07-21 20:52:21", updated_at: "2008-07-21 20:52:27", contact_email: "me@example.com", expiry_date: nil, state: "rolling_out", job_id: "2", manager: #<Outback::Manager:0x20b816c @names={}, @tasks=[...stuff snipped...], @position=0>> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env ruby -w | |
# This should be run through './script/runner' | |
options = YAML.load($stdin.read) | |
demo = Demo.find(options[:demo]) | |
runner = Outback::Runner.new | |
runner.manager = demo.manager | |
runner.logger = Logger.new(options[:logfile]) | |
command = options[:command] | |
runner.run(command) | |
# We don't need to serialize the runner. | |
demo.manager.watcher = nil | |
raise "Could not save demo with updated manager!" unless demo.save | |
p demo | |
demo.reload | |
p demo |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment