sidekiq-spy 0.3.0 → 0.3.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b36dea1a5c807a96adeb6f29737175c479fa5e17
4
- data.tar.gz: b6f96e42e80c5af6a31c7ee959c2b137c5ab68b4
3
+ metadata.gz: 7c1eeb7d31dc8ab0fc09db02331d9116b847af2d
4
+ data.tar.gz: 6fcef234faf6569e59c79195bcd657a5751e82ed
5
5
  SHA512:
6
- metadata.gz: 675ab03fb9c9ca6069c8c92f6bac13c829be63b83f6e1fcb8c0ac36c4e34e20c28bf3b6f1a83039d79a1d2902a2fac34015cb34103843e862a5d8c419c20b138
7
- data.tar.gz: ed53c6bd5d7a6ec01e18a91e056dee64fe3c8067dbef7d89614a439d84e2c0aa33a15f14253a1b0fb56fdcc8cf94231c5cf76aea97cfc6385636ca78bc53028e
6
+ metadata.gz: 5495713387031f47cdea190c120b51a1226a05b2cbf95e7dc6b83310f40bf0034c5dfc407d01445df23420953b4833d460fdb40dadde42d1af45d3079552d057
7
+ data.tar.gz: 868f3381360522b426f5ae2ac0565cc3e7860c55d0a6afb449fc2e2104c70529473fafbe49163ad0e9bb59a6dd5af0526f52f5821baa3456e6af98ce1b6c386d
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- ruby-2.0.0
1
+ ruby-2.1.0
data/.travis.yml CHANGED
@@ -1,9 +1,12 @@
1
1
  language: ruby
2
+ before_install:
3
+ - "gem install bundler -v '~> 1.5, != 1.5.0'"
2
4
  rvm:
5
+ - 2.1.0
3
6
  - 2.0.0
4
7
  - 1.9.3
5
8
  - jruby-19mode
6
- - rbx-19mode
9
+ - rbx-2.1.1
7
10
  notifications:
8
11
  email:
9
12
  recipients:
@@ -11,4 +14,4 @@ notifications:
11
14
  matrix:
12
15
  allow_failures:
13
16
  - rvm: jruby-19mode
14
- - rvm: rbx-19mode
17
+ - rvm: rbx-2.1.1
data/CHANGELOG.md CHANGED
@@ -6,6 +6,13 @@ For many of commits by [tiredpixel](http://www.tiredpixel.com), the commit
6
6
  message provides information and examples.
7
7
 
8
8
 
9
+ ## 0.3.1
10
+
11
+ - major refactoring of data structures
12
+ - [#1] `Spy::Stats` data+refresh pattern like `Spy::Workers`
13
+ - curses fix for Ruby 2.1.0, which is now supported
14
+
15
+
9
16
  ## 0.3.0
10
17
 
11
18
  - sporadic screen-misdraws fix
data/ext/mkrf_conf.rb ADDED
@@ -0,0 +1,27 @@
1
+ require 'rubygems/dependency_installer'
2
+
3
+ # SEE: http://en.wikibooks.org/wiki/Ruby_Programming/RubyGems#How_to_install_different_versions_of_gems_depending_on_which_version_of_ruby_the_installee_is_using
4
+
5
+ di = Gem::DependencyInstaller.new
6
+
7
+ begin
8
+ if RUBY_VERSION >= '2.1'
9
+ puts "Installing curses because Ruby #{RUBY_VERSION}"
10
+
11
+ # BEWARE: repetition; SEE: sidekiq-spy.gemspec
12
+ di.install "curses", "~> 1.0"
13
+ else
14
+ puts "Not installing curses because Ruby #{RUBY_VERSION}"
15
+ end
16
+ rescue => e
17
+ warn "#{$0}: #{e}"
18
+
19
+ exit!
20
+ end
21
+
22
+ puts "Writing fake Rakefile"
23
+
24
+ # Write fake Rakefile for rake since Makefile isn't used
25
+ File.open(File.join(File.dirname(__FILE__), 'Rakefile'), 'w') do |f|
26
+ f.write("task :default" + $/)
27
+ end
@@ -30,6 +30,8 @@ module SidekiqSpy
30
30
  @window = Curses::Window.new(@height, @width, @top, @left)
31
31
 
32
32
  @subpanels = build_subpanels(structure)
33
+
34
+ @spies = {} # data sources for #structure
33
35
  end
34
36
 
35
37
  def close
@@ -37,6 +39,8 @@ module SidekiqSpy
37
39
  end
38
40
 
39
41
  def refresh
42
+ @spies.each { |_, s| s.refresh } # refresh data sources
43
+
40
44
  @subpanels.each(&:refresh) # build changes
41
45
 
42
46
  @window.refresh # push changes to window
@@ -1,3 +1,6 @@
1
+ require 'time'
2
+
3
+
1
4
  module SidekiqSpy
2
5
  module Display
3
6
  module Panels
@@ -4,20 +4,12 @@ module SidekiqSpy
4
4
  class Queues < Display::Panel
5
5
 
6
6
  def initialize(height, width, top, left)
7
- @height = height # #structure needs this before #initialize ends
7
+ super(height, width, top, left, structure(height), :divider_r => " ")
8
8
 
9
- super(height, width, top, left, structure, :divider_r => " ")
9
+ @spies[:queues] = Spy::Queues.new
10
10
  end
11
11
 
12
- def refresh
13
- @queues.refresh # refresh data feed
14
-
15
- super
16
- end
17
-
18
- def structure
19
- @queues = Spy::Queues.new
20
-
12
+ def structure(height)
21
13
  # [
22
14
  # [relative_column_width, data_left, data_right]
23
15
  # ]
@@ -28,10 +20,10 @@ module SidekiqSpy
28
20
  ],
29
21
  ]
30
22
 
31
- (0...(@height - 1)).each do |i|
23
+ (0...(height - 1)).each do |i|
32
24
  s << [ # table row slots
33
- [2, -> { @queues.data.values[i][:name] rescue nil }, nil],
34
- [1, nil, -> { @queues.data.values[i][:size] rescue nil }],
25
+ [2, -> { @spies[:queues][i][:name] }, nil],
26
+ [1, nil, -> { @spies[:queues][i][:size] }],
35
27
  ]
36
28
  end
37
29
 
@@ -5,27 +5,27 @@ module SidekiqSpy
5
5
 
6
6
  def initialize(height, width, top, left)
7
7
  super(height, width, top, left, structure, :divider_r => "|")
8
+
9
+ @spies[:stats] = Spy::Stats.new
8
10
  end
9
11
 
10
12
  def structure
11
- stats = Spy::Stats.new
12
-
13
13
  # [
14
14
  # [relative_column_width, data_left, data_right]
15
15
  # ]
16
16
  [
17
17
  [
18
- [2, t[:redis][:connection], -> { stats.connection }],
19
- [1, t[:redis][:namespace], -> { stats.namespace }],
18
+ [2, t[:redis][:connection], -> { @spies[:stats][:connection] }],
19
+ [1, t[:redis][:namespace], -> { @spies[:stats][:namespace] }],
20
20
  ],
21
21
  [
22
- [1, t[:redis][:version], -> { stats.redis_version }],
23
- [1, t[:redis][:uptime], -> { stats.uptime }],
24
- [1, t[:redis][:connections], -> { stats.connections }],
22
+ [1, t[:redis][:version], -> { @spies[:stats][:redis_version] }],
23
+ [1, t[:redis][:uptime], -> { @spies[:stats][:uptime] }],
24
+ [1, t[:redis][:connections], -> { @spies[:stats][:connections] }],
25
25
  ],
26
26
  [
27
- [1, t[:redis][:memory], -> { stats.memory }],
28
- [1, t[:redis][:memory_peak], -> { stats.memory_peak }],
27
+ [1, t[:redis][:memory], -> { @spies[:stats][:memory] }],
28
+ [1, t[:redis][:memory_peak], -> { @spies[:stats][:memory_peak] }],
29
29
  [1, nil, nil],
30
30
  ],
31
31
  ]
@@ -4,20 +4,12 @@ module SidekiqSpy
4
4
  class Retries < Display::Panel
5
5
 
6
6
  def initialize(height, width, top, left)
7
- @height = height # #structure needs this before #initialize ends
7
+ super(height, width, top, left, structure(height), :divider_r => " ")
8
8
 
9
- super(height, width, top, left, structure, :divider_r => " ")
9
+ @spies[:retries] = Spy::Retries.new
10
10
  end
11
11
 
12
- def refresh
13
- @retries.refresh # refresh data feed
14
-
15
- super
16
- end
17
-
18
- def structure
19
- @retries = Spy::Retries.new
20
-
12
+ def structure(height)
21
13
  # [
22
14
  # [relative_column_width, data_left, data_right]
23
15
  # ]
@@ -32,14 +24,14 @@ module SidekiqSpy
32
24
  ],
33
25
  ]
34
26
 
35
- (0...(@height - 1)).each do |i|
27
+ (0...(height - 1)).each do |i|
36
28
  s << [ # table row slots
37
- [1, -> { @retries.data[i][:next_at] rescue nil }, nil],
38
- [1, -> { @retries.data[i][:count] rescue nil }, nil],
39
- [1, -> { @retries.data[i][:queue] rescue nil }, nil],
40
- [1, -> { @retries.data[i][:class] rescue nil }, nil],
41
- [1, -> { @retries.data[i][:args] rescue nil }, nil],
42
- [1, nil, -> { @retries.data[i][:error_class] rescue nil }],
29
+ [1, -> { @spies[:retries][i][:next_at] }, nil],
30
+ [1, -> { @spies[:retries][i][:count] }, nil],
31
+ [1, -> { @spies[:retries][i][:queue] }, nil],
32
+ [1, -> { @spies[:retries][i][:class] }, nil],
33
+ [1, -> { @spies[:retries][i][:args] }, nil],
34
+ [1, nil, -> { @spies[:retries][i][:error_class] }],
43
35
  ]
44
36
  end
45
37
 
@@ -4,20 +4,12 @@ module SidekiqSpy
4
4
  class Schedules < Display::Panel
5
5
 
6
6
  def initialize(height, width, top, left)
7
- @height = height # #structure needs this before #initialize ends
7
+ super(height, width, top, left, structure(height), :divider_r => " ")
8
8
 
9
- super(height, width, top, left, structure, :divider_r => " ")
9
+ @spies[:schedules] = Spy::Schedules.new
10
10
  end
11
11
 
12
- def refresh
13
- @schedules.refresh # refresh data feed
14
-
15
- super
16
- end
17
-
18
- def structure
19
- @schedules = Spy::Schedules.new
20
-
12
+ def structure(height)
21
13
  # [
22
14
  # [relative_column_width, data_left, data_right]
23
15
  # ]
@@ -30,12 +22,12 @@ module SidekiqSpy
30
22
  ],
31
23
  ]
32
24
 
33
- (0...(@height - 1)).each do |i|
25
+ (0...(height - 1)).each do |i|
34
26
  s << [ # table row slots
35
- [1, -> { @schedules.data[i][:scheduled_at] rescue nil }, nil],
36
- [1, -> { @schedules.data[i][:queue] rescue nil }, nil],
37
- [1, -> { @schedules.data[i][:class] rescue nil }, nil],
38
- [1, nil, -> { @schedules.data[i][:args] rescue nil }],
27
+ [1, -> { @spies[:schedules][i][:scheduled_at] }, nil],
28
+ [1, -> { @spies[:schedules][i][:queue] }, nil],
29
+ [1, -> { @spies[:schedules][i][:class] }, nil],
30
+ [1, nil, -> { @spies[:schedules][i][:args] }],
39
31
  ]
40
32
  end
41
33
 
@@ -5,24 +5,24 @@ module SidekiqSpy
5
5
 
6
6
  def initialize(height, width, top, left)
7
7
  super(height, width, top, left, structure, :divider_r => "|")
8
+
9
+ @spies[:stats] = Spy::Stats.new
8
10
  end
9
11
 
10
12
  def structure
11
- stats = Spy::Stats.new
12
-
13
13
  # [
14
14
  # [relative_column_width, data_left, data_right]
15
15
  # ]
16
16
  [
17
17
  [
18
- [1, t[:sidekiq][:busy], -> { stats.busy }],
19
- [1, t[:sidekiq][:retries], -> { stats.retries }],
20
- [1, t[:sidekiq][:processed], -> { stats.processed }],
18
+ [1, t[:sidekiq][:busy], -> { @spies[:stats][:busy] }],
19
+ [1, t[:sidekiq][:retries], -> { @spies[:stats][:retries] }],
20
+ [1, t[:sidekiq][:processed], -> { @spies[:stats][:processed] }],
21
21
  ],
22
22
  [
23
- [1, t[:sidekiq][:enqueued], -> { stats.enqueued }],
24
- [1, t[:sidekiq][:scheduled], -> { stats.scheduled }],
25
- [1, t[:sidekiq][:failed], -> { stats.failed }],
23
+ [1, t[:sidekiq][:enqueued], -> { @spies[:stats][:enqueued] }],
24
+ [1, t[:sidekiq][:scheduled], -> { @spies[:stats][:scheduled] }],
25
+ [1, t[:sidekiq][:failed], -> { @spies[:stats][:failed] }],
26
26
  ],
27
27
  ]
28
28
  end
@@ -4,20 +4,12 @@ module SidekiqSpy
4
4
  class Workers < Display::Panel
5
5
 
6
6
  def initialize(height, width, top, left)
7
- @height = height # #structure needs this before #initialize ends
7
+ super(height, width, top, left, structure(height), :divider_r => " ")
8
8
 
9
- super(height, width, top, left, structure, :divider_r => " ")
9
+ @spies[:workers] = Spy::Workers.new
10
10
  end
11
11
 
12
- def refresh
13
- @workers.refresh # refresh data feed
14
-
15
- super
16
- end
17
-
18
- def structure
19
- @workers = Spy::Workers.new
20
-
12
+ def structure(height)
21
13
  # [
22
14
  # [relative_column_width, data_left, data_right]
23
15
  # ]
@@ -31,13 +23,13 @@ module SidekiqSpy
31
23
  ],
32
24
  ]
33
25
 
34
- (0...(@height - 1)).each do |i|
26
+ (0...(height - 1)).each do |i|
35
27
  s << [ # table row slots
36
- [2, -> { @workers.data.values[i][:name] rescue nil }, nil],
37
- [1, -> { @workers.data.values[i][:queue] rescue nil }, nil],
38
- [1, -> { @workers.data.values[i][:class] rescue nil }, nil],
39
- [1, -> { @workers.data.values[i][:args] rescue nil }, nil],
40
- [1, nil, -> { @workers.data.values[i][:started_at] rescue nil }],
28
+ [2, -> { @spies[:workers][i][:name] }, nil],
29
+ [1, -> { @spies[:workers][i][:queue] }, nil],
30
+ [1, -> { @spies[:workers][i][:class] }, nil],
31
+ [1, -> { @spies[:workers][i][:args] }, nil],
32
+ [1, nil, -> { @spies[:workers][i][:started_at] }],
41
33
  ]
42
34
  end
43
35
 
@@ -0,0 +1,17 @@
1
+ module SidekiqSpy
2
+ module Spy
3
+ module Dataspyable
4
+
5
+ include Enumerable
6
+
7
+ def each(&block)
8
+ @data.each(&block)
9
+ end
10
+
11
+ def [](key)
12
+ @data[key] || {}
13
+ end
14
+
15
+ end
16
+ end
17
+ end
@@ -5,7 +5,7 @@ module SidekiqSpy
5
5
  module Spy
6
6
  class Queues
7
7
 
8
- attr_reader :data
8
+ include Spy::Dataspyable
9
9
 
10
10
  def initialize
11
11
  @stats = Sidekiq::Stats.new
@@ -14,10 +14,10 @@ module SidekiqSpy
14
14
  end
15
15
 
16
16
  def refresh
17
- h = {}
17
+ h = []
18
18
 
19
19
  @stats.queues.each do |queue, size|
20
- h[queue] = {
20
+ h << {
21
21
  :name => queue,
22
22
  :size => size,
23
23
  }
@@ -1,4 +1,3 @@
1
- require 'time'
2
1
  require 'sidekiq'
3
2
 
4
3
 
@@ -6,7 +5,7 @@ module SidekiqSpy
6
5
  module Spy
7
6
  class Retries
8
7
 
9
- attr_reader :data
8
+ include Spy::Dataspyable
10
9
 
11
10
  def initialize
12
11
  @retries = Sidekiq::RetrySet.new
@@ -5,7 +5,7 @@ module SidekiqSpy
5
5
  module Spy
6
6
  class Schedules
7
7
 
8
- attr_reader :data
8
+ include Spy::Dataspyable
9
9
 
10
10
  def initialize
11
11
  @schedules = Sidekiq::ScheduledSet.new
@@ -5,61 +5,40 @@ module SidekiqSpy
5
5
  module Spy
6
6
  class Stats
7
7
 
8
+ include Spy::Dataspyable
9
+
8
10
  def initialize
9
11
  @stats = Sidekiq::Stats.new
10
12
  @workers = Sidekiq::Workers.new
11
- end
12
-
13
- def connection
14
- redis { |c| "#{c.client.location}/#{c.client.db}" }
15
- end
16
-
17
- def namespace
18
- redis { |c| c.namespace if c.respond_to?(:namespace) }
19
- end
20
-
21
- def redis_version
22
- redis { |c| c.info['redis_version'] }
23
- end
24
-
25
- def uptime
26
- redis { |c| c.info['uptime_in_days'] }
27
- end
28
-
29
- def connections
30
- redis { |c| c.info['connected_clients'] }
31
- end
32
-
33
- def memory
34
- redis { |c| c.info['used_memory_human'] }
35
- end
36
-
37
- def memory_peak
38
- redis { |c| c.info['used_memory_peak_human'] }
39
- end
40
-
41
- def busy
42
- @workers.size
43
- end
44
-
45
- def enqueued
46
- @stats.enqueued
47
- end
48
-
49
- def retries
50
- @stats.retry_size
51
- end
52
-
53
- def scheduled
54
- @stats.scheduled_size
55
- end
56
-
57
- def processed
58
- @stats.processed
59
- end
60
-
61
- def failed
62
- @stats.failed
13
+
14
+ refresh
15
+ end
16
+
17
+ def refresh
18
+ h = {}
19
+
20
+ redis do |c|
21
+ h.merge!({
22
+ :connection => "#{c.client.location}/#{c.client.db}",
23
+ :namespace => (c.respond_to?(:namespace) ? c.namespace : ""),
24
+ :redis_version => c.info['redis_version'],
25
+ :uptime => c.info['uptime_in_days'],
26
+ :connections => c.info['connected_clients'],
27
+ :memory => c.info['used_memory_human'],
28
+ :memory_peak => c.info['used_memory_peak_human'],
29
+ })
30
+ end
31
+
32
+ h.merge!({
33
+ :busy => @workers.size,
34
+ :enqueued => @stats.enqueued,
35
+ :retries => @stats.retry_size,
36
+ :scheduled => @stats.scheduled_size,
37
+ :processed => @stats.processed,
38
+ :failed => @stats.failed,
39
+ })
40
+
41
+ @data = h
63
42
  end
64
43
 
65
44
  private
@@ -6,7 +6,7 @@ module SidekiqSpy
6
6
  module Spy
7
7
  class Workers
8
8
 
9
- attr_reader :data
9
+ include Spy::Dataspyable
10
10
 
11
11
  def initialize
12
12
  @workers = Sidekiq::Workers.new
@@ -15,10 +15,10 @@ module SidekiqSpy
15
15
  end
16
16
 
17
17
  def refresh
18
- h = {}
18
+ h = []
19
19
 
20
20
  @workers.each do |worker, msg|
21
- h[worker] = {
21
+ h << {
22
22
  :name => worker,
23
23
  :queue => msg['queue'],
24
24
  :class => msg['payload']['class'],
@@ -1,5 +1,5 @@
1
1
  module SidekiqSpy
2
2
 
3
- VERSION = '0.3.0'
3
+ VERSION = '0.3.1'
4
4
 
5
5
  end
data/lib/sidekiq-spy.rb CHANGED
@@ -4,6 +4,7 @@ require File.expand_path('../sidekiq-spy/config', __FILE__)
4
4
  require File.expand_path('../sidekiq-spy/translatable', __FILE__)
5
5
  require File.expand_path('../sidekiq-spy/app', __FILE__)
6
6
 
7
+ require File.expand_path('../sidekiq-spy/spy/dataspyable', __FILE__)
7
8
  require File.expand_path('../sidekiq-spy/spy/stats', __FILE__)
8
9
  require File.expand_path('../sidekiq-spy/spy/workers', __FILE__)
9
10
  require File.expand_path('../sidekiq-spy/spy/queues', __FILE__)
data/sidekiq-spy.gemspec CHANGED
@@ -18,9 +18,24 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
+ spec.extensions += [
22
+ 'ext/mkrf_conf.rb',
23
+ ]
24
+
21
25
  spec.add_dependency "sidekiq", "~> 2.15"
26
+ # spec.add_dependency "curses", "~> 1.0" # SEE: ext/mkrf_conf.rb
22
27
 
23
- spec.add_development_dependency "bundler", "~> 1.3"
28
+ spec.add_development_dependency "bundler", "~> 1.3", "!= 1.5.0"
24
29
  spec.add_development_dependency "rake"
25
30
  spec.add_development_dependency "mocha", "~> 0.14"
31
+
32
+ if RUBY_VERSION >= '2.1'
33
+ # This is only for development; note that RUBY_VERSION is evaluated at
34
+ # build-time, not install-time. ext/mkrf_conf.rb takes care of the install-
35
+ # time dependency; this takes care of the development-time dependency.
36
+ # Note that this doesn't work in Gemfile, since :ruby_21 is not a valid
37
+ # platform in Ruby 1.9.3 .
38
+ # BEWARE: repetition; SEE: ext/mkrf_conf.rb
39
+ spec.add_development_dependency "curses", "~> 1.0"
40
+ end
26
41
  end
@@ -13,23 +13,23 @@ describe SidekiqSpy::Spy::Queues do
13
13
  'queue1' => 42,
14
14
  }
15
15
 
16
- @spy_queues_data = {
17
- 'queue1' => {
16
+ @spy_queues_data = [
17
+ {
18
18
  :name => 'queue1',
19
19
  :size => 42,
20
- }
21
- }
20
+ },
21
+ ]
22
22
 
23
23
  @sidekiq_queues_data2 = {
24
24
  'queue2' => 1764,
25
25
  }
26
26
 
27
- @spy_queues_data2 = {
28
- 'queue2' => {
27
+ @spy_queues_data2 = [
28
+ {
29
29
  :name => 'queue2',
30
30
  :size => 1764,
31
- }
32
- }
31
+ },
32
+ ]
33
33
 
34
34
  Sidekiq::Stats.stubs(:new).returns(stub(
35
35
  :queues => @sidekiq_queues_data
@@ -39,8 +39,8 @@ describe SidekiqSpy::Spy::Queues do
39
39
  end
40
40
 
41
41
  describe "#initialize" do
42
- it "sets data list of queues" do
43
- @queues.data.must_equal(@spy_queues_data)
42
+ it "sets list of queues" do
43
+ @queues.to_a.must_equal(@spy_queues_data)
44
44
  end
45
45
  end
46
46
 
@@ -48,7 +48,7 @@ describe SidekiqSpy::Spy::Queues do
48
48
  it "doesn't refresh if not called" do
49
49
  @sidekiq_queues_data.merge!(@sidekiq_queues_data2)
50
50
 
51
- @queues.data.must_equal(@spy_queues_data)
51
+ @queues.to_a.must_equal(@spy_queues_data)
52
52
  end
53
53
 
54
54
  it "refreshes if called" do
@@ -56,7 +56,7 @@ describe SidekiqSpy::Spy::Queues do
56
56
 
57
57
  @queues.refresh
58
58
 
59
- @queues.data.must_equal(@spy_queues_data.merge(@spy_queues_data2))
59
+ @queues.to_a.must_equal(@spy_queues_data + @spy_queues_data2)
60
60
  end
61
61
  end
62
62
 
@@ -59,8 +59,8 @@ describe SidekiqSpy::Spy::Retries do
59
59
  end
60
60
 
61
61
  describe "#initialize" do
62
- it "sets data list of retries" do
63
- @retries.data.must_equal(@spy_retries_data)
62
+ it "sets list of retries" do
63
+ @retries.to_a.must_equal(@spy_retries_data)
64
64
  end
65
65
  end
66
66
 
@@ -68,7 +68,7 @@ describe SidekiqSpy::Spy::Retries do
68
68
  it "doesn't refresh if not called" do
69
69
  @sidekiq_retries_data.push(*@sidekiq_retries_data2)
70
70
 
71
- @retries.data.must_equal(@spy_retries_data)
71
+ @retries.to_a.must_equal(@spy_retries_data)
72
72
  end
73
73
 
74
74
  it "refreshes if called" do
@@ -76,7 +76,7 @@ describe SidekiqSpy::Spy::Retries do
76
76
 
77
77
  @retries.refresh
78
78
 
79
- @retries.data.must_equal(@spy_retries_data + @spy_retries_data2)
79
+ @retries.to_a.must_equal(@spy_retries_data + @spy_retries_data2)
80
80
  end
81
81
  end
82
82
 
@@ -49,8 +49,8 @@ describe SidekiqSpy::Spy::Schedules do
49
49
  end
50
50
 
51
51
  describe "#initialize" do
52
- it "sets data list of schedules" do
53
- @schedules.data.must_equal(@spy_schedules_data)
52
+ it "sets list of schedules" do
53
+ @schedules.to_a.must_equal(@spy_schedules_data)
54
54
  end
55
55
  end
56
56
 
@@ -58,7 +58,7 @@ describe SidekiqSpy::Spy::Schedules do
58
58
  it "doesn't refresh if not called" do
59
59
  @sidekiq_schedules_data.push(*@sidekiq_schedules_data2)
60
60
 
61
- @schedules.data.must_equal(@spy_schedules_data)
61
+ @schedules.to_a.must_equal(@spy_schedules_data)
62
62
  end
63
63
 
64
64
  it "refreshes if called" do
@@ -66,7 +66,7 @@ describe SidekiqSpy::Spy::Schedules do
66
66
 
67
67
  @schedules.refresh
68
68
 
69
- @schedules.data.must_equal(@spy_schedules_data + @spy_schedules_data2)
69
+ @schedules.to_a.must_equal(@spy_schedules_data + @spy_schedules_data2)
70
70
  end
71
71
  end
72
72
 
@@ -39,73 +39,73 @@ describe SidekiqSpy::Spy::Stats do
39
39
 
40
40
  describe "#connection" do
41
41
  it "returns stat connection" do
42
- @stats.connection.must_equal 'da.example.com:237/42'
42
+ @stats[:connection].must_equal 'da.example.com:237/42'
43
43
  end
44
44
  end
45
45
 
46
46
  describe "#namespace" do
47
47
  it "returns stat namespace" do
48
- @stats.namespace.must_equal 'resque'
48
+ @stats[:namespace].must_equal 'resque'
49
49
  end
50
50
  end
51
51
 
52
52
  describe "#uptime" do
53
53
  it "returns stat uptime" do
54
- @stats.uptime.must_equal '7'
54
+ @stats[:uptime].must_equal '7'
55
55
  end
56
56
  end
57
57
 
58
58
  describe "#connections" do
59
59
  it "returns stat connections" do
60
- @stats.connections.must_equal '8'
60
+ @stats[:connections].must_equal '8'
61
61
  end
62
62
  end
63
63
 
64
64
  describe "#memory" do
65
65
  it "returns stat memory" do
66
- @stats.memory.must_equal '5.16M'
66
+ @stats[:memory].must_equal '5.16M'
67
67
  end
68
68
  end
69
69
 
70
70
  describe "#memory_peak" do
71
71
  it "returns stat memory_peak" do
72
- @stats.memory_peak.must_equal '5.14M'
72
+ @stats[:memory_peak].must_equal '5.14M'
73
73
  end
74
74
  end
75
75
 
76
76
  describe "#busy" do
77
77
  it "returns stat busy" do
78
- @stats.busy.must_equal 162165179294
78
+ @stats[:busy].must_equal 162165179294
79
79
  end
80
80
  end
81
81
 
82
82
  describe "#enqueued" do
83
83
  it "returns stat enqueued" do
84
- @stats.enqueued.must_equal 16776977673
84
+ @stats[:enqueued].must_equal 16776977673
85
85
  end
86
86
  end
87
87
 
88
88
  describe "#retries" do
89
89
  it "returns stat retries" do
90
- @stats.retries.must_equal 924984826746
90
+ @stats[:retries].must_equal 924984826746
91
91
  end
92
92
  end
93
93
 
94
94
  describe "#scheduled" do
95
95
  it "returns stat scheduled" do
96
- @stats.scheduled.must_equal 317321542620
96
+ @stats[:scheduled].must_equal 317321542620
97
97
  end
98
98
  end
99
99
 
100
100
  describe "#processed" do
101
101
  it "returns stat processed" do
102
- @stats.processed.must_equal 923531545885
102
+ @stats[:processed].must_equal 923531545885
103
103
  end
104
104
  end
105
105
 
106
106
  describe "#failed" do
107
107
  it "returns stat failed" do
108
- @stats.failed.must_equal 779187529140
108
+ @stats[:failed].must_equal 779187529140
109
109
  end
110
110
  end
111
111
 
@@ -20,15 +20,15 @@ describe SidekiqSpy::Spy::Workers do
20
20
  },
21
21
  }
22
22
 
23
- @spy_workers_data = {
24
- 'worker1' => {
23
+ @spy_workers_data = [
24
+ {
25
25
  :name => 'worker1',
26
26
  :queue => 'Q',
27
27
  :class => 'Geometry',
28
28
  :args => ['Euclid', 360],
29
- :started_at => Time.parse('2325-01-01 00:03:25 +0000')
30
- }
31
- }
29
+ :started_at => Time.parse('2325-01-01 00:03:25 +0000'),
30
+ },
31
+ ]
32
32
 
33
33
  @sidekiq_workers_data2 = {
34
34
  'worker2' => {
@@ -41,15 +41,15 @@ describe SidekiqSpy::Spy::Workers do
41
41
  },
42
42
  }
43
43
 
44
- @spy_workers_data2 = {
45
- 'worker2' => {
44
+ @spy_workers_data2 = [
45
+ {
46
46
  :name => 'worker2',
47
47
  :queue => 'Queueueue',
48
48
  :class => 'Elements',
49
49
  :args => ['Lehrer', 102],
50
- :started_at => Time.parse('1928-04-09 00:00:00 +0000')
51
- }
52
- }
50
+ :started_at => Time.parse('1928-04-09 00:00:00 +0000'),
51
+ },
52
+ ]
53
53
 
54
54
  Sidekiq::Workers.stubs(:new).returns(@sidekiq_workers_data)
55
55
 
@@ -57,8 +57,8 @@ describe SidekiqSpy::Spy::Workers do
57
57
  end
58
58
 
59
59
  describe "#initialize" do
60
- it "sets data list of workers" do
61
- @workers.data.must_equal(@spy_workers_data)
60
+ it "sets list of workers" do
61
+ @workers.to_a.must_equal(@spy_workers_data)
62
62
  end
63
63
  end
64
64
 
@@ -66,7 +66,7 @@ describe SidekiqSpy::Spy::Workers do
66
66
  it "doesn't refresh if not called" do
67
67
  @sidekiq_workers_data.merge!(@sidekiq_workers_data2)
68
68
 
69
- @workers.data.must_equal(@spy_workers_data)
69
+ @workers.to_a.must_equal(@spy_workers_data)
70
70
  end
71
71
 
72
72
  it "refreshes if called" do
@@ -74,7 +74,7 @@ describe SidekiqSpy::Spy::Workers do
74
74
 
75
75
  @workers.refresh
76
76
 
77
- @workers.data.must_equal(@spy_workers_data.merge(@spy_workers_data2))
77
+ @workers.to_a.must_equal(@spy_workers_data + @spy_workers_data2)
78
78
  end
79
79
  end
80
80
 
metadata CHANGED
@@ -1,90 +1,112 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq-spy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - tiredpixel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-18 00:00:00.000000000 Z
11
+ date: 2014-01-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sidekiq
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '2.15'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '2.15'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '1.3'
34
+ - - "!="
35
+ - !ruby/object:Gem::Version
36
+ version: 1.5.0
34
37
  type: :development
35
38
  prerelease: false
36
39
  version_requirements: !ruby/object:Gem::Requirement
37
40
  requirements:
38
- - - ~>
41
+ - - "~>"
39
42
  - !ruby/object:Gem::Version
40
43
  version: '1.3'
44
+ - - "!="
45
+ - !ruby/object:Gem::Version
46
+ version: 1.5.0
41
47
  - !ruby/object:Gem::Dependency
42
48
  name: rake
43
49
  requirement: !ruby/object:Gem::Requirement
44
50
  requirements:
45
- - - '>='
51
+ - - ">="
46
52
  - !ruby/object:Gem::Version
47
53
  version: '0'
48
54
  type: :development
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
51
57
  requirements:
52
- - - '>='
58
+ - - ">="
53
59
  - !ruby/object:Gem::Version
54
60
  version: '0'
55
61
  - !ruby/object:Gem::Dependency
56
62
  name: mocha
57
63
  requirement: !ruby/object:Gem::Requirement
58
64
  requirements:
59
- - - ~>
65
+ - - "~>"
60
66
  - !ruby/object:Gem::Version
61
67
  version: '0.14'
62
68
  type: :development
63
69
  prerelease: false
64
70
  version_requirements: !ruby/object:Gem::Requirement
65
71
  requirements:
66
- - - ~>
72
+ - - "~>"
67
73
  - !ruby/object:Gem::Version
68
74
  version: '0.14'
75
+ - !ruby/object:Gem::Dependency
76
+ name: curses
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '1.0'
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '1.0'
69
89
  description: Sidekiq monitoring in the console. A bit like Sidekiq::Web. But without
70
90
  the web.
71
91
  email:
72
92
  - tp@tiredpixel.com
73
93
  executables:
74
94
  - sidekiq-spy
75
- extensions: []
95
+ extensions:
96
+ - ext/mkrf_conf.rb
76
97
  extra_rdoc_files: []
77
98
  files:
78
- - .gitignore
79
- - .ruby-gemset
80
- - .ruby-version
81
- - .travis.yml
99
+ - ".gitignore"
100
+ - ".ruby-gemset"
101
+ - ".ruby-version"
102
+ - ".travis.yml"
82
103
  - CHANGELOG.md
83
104
  - Gemfile
84
105
  - LICENSE.txt
85
106
  - README.md
86
107
  - Rakefile
87
108
  - bin/sidekiq-spy
109
+ - ext/mkrf_conf.rb
88
110
  - lib/sidekiq-spy.rb
89
111
  - lib/sidekiq-spy/app.rb
90
112
  - lib/sidekiq-spy/config.rb
@@ -98,6 +120,7 @@ files:
98
120
  - lib/sidekiq-spy/display/panels/workers.rb
99
121
  - lib/sidekiq-spy/display/screen.rb
100
122
  - lib/sidekiq-spy/display/subpanel.rb
123
+ - lib/sidekiq-spy/spy/dataspyable.rb
101
124
  - lib/sidekiq-spy/spy/queues.rb
102
125
  - lib/sidekiq-spy/spy/retries.rb
103
126
  - lib/sidekiq-spy/spy/schedules.rb
@@ -130,17 +153,17 @@ require_paths:
130
153
  - lib
131
154
  required_ruby_version: !ruby/object:Gem::Requirement
132
155
  requirements:
133
- - - '>='
156
+ - - ">="
134
157
  - !ruby/object:Gem::Version
135
158
  version: '0'
136
159
  required_rubygems_version: !ruby/object:Gem::Requirement
137
160
  requirements:
138
- - - '>='
161
+ - - ">="
139
162
  - !ruby/object:Gem::Version
140
163
  version: '0'
141
164
  requirements: []
142
165
  rubyforge_project:
143
- rubygems_version: 2.1.11
166
+ rubygems_version: 2.2.0
144
167
  signing_key:
145
168
  specification_version: 4
146
169
  summary: Sidekiq monitoring in the console.