root/trunk/tasks/backgroundrb_tasks.rake

Revision 326, 4.3 kB (checked in by gethema..@gmail.com, 2 months ago)

check in new backgroundrb code

Line 
1 namespace :backgroundrb do
2   def setup_queue_migration
3     config_file = "#{RAILS_ROOT}/config/database.yml"
4     require "erb"
5     require "active_record"
6     config = YAML.load(ERB.new(IO.read(config_file)).result)
7     env = ENV["RAILS_ENV"] || ENV["env"] || 'development'
8
9     ActiveRecord::Base.establish_connection(config[env])
10     migration_klass = Class.new(ActiveRecord::Migration) do
11       def self.up
12         create_table :bdrb_job_queues do |t|
13           t.column :args, :binary
14           t.column :worker_name, :string
15           t.column :worker_method, :string
16           t.column :job_key, :string
17           t.column :taken, :int
18           t.column :finished, :int
19           t.column :timeout, :int
20           t.column :priority, :int
21           t.column :submitted_at, :datetime
22           t.column :started_at, :datetime
23           t.column :finished_at, :datetime
24           t.column :archived_at, :datetime
25           t.column :tag, :string
26           t.column :submitter_info, :string
27           t.column :runner_info, :string
28           t.column :worker_key, :string
29         end
30       end
31
32       def self.down
33         drop_table :bdrb_job_queues
34       end
35     end
36     migration_klass.up
37   end
38
39   require 'yaml'
40   desc 'Setup backgroundrb in your rails application'
41   task :setup do
42     script_dest = "#{RAILS_ROOT}/script/backgroundrb"
43     script_src = File.dirname(__FILE__) + "/../script/backgroundrb"
44
45     FileUtils.chmod 0774, script_src
46
47     defaults = {:backgroundrb => {:ip => '0.0.0.0',:port => 11006 } }
48
49     config_dest = "#{RAILS_ROOT}/config/backgroundrb.yml"
50
51     unless File.exists?(config_dest)
52         puts "Copying backgroundrb.yml config file to #{config_dest}"
53         File.open(config_dest, 'w') { |f| f.write(YAML.dump(defaults)) }
54     end
55
56     unless File.exists?(script_dest)
57         puts "Copying backgroundrb script to #{script_dest}"
58         FileUtils.cp_r(script_src, script_dest)
59     end
60
61     workers_dest = "#{RAILS_ROOT}/lib/workers"
62     unless File.exists?(workers_dest)
63       puts "Creating #{workers_dest}"
64       FileUtils.mkdir(workers_dest)
65     end
66
67     test_helper_dest = "#{RAILS_ROOT}/test/bdrb_test_helper.rb"
68     test_helper_src = File.dirname(__FILE__) + "/../script/bdrb_test_helper.rb"
69     unless File.exists?(test_helper_dest)
70       puts "Copying Worker Test helper file #{test_helper_dest}"
71       FileUtils.cp_r(test_helper_src,test_helper_dest)
72     end
73
74     worker_env_loader_dest = "#{RAILS_ROOT}/script/load_worker_env.rb"
75     worker_env_loader_src = File.join(File.dirname(__FILE__),"..","script","load_worker_env.rb")
76     unless File.exists? worker_env_loader_dest
77       puts "Copying Worker envionment loader file #{worker_env_loader_dest}"
78       FileUtils.cp_r(worker_env_loader_src,worker_env_loader_dest)
79     end
80     begin
81       setup_queue_migration
82     rescue
83       error_msg = $!.message
84       puts error_msg.first(85)
85     end
86   end
87
88   desc "Create backgroundrb queue table"
89   task :create_queue do
90     setup_queue_migration
91   end
92
93   desc 'update backgroundrb config files from your rails application'
94   task :update do
95     temp_scripts = ["backgroundrb","load_worker_env.rb"].map {|x| "#{RAILS_ROOT}/script/#{x}"}
96     temp_scripts.each do |file_name|
97       if File.exists?(file_name)
98         puts "Removing #{file_name} ..."
99         FileUtils.rm(file_name,:force => true)
100       end
101     end
102     new_temp_scripts = ["backgroundrb","load_worker_env.rb"].map {|x| File.dirname(__FILE__) + "/../script/#{x}" }
103     new_temp_scripts.each do |file_name|
104       puts "Updating file #{File.expand_path(file_name)} ..."
105       FileUtils.cp_r(file_name,"#{RAILS_ROOT}/script/")
106     end
107   end
108
109   desc 'Remove backgroundrb from your rails application'
110   task :remove do
111     script_src = "#{RAILS_ROOT}/script/backgroundrb"
112     temp_scripts = ["backgroundrb","load_worker_env.rb"].map {|x| "#{RAILS_ROOT}/script/#{x}"}
113
114     if File.exists?(script_src)
115         puts "Removing #{script_src} ..."
116         FileUtils.rm(script_src, :force => true)
117     end
118
119     test_helper_src = "#{RAILS_ROOT}/test/bdrb_test_helper.rb"
120     if File.exists?(test_helper_src)
121       puts "Removing backgroundrb test helper.."
122       FileUtils.rm(test_helper_src,:force => true)
123     end
124
125     workers_dest = "#{RAILS_ROOT}/lib/workers"
126     if File.exists?(workers_dest) && Dir.entries("#{workers_dest}").size == 2
127         puts "#{workers_dest} is empty...deleting!"
128         FileUtils.rmdir(workers_dest)
129     end
130   end
131 end
Note: See TracBrowser for help on using the browser.