Module: BeanstalkdView::BeanstalkdUtils
- Included in:
- Server
- Defined in:
- lib/beanstalkd_view/beanstalkd_utils.rb
Defined Under Namespace
Classes: BadURL
Constant Summary collapse
- GUESS_PEEK_RANGE =
Default number of elements to use in peek-range guesses
100
Instance Method Summary collapse
- #add_chart_data_to_hash(tube, jobs, items) ⇒ Object
- #beanstalk ⇒ Object
- #beanstalk_address ⇒ Object
- #beanstalk_host_and_port(uri_string) ⇒ Object
- #beanstalk_url ⇒ Object
- #close_connection ⇒ Object
-
#get_chart_data_hash(tubes) ⇒ Object
Return the stats data in a format for the Bluff JS UI Charts.
-
#guess_max_peek_range(min) ⇒ Object
Pick a Minimum Peek Range Based on the minimum.
-
#guess_min_peek_range(tubes) ⇒ Object
Pick a Minimum Peek Range Based on minumum ready jobs on all tubes.
-
#job_to_hash(job) ⇒ Object
Convert Beaneater::Job to hash.
Instance Method Details
#add_chart_data_to_hash(tube, jobs, items) ⇒ Object
53 54 55 56 57 58 59 60 |
# File 'lib/beanstalkd_view/beanstalkd_utils.rb', line 53 def add_chart_data_to_hash(tube, jobs, items) if jobs > 0 datum = {} datum["label"] = tube.name datum["data"] = jobs items << datum end end |
#beanstalk ⇒ Object
9 10 11 |
# File 'lib/beanstalkd_view/beanstalkd_utils.rb', line 9 def beanstalk @@beanstalk ||= Beaneater.new(beanstalk_address) end |
#beanstalk_address ⇒ Object
18 19 20 21 |
# File 'lib/beanstalkd_view/beanstalkd_utils.rb', line 18 def beanstalk_address uris = beanstalk_url.split(/[\s,]+/) beanstalk_host_and_port(uris.first) end |
#beanstalk_host_and_port(uri_string) ⇒ Object
23 24 25 26 27 |
# File 'lib/beanstalkd_view/beanstalkd_utils.rb', line 23 def beanstalk_host_and_port(uri_string) uri = URI.parse(uri_string) raise(BadURL, uri_string) if uri.scheme != 'beanstalk' "#{uri.host}:#{uri.port || 11300}" end |
#beanstalk_url ⇒ Object
13 14 15 16 |
# File 'lib/beanstalkd_view/beanstalkd_utils.rb', line 13 def beanstalk_url return @@url if defined?(@@url) and @@url ENV['BEANSTALK_URL'] || 'beanstalk://127.0.0.1/' end |
#close_connection ⇒ Object
85 86 87 88 89 90 91 92 93 |
# File 'lib/beanstalkd_view/beanstalkd_utils.rb', line 85 def close_connection begin beanstalk.close rescue Beaneater::NotConnected # Ignore not being able to connect if trying to close ensure @@beanstalk = nil end end |
#get_chart_data_hash(tubes) ⇒ Object
Return the stats data in a format for the Bluff JS UI Charts
39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/beanstalkd_view/beanstalkd_utils.rb', line 39 def get_chart_data_hash(tubes) chart_data = {} chart_data["total_jobs_data"] = Hash.new chart_data["buried_jobs_data"] = Hash.new chart_data["total_jobs_data"]["items"] = Array.new chart_data["buried_jobs_data"]["items"] = Array.new tubes.each do |tube| stats = tube.stats add_chart_data_to_hash(tube, stats[:total_jobs], chart_data["total_jobs_data"]["items"]) add_chart_data_to_hash(tube, stats[:current_jobs_buried], chart_data["buried_jobs_data"]["items"]) end chart_data end |
#guess_max_peek_range(min) ⇒ Object
Pick a Minimum Peek Range Based on the minimum
81 82 83 |
# File 'lib/beanstalkd_view/beanstalkd_utils.rb', line 81 def guess_max_peek_range(min) (min+GUESS_PEEK_RANGE)-1 end |
#guess_min_peek_range(tubes) ⇒ Object
Pick a Minimum Peek Range Based on minumum ready jobs on all tubes
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'lib/beanstalkd_view/beanstalkd_utils.rb', line 63 def guess_min_peek_range(tubes) min = 0 tubes.each do |tube| response = tube.peek('ready') if response if min == 0 min = response.id.to_i else min = [min, response.id.to_i].min end end end # Add some jitter in the opposite direction of 1/4 range jitter_min = (min-(GUESS_PEEK_RANGE*0.25)).to_i [1, jitter_min].max end |
#job_to_hash(job) ⇒ Object
Convert Beaneater::Job to hash
30 31 32 33 34 35 36 |
# File 'lib/beanstalkd_view/beanstalkd_utils.rb', line 30 def job_to_hash(job) ret_value = {} job_stats = job.stats job_stats.keys.each { |key| ret_value[key] = job_stats[key] } ret_value['body'] = job.body.inspect ret_value end |