| 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 |
|---|