long running tasks
the install for an operating system on a gridcolo virtual machine is a long running process that is started by clicking on a link. this is one way to kick off a long-running process in rails.
def install_os(distro)
raise "install on non-root partition attempted." if !root_mount?
raise "installation already in progress" if install_progressing?
self.distro = "* installing #{distro}"
self.save!
sys="#{RAILS_ROOT}/script/runner " +
"\"DiskPartition.install_os(#{self.id},\'#{distro}\')\" &"
unix_shell(sys)
end
def self.install_os(id, distro)
dp = DiskPartition.find(id)
raise "installation already in progress" if dp.install_progressing?
sys = "ssh #{dp.box.hostname} "+
"/usr/local/bin/gc_install.sh #{dp.mount_code} #{distro}"
unix_shell(sys) or raise "OS install failed for distro #{distro} " +
"on mount #{mount_code} on box #{box.id}"
dp.distro = "#{distro}"
dp.save!
end
that gets the process started, and leaves an indication that the process is in motion.