mobilize-base 1.3 → 1.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,5 @@
1
1
  module Mobilize
2
2
  class Runner
3
- include Mobilize::RunnerHelper
4
3
  include Mongoid::Document
5
4
  include Mongoid::Timestamps
6
5
  field :path, type: String
@@ -12,6 +11,20 @@ module Mobilize
12
11
 
13
12
  index({ path: 1})
14
13
 
14
+ def headers
15
+ %w{name active trigger status stage1 stage2 stage3 stage4 stage5}
16
+ end
17
+
18
+ def title
19
+ r = self
20
+ r.path.split("/").first
21
+ end
22
+
23
+ def worker
24
+ r = self
25
+ Mobilize::Resque.find_worker_by_path(r.path)
26
+ end
27
+
15
28
  def Runner.find_by_path(path)
16
29
  Runner.where(:path=>path).first
17
30
  end
@@ -19,7 +32,6 @@ module Mobilize
19
32
  def Runner.find_by_title(title)
20
33
  Runner.where(:path=>"#{title}/jobs").first
21
34
  end
22
-
23
35
  def Runner.perform(id,*args)
24
36
  r = Runner.find_by_path(id)
25
37
  #get gdrive slot for read
@@ -29,18 +41,12 @@ module Mobilize
29
41
  return false
30
42
  end
31
43
  r.update_attributes(:started_at=>Time.now.utc)
32
- begin
33
- #make sure any updates to activity are processed first
34
- #as in when someone runs a "once" job that has completed
35
- r.update_gsheet(gdrive_slot)
36
- #read the jobs in the gsheet and update models with news
37
- r.read_gsheet(gdrive_slot)
38
- #queue up the jobs that are due and active
39
- rescue => exc
40
- #log the exception, but continue w job processing
41
- #This ensures jobs are still processed if google drive goes down
42
- r.update_status("Failed to read or update gsheet with #{exc.to_s} #{exc.backtrace.join(";")}")
43
- end
44
+ #make sure any updates to activity are processed first
45
+ #as in when someone runs a "once" job that has completed
46
+ r.update_gsheet(gdrive_slot)
47
+ #read the jobs in the gsheet and update models with news
48
+ r.read_gsheet(gdrive_slot)
49
+ #queue up the jobs that are due and active
44
50
  r.jobs.each do |j|
45
51
  begin
46
52
  if j.is_due?
@@ -58,32 +64,90 @@ module Mobilize
58
64
  r.update_attributes(:completed_at=>Time.now.utc)
59
65
  end
60
66
 
67
+ def dataset
68
+ r = self
69
+ Dataset.find_or_create_by_handler_and_path("gsheet",r.path)
70
+ end
71
+
61
72
  def Runner.find_or_create_by_path(path)
62
73
  Runner.where(:path=>path).first || Runner.create(:path=>path,:active=>true)
63
74
  end
64
75
 
76
+ def gbook(gdrive_slot)
77
+ r = self
78
+ title = r.path.split("/").first
79
+ Gbook.find_all_by_path(title,gdrive_slot).first
80
+ end
81
+
82
+ def gsheet(gdrive_slot)
83
+ r = self
84
+ u = r.user
85
+ jobs_sheet = Gsheet.find_by_path(r.path,gdrive_slot)
86
+ #make sure the user has a runner with a jobs sheet and has write privileges on the spreadsheet
87
+ unless (jobs_sheet and jobs_sheet.spreadsheet.acl_entry(u.email).ie{|e| e and e.role=="writer"})
88
+ #only give the user edit permissions if they're the ones
89
+ #creating it
90
+ jobs_sheet = Gsheet.find_or_create_by_path(r.path,gdrive_slot)
91
+ unless jobs_sheet.spreadsheet.acl_entry(u.email).ie{|e| e and e.role=="owner"}
92
+ jobs_sheet.spreadsheet.update_acl(u.email,"writer")
93
+ end
94
+ end
95
+ jobs_sheet.add_headers(r.headers)
96
+ #add url to dataset
97
+ Dataset.find_or_create_by_url("gsheet://#{r.path}").update_attributes(:http_url=>jobs_sheet.spreadsheet.human_url)
98
+ begin;jobs_sheet.delete_sheet1;rescue;end #don't care if sheet1 deletion fails
99
+ return jobs_sheet
100
+ end
101
+
65
102
  def read_gsheet(gdrive_slot)
66
103
  r = self
67
- #argument converts line breaks in cells to spaces
68
- gsheet_tsv = r.gsheet(gdrive_slot).to_tsv(" ")
104
+ gsheet_tsv = r.gsheet(gdrive_slot).read(Gdrive.owner_name)
69
105
  #turn it into a hash array
70
- gsheet_hashes = gsheet_tsv.tsv_to_hash_array
106
+ gsheet_jobs = gsheet_tsv.tsv_to_hash_array
71
107
  #go through each job, update relevant job with its params
72
108
  done_jobs = []
73
109
  #parse out the jobs and update the Job collection
74
- gsheet_hashes.each do |gsheet_hash|
110
+ gsheet_jobs.each_with_index do |rj,rj_i|
75
111
  #skip non-jobs or jobs without required values
76
- next if (gsheet_hash['name'].to_s.first == "#" or ['name','active','trigger','stage1'].select{|c| gsheet_hash[c].to_s.strip==""}.length>0)
77
- j = Job.update_by_user_name_and_hash(r.user.name,gsheet_hash)
112
+ next if (rj['name'].to_s.first == "#" or ['name','active','trigger','stage1'].select{|c| rj[c].to_s.strip==""}.length>0)
113
+ j = Job.find_or_create_by_path("#{r.path}/#{rj['name']}")
114
+ #update top line params
115
+ j.update_attributes(:active => rj['active'],
116
+ :trigger => rj['trigger'])
117
+ (1..5).to_a.each do |s_idx|
118
+ stage_string = rj["stage#{s_idx.to_s}"]
119
+ s = Stage.find_by_path("#{j.path}/stage#{s_idx.to_s}")
120
+ if stage_string.to_s.length==0
121
+ #delete this stage and all stages after
122
+ if s
123
+ j = s.job
124
+ j.stages[(s.idx-1)..-1].each{|ps| ps.delete}
125
+ #just in case
126
+ s.delete
127
+ end
128
+ break
129
+ elsif s.nil?
130
+ #create this stage
131
+ s = Stage.find_or_create_by_path("#{j.path}/stage#{s_idx.to_s}")
132
+ end
133
+ #parse command string, update stage with it
134
+ s_handler, call, param_string = [""*3]
135
+ stage_string.split(" ").ie do |spls|
136
+ s_handler = spls.first.split(".").first
137
+ call = spls.first.split(".").last
138
+ param_string = spls[1..-1].join(" ").strip
139
+ end
140
+ s.update_attributes(:call=>call, :handler=>s_handler, :param_string=>param_string)
141
+ end
78
142
  r.update_status("Updated #{j.path} stages at #{Time.now.utc}")
79
143
  #add this job to list of read ones
80
144
  done_jobs << j
81
145
  end
82
146
  #delete user jobs that are not included in Runner
83
- (r.jobs.map{|j| j.path} - done_jobs.map{|j| j.path}).each do |gsheet_hash_path|
84
- j = Job.where(:path=>gsheet_hash_path).first
147
+ (r.jobs.map{|j| j.path} - done_jobs.map{|j| j.path}).each do |rj_path|
148
+ j = Job.where(:path=>rj_path).first
85
149
  j.delete if j
86
- r.update_status("Deleted job:#{gsheet_hash_path}")
150
+ r.update_status("Deleted job:#{rj_path}")
87
151
  end
88
152
  r.update_status("jobs read at #{Time.now.utc}")
89
153
  return true
@@ -94,13 +158,48 @@ module Mobilize
94
158
  #there's nothing to update if runner has never had a completed at
95
159
  return false unless r.completed_at
96
160
  jobs_gsheet = r.gsheet(gdrive_slot)
97
- upd_jobs = r.jobs.select{|j| j.status_at and j.status_at.to_f > j.runner.completed_at.to_f}
161
+ upd_jobs = r.jobs.select{|j| j.status_at and j.status_at > j.runner.completed_at}
98
162
  upd_rows = upd_jobs.map{|j| {'name'=>j.name, 'active'=>j.active, 'status'=>j.status}}
99
163
  jobs_gsheet.add_or_update_rows(upd_rows)
100
164
  r.update_status("gsheet updated")
101
165
  return true
102
166
  end
103
167
 
168
+ def jobs(jname=nil)
169
+ r = self
170
+ js = Job.where(:path=>/^#{r.path.escape_regex}/).to_a
171
+ if jname
172
+ return js.sel{|j| j.name == jname}.first
173
+ else
174
+ return js
175
+ end
176
+ end
177
+
178
+ def user
179
+ r = self
180
+ user_name = r.path.split("_").second.split("(").first.split("/").first
181
+ User.where(:name=>user_name).first
182
+ end
183
+
184
+ def update_status(msg)
185
+ r = self
186
+ r.update_attributes(:status=>msg, :status_at=>Time.now.utc)
187
+ Mobilize::Resque.set_worker_args_by_path(r.path,{'status'=>msg})
188
+ return true
189
+ end
190
+
191
+ def is_working?
192
+ r = self
193
+ Mobilize::Resque.active_paths.include?(r.path)
194
+ end
195
+
196
+ def is_due?
197
+ r = self.reload
198
+ return false if r.is_working?
199
+ prev_due_time = Time.now.utc - Jobtracker.runner_read_freq
200
+ return true if r.started_at.nil? or r.started_at < prev_due_time
201
+ end
202
+
104
203
  def enqueue!
105
204
  r = self
106
205
  ::Resque::Job.create("mobilize",Runner,r.path,{})
@@ -2,7 +2,6 @@ module Mobilize
2
2
  class Stage
3
3
  include Mongoid::Document
4
4
  include Mongoid::Timestamps
5
- include Mobilize::StageHelper
6
5
  field :path, type: String
7
6
  field :handler, type: String
8
7
  field :call, type: String
@@ -17,6 +16,40 @@ module Mobilize
17
16
 
18
17
  index({ path: 1})
19
18
 
19
+ def idx
20
+ s = self
21
+ s.path.split("/").last.gsub("stage","").to_i
22
+ end
23
+
24
+ def out_dst
25
+ #this gives a dataset that points to the output
26
+ #allowing you to determine its size
27
+ #before committing to a read or write
28
+ s = self
29
+ Dataset.find_by_url(s.response['out_url']) if s.response and s.response['out_url']
30
+ end
31
+
32
+ def err_dst
33
+ #this gives a dataset that points to the output
34
+ #allowing you to determine its size
35
+ #before committing to a read or write
36
+ s = self
37
+ Dataset.find_by_url(s.response['err_url']) if s.response and s.response['err_url']
38
+ end
39
+
40
+ def params
41
+ s = self
42
+ p = YAML.easy_load(s.param_string)
43
+ raise "Must resolve to Hash" unless p.class==Hash
44
+ return p
45
+ end
46
+
47
+ def job
48
+ s = self
49
+ job_path = s.path.split("/")[0..-2].join("/")
50
+ Job.where(:path=>job_path).first
51
+ end
52
+
20
53
  def Stage.find_or_create_by_path(path)
21
54
  s = Stage.where(:path=>path).first
22
55
  s = Stage.create(:path=>path) unless s
@@ -47,11 +80,7 @@ module Mobilize
47
80
  s.update_attributes(:started_at=>Time.now.utc)
48
81
  s.update_status(%{Starting at #{Time.now.utc}})
49
82
  #get response by running method
50
- response = begin
51
- "Mobilize::#{s.handler.humanize}".constantize.send("#{s.call}_by_stage_path",s.path)
52
- rescue => exc
53
- {'err_str'=>"#{exc.to_s}\n#{exc.backtrace.to_a.join("\n")}", 'signal'=>500}
54
- end
83
+ response = "Mobilize::#{s.handler.humanize}".constantize.send("#{s.call}_by_stage_path",s.path)
55
84
  unless response
56
85
  #re-queue self if no response
57
86
  s.enqueue!
@@ -63,10 +92,10 @@ module Mobilize
63
92
  #retry
64
93
  s.update_attributes(:retries_done => s.retries_done.to_i + 1, :response => response)
65
94
  s.update_status(%{Retry #{s.retries_done.to_s} at #{Time.now.utc}})
66
- sleep s['delay'].to_i
67
95
  s.enqueue!
68
96
  else
69
97
  #sleep as much as user specifies
98
+ sleep s['delay'].to_i
70
99
  s.fail(response)
71
100
  end
72
101
  return true
@@ -82,7 +111,7 @@ module Mobilize
82
111
  r = j.runner
83
112
  dep_jobs = r.jobs.select do |dj|
84
113
  dj.active==true and
85
- dj.trigger.strip.downcase == "after #{j.name.downcase}"
114
+ dj.trigger.strip.downcase == "after #{j.name}"
86
115
  end
87
116
  #put begin/rescue so all dependencies run
88
117
  dep_jobs.each do |dj|
@@ -112,7 +141,7 @@ module Mobilize
112
141
  j = s.job
113
142
  r = j.runner
114
143
  u = r.user
115
- j.update_attributes(:active=>false) if s.params['always_on'].to_s=="false"
144
+ j.update_attributes(:active=>false)
116
145
  s.update_attributes(:failed_at=>Time.now.utc,:response=>response)
117
146
  stage_name = "#{j.name}_stage#{s.idx.to_s}.err"
118
147
  target_path = (r.path.split("/")[0..-2] + [stage_name]).join("/")
@@ -129,9 +158,10 @@ module Mobilize
129
158
  err_txt = ["response","\n",err_txt].join
130
159
  err_sheet.write(err_txt,u.name)
131
160
  #exception will be first row below "response" header
161
+ exc_to_s,backtrace = err_txt.split("\n").ie{|ea| [ea[1], ea[2..-1]]}
132
162
  s.update_status(status_msg)
133
163
  #raise the exception so it bubbles up to resque
134
- raise Exception,err_txt
164
+ raise Exception,exc_to_s,backtrace
135
165
  end
136
166
 
137
167
  def enqueue!
@@ -178,15 +208,14 @@ module Mobilize
178
208
  raise "incompatible target handler #{handler} for #{s.handler} stage"
179
209
  else
180
210
  begin
181
- #nil gdrive_slot for targets since there is no verification
182
- return "Mobilize::#{s.handler.downcase.capitalize}".constantize.path_to_dst(target_path,s.path,nil)
211
+ return "Mobilize::#{s.handler.downcase.capitalize}".constantize.path_to_dst(target_path,s.path)
183
212
  rescue => exc
184
213
  raise "Could not get #{target_path} with error: #{exc.to_s}"
185
214
  end
186
215
  end
187
216
  end
188
217
 
189
- def sources(gdrive_slot)
218
+ def sources
190
219
  #returns an array of Datasets corresponding to
191
220
  #items listed as sources in the stage params
192
221
  s = self
@@ -215,7 +244,7 @@ module Mobilize
215
244
  end
216
245
  begin
217
246
  stage_path = s.path
218
- dsts << "Mobilize::#{handler.downcase.capitalize}".constantize.path_to_dst(source_path,stage_path,gdrive_slot)
247
+ dsts << "Mobilize::#{handler.downcase.capitalize}".constantize.path_to_dst(source_path,stage_path)
219
248
  rescue => exc
220
249
  raise "Could not get #{source_path} with error: #{exc.to_s}"
221
250
  end
@@ -40,17 +40,17 @@ namespace :mobilize_base do
40
40
  Mobilize::Jobtracker.prep_workers
41
41
  end
42
42
  desc "Stop Jobtracker"
43
- task :stop_jobtracker do
43
+ task :stop do
44
44
  require 'mobilize-base'
45
45
  Mobilize::Jobtracker.stop!
46
46
  end
47
47
  desc "Start Jobtracker"
48
- task :start_jobtracker do
48
+ task :start do
49
49
  require 'mobilize-base'
50
50
  Mobilize::Jobtracker.start
51
51
  end
52
52
  desc "Restart Jobtracker"
53
- task :restart_jobtracker do
53
+ task :restart do
54
54
  require 'mobilize-base'
55
55
  Mobilize::Jobtracker.restart!
56
56
  end
@@ -66,19 +66,6 @@ namespace :mobilize_base do
66
66
  resque_redis_port_args = if Mobilize::Base.env == 'test'
67
67
  " -r localhost:#{Mobilize::Base.config('resque')['redis_port']}"
68
68
  end.to_s
69
- #determine view folder and override queues and working erbs
70
- require 'resque/server'
71
- view_dir = ::Resque::Server.views + "/"
72
- old_queues_erb_path = view_dir + "queues.erb"
73
- old_working_erb_path = view_dir + "working.erb"
74
- gem_dir = Gem::Specification.find_by_name("mobilize-base").gem_dir
75
- new_queues_erb_path = gem_dir + "/lib/mobilize-base/extensions/resque-server/views/queues.erb"
76
- new_working_erb_path = gem_dir + "/lib/mobilize-base/extensions/resque-server/views/working.erb"
77
- [old_queues_erb_path,old_working_erb_path].each{|p| File.delete(p) if File.exists?(p)}
78
- require 'fileutils'
79
- FileUtils.copy(new_queues_erb_path,old_queues_erb_path)
80
- FileUtils.copy(new_working_erb_path,old_working_erb_path)
81
- sleep 5 #give them time to die
82
69
  command = "bundle exec resque-web -p #{port.to_s} #{resque_web_extension_path} #{resque_redis_port_args}"
83
70
  `#{command}`
84
71
  end
@@ -1,5 +1,5 @@
1
1
  module Mobilize
2
2
  module Base
3
- VERSION = "1.3"
3
+ VERSION = "1.21"
4
4
  end
5
5
  end
data/lib/mobilize-base.rb CHANGED
@@ -60,18 +60,14 @@ module Mobilize
60
60
  end
61
61
  mongoid_config_path = "#{Mobilize::Base.root}/#{Mobilize::Base.config_dir}mongoid.yml"
62
62
  if File.exists?(mongoid_config_path)
63
+ require 'mongo'
63
64
  require 'mongoid'
64
- require 'mongoid-grid_fs'
65
65
  Mongoid.load!(mongoid_config_path, Mobilize::Base.env)
66
66
  require "mobilize-base/models/dataset"
67
67
  require "mobilize-base/models/user"
68
- require "mobilize-base/helpers/runner_helper"
69
68
  require "mobilize-base/models/runner"
70
- require "mobilize-base/helpers/job_helper"
71
69
  require "mobilize-base/models/job"
72
- require "mobilize-base/helpers/stage_helper"
73
70
  require "mobilize-base/models/stage"
74
-
75
71
  end
76
72
  require 'google_drive'
77
73
  require 'resque'
@@ -1,7 +1,10 @@
1
1
  ---
2
2
  development:
3
+ max_versions: 10 #number of versions of cache to keep in gridfs
3
4
  max_compressed_write_size: 1000000000 #~1GB
4
5
  test:
6
+ max_versions: 10 #number of versions of cache to keep in gridfs
5
7
  max_compressed_write_size: 1000000000 #~1GB
6
8
  production:
9
+ max_versions: 10 #number of versions of cache to keep in gridfs
7
10
  max_compressed_write_size: 1000000000 #~1GB
@@ -1,17 +1,17 @@
1
1
  ---
2
2
  development:
3
- max_cells: 50000 #current google limit is 400k cells per book but fails earlier
3
+ max_cells: 400000 #current google limit is 400k cells per book
4
4
  read_date_format: "%Y-%m-%d" #format to record when reading sheets
5
5
  sheet_date_format: "%m/%d/%Y" #format to use to parse sheets
6
6
  test:
7
- max_cells: 50000 #current google limit is 400k cells per book but fails earlier
7
+ max_cells: 400000 #current google limit is 400k cells per book
8
8
  read_date_format: "%Y-%m-%d" #format to record when reading sheets
9
9
  sheet_date_format: "%m/%d/%Y" #format to use to parse sheets
10
10
  staging:
11
- max_cells: 50000 #current google limit is 400k cells per book but fails earlier
11
+ max_cells: 400000 #current google limit is 400k cells per book
12
12
  read_date_format: "%Y-%m-%d" #format to record when reading sheets
13
13
  sheet_date_format: "%m/%d/%Y" #format to use to parse sheets
14
14
  production:
15
- max_cells: 50000 #current google limit is 400k cells per book but fails earlier
15
+ max_cells: 400000 #current google limit is 400k cells per book
16
16
  read_date_format: "%Y-%m-%d" #format to record when reading sheets
17
17
  sheet_date_format: "%m/%d/%Y" #format to use to parse sheets
@@ -22,11 +22,12 @@ Gem::Specification.new do |s|
22
22
  s.require_paths = ["lib"]
23
23
 
24
24
  s.add_runtime_dependency 'rake'
25
- s.add_runtime_dependency 'bson','1.8.4'
26
- s.add_runtime_dependency 'bson_ext','1.8.4'
25
+ s.add_runtime_dependency 'bson','1.6.1'
26
+ s.add_runtime_dependency 'bson_ext','1.6.1'
27
+ s.add_runtime_dependency 'mongo', '1.6.1'
27
28
  s.add_runtime_dependency "mongoid", "~>3.0.0"
28
- s.add_runtime_dependency 'mongoid-grid_fs'
29
- s.add_runtime_dependency 'resque', '1.24.0'
29
+ s.add_runtime_dependency 'redis',"~>3.0.0"
30
+ s.add_runtime_dependency 'resque','1.21.0'
30
31
  s.add_runtime_dependency 'google_drive','0.3.2'
31
32
  s.add_runtime_dependency 'popen4','0.1.2'
32
33
  s.add_runtime_dependency 'actionmailer','3.1.1'
@@ -64,7 +64,6 @@ describe "Mobilize" do
64
64
  test_1_tsv = Mobilize::Dataset.read_by_url(test_target_sheet_1_url,user_name,gdrive_slot)
65
65
  test_2_tsv = Mobilize::Dataset.read_by_url(test_target_sheet_1_url,user_name,gdrive_slot)
66
66
 
67
- assert test_1_tsv.to_s.length>0
68
67
  assert test_1_tsv == test_2_tsv
69
68
 
70
69
  puts "change first job to fail, wait for stages"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mobilize-base
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.3'
4
+ version: '1.21'
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-04-18 00:00:00.000000000 Z
12
+ date: 2013-03-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -34,7 +34,7 @@ dependencies:
34
34
  requirements:
35
35
  - - '='
36
36
  - !ruby/object:Gem::Version
37
- version: 1.8.4
37
+ version: 1.6.1
38
38
  type: :runtime
39
39
  prerelease: false
40
40
  version_requirements: !ruby/object:Gem::Requirement
@@ -42,7 +42,7 @@ dependencies:
42
42
  requirements:
43
43
  - - '='
44
44
  - !ruby/object:Gem::Version
45
- version: 1.8.4
45
+ version: 1.6.1
46
46
  - !ruby/object:Gem::Dependency
47
47
  name: bson_ext
48
48
  requirement: !ruby/object:Gem::Requirement
@@ -50,7 +50,7 @@ dependencies:
50
50
  requirements:
51
51
  - - '='
52
52
  - !ruby/object:Gem::Version
53
- version: 1.8.4
53
+ version: 1.6.1
54
54
  type: :runtime
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
@@ -58,7 +58,23 @@ dependencies:
58
58
  requirements:
59
59
  - - '='
60
60
  - !ruby/object:Gem::Version
61
- version: 1.8.4
61
+ version: 1.6.1
62
+ - !ruby/object:Gem::Dependency
63
+ name: mongo
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - '='
68
+ - !ruby/object:Gem::Version
69
+ version: 1.6.1
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - '='
76
+ - !ruby/object:Gem::Version
77
+ version: 1.6.1
62
78
  - !ruby/object:Gem::Dependency
63
79
  name: mongoid
64
80
  requirement: !ruby/object:Gem::Requirement
@@ -76,21 +92,21 @@ dependencies:
76
92
  - !ruby/object:Gem::Version
77
93
  version: 3.0.0
78
94
  - !ruby/object:Gem::Dependency
79
- name: mongoid-grid_fs
95
+ name: redis
80
96
  requirement: !ruby/object:Gem::Requirement
81
97
  none: false
82
98
  requirements:
83
- - - ! '>='
99
+ - - ~>
84
100
  - !ruby/object:Gem::Version
85
- version: '0'
101
+ version: 3.0.0
86
102
  type: :runtime
87
103
  prerelease: false
88
104
  version_requirements: !ruby/object:Gem::Requirement
89
105
  none: false
90
106
  requirements:
91
- - - ! '>='
107
+ - - ~>
92
108
  - !ruby/object:Gem::Version
93
- version: '0'
109
+ version: 3.0.0
94
110
  - !ruby/object:Gem::Dependency
95
111
  name: resque
96
112
  requirement: !ruby/object:Gem::Requirement
@@ -98,7 +114,7 @@ dependencies:
98
114
  requirements:
99
115
  - - '='
100
116
  - !ruby/object:Gem::Version
101
- version: 1.24.0
117
+ version: 1.21.0
102
118
  type: :runtime
103
119
  prerelease: false
104
120
  version_requirements: !ruby/object:Gem::Requirement
@@ -106,7 +122,7 @@ dependencies:
106
122
  requirements:
107
123
  - - '='
108
124
  - !ruby/object:Gem::Version
109
- version: 1.24.0
125
+ version: 1.21.0
110
126
  - !ruby/object:Gem::Dependency
111
127
  name: google_drive
112
128
  requirement: !ruby/object:Gem::Requirement
@@ -179,8 +195,6 @@ files:
179
195
  - lib/mobilize-base/extensions/google_drive/worksheet.rb
180
196
  - lib/mobilize-base/extensions/hash.rb
181
197
  - lib/mobilize-base/extensions/object.rb
182
- - lib/mobilize-base/extensions/resque-server/views/queues.erb
183
- - lib/mobilize-base/extensions/resque-server/views/working.erb
184
198
  - lib/mobilize-base/extensions/string.rb
185
199
  - lib/mobilize-base/extensions/yaml.rb
186
200
  - lib/mobilize-base/handlers/email.rb
@@ -190,9 +204,6 @@ files:
190
204
  - lib/mobilize-base/handlers/gridfs.rb
191
205
  - lib/mobilize-base/handlers/gsheet.rb
192
206
  - lib/mobilize-base/handlers/resque.rb
193
- - lib/mobilize-base/helpers/job_helper.rb
194
- - lib/mobilize-base/helpers/runner_helper.rb
195
- - lib/mobilize-base/helpers/stage_helper.rb
196
207
  - lib/mobilize-base/jobtracker.rb
197
208
  - lib/mobilize-base/models/dataset.rb
198
209
  - lib/mobilize-base/models/job.rb
@@ -228,7 +239,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
228
239
  version: '0'
229
240
  segments:
230
241
  - 0
231
- hash: -3969243247461811352
242
+ hash: -779257039154498150
232
243
  required_rubygems_version: !ruby/object:Gem::Requirement
233
244
  none: false
234
245
  requirements:
@@ -237,7 +248,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
237
248
  version: '0'
238
249
  segments:
239
250
  - 0
240
- hash: -3969243247461811352
251
+ hash: -779257039154498150
241
252
  requirements: []
242
253
  rubyforge_project: mobilize-base
243
254
  rubygems_version: 1.8.25
@@ -1,59 +0,0 @@
1
- <% @subtabs = resque.queues unless partial? || params[:id].nil? %>
2
-
3
- <% if queue = params[:id] %>
4
-
5
- <h1>Pending jobs on <span class='hl'><%= queue %></span></h1>
6
- <form method="POST" action="<%=u "/queues/#{queue}/remove" %>" class='remove-queue'>
7
- <input type='submit' name='' value='Remove Queue' onclick='return confirm("Are you absolutely sure? This cannot be undone.");' />
8
- </form>
9
- <p class='sub'>Showing <%= start = params[:start].to_i %> to <%= start + 20 %> of <b><%=size = resque.size(queue)%></b> jobs</p>
10
- <table class='jobs'>
11
- <tr>
12
- <th>Class</th>
13
- <th>Args</th>
14
- </tr>
15
- <% for job in (jobs = resque.peek(queue, start, 20)) %>
16
- <tr>
17
- <td class='class'><%= job['class'] %></td>
18
- <td class='args'><%=h job['args'].inspect %></td>
19
- </tr>
20
- <% end %>
21
- <% if jobs.empty? %>
22
- <tr>
23
- <td class='no-data' colspan='2'>There are no pending jobs in this queue</td>
24
- </tr>
25
- <% end %>
26
- </table>
27
- <%= partial :next_more, :start => start, :size => size, :per_page => 20 %>
28
- <% else %>
29
-
30
- <h1 class='wi'>Queues</h1>
31
- <p class='intro'>The list below contains all the registered queues with the number of jobs currently in the queue. Select a queue from above to view all jobs currently pending on the queue.</p>
32
- <table class='queues'>
33
- <tr>
34
- <th>Name</th>
35
- <th>Jobs</th>
36
- </tr>
37
- <!-- only show nonzero length queues-->
38
- <% resque.queues.select{|q| resque.size(q)>0}.sort_by { |q| q.to_s }.each do |queue| %>
39
- <tr>
40
- <td class='queue'><a class="queue" href="<%= u "queues/#{queue}" %>"><%= queue %></a></td>
41
- <td class='size'><%= resque.size queue %></td>
42
- </tr>
43
- <% end %>
44
- <% if failed_multiple_queues? %>
45
- <% Resque::Failure.queues.sort_by { |q| q.to_s }.each_with_index do |queue, i| %>
46
- <tr class="<%= Resque::Failure.count(queue).zero? ? "failed" : "failure" %><%= " first_failure" if i.zero? %>">
47
- <td class='queue failed'><a class="queue" href="<%= u "failed/#{queue}" %>"><%= queue %></a></td>
48
- <td class='size'><%= Resque::Failure.count(queue) %></td>
49
- </tr>
50
- <% end %>
51
- <% else %>
52
- <tr class="<%= Resque::Failure.count.zero? ? "failed" : "failure" %>">
53
- <td class='queue failed'><a class="queue" href="<%= u :failed %>">failed</a></td>
54
- <td class='size'><%= Resque::Failure.count %></td>
55
- </tr>
56
- <% end %>
57
- </table>
58
-
59
- <% end %>