scales-monitor 0.0.1.beta.2 → 0.0.4
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.
- data/lib/scales-monitor/app/app/assets/javascripts/app/controllers/log.jst.coffee +3 -1
 - data/lib/scales-monitor/app/app/assets/javascripts/app/controllers/resources.js.coffee +17 -6
 - data/lib/scales-monitor/app/app/assets/javascripts/app/views/resources.jst.eco +3 -1
 - data/lib/scales-monitor/app/public/assets/application.js +23 -9
 - data/lib/scales-monitor/version.rb +1 -1
 - data/lib/scales-monitor/web_socket.rb +5 -26
 - data/spec/web_socket_spec.rb +2 -14
 - metadata +17 -17
 
| 
         @@ -7,6 +7,7 @@ class App.Log extends Spine.Controller 
     | 
|
| 
       7 
7 
     | 
    
         
             
                super
         
     | 
| 
       8 
8 
     | 
    
         
             
                @render()
         
     | 
| 
       9 
9 
     | 
    
         
             
                @bindEvents()
         
     | 
| 
      
 10 
     | 
    
         
            +
                @changed = false
         
     | 
| 
       10 
11 
     | 
    
         
             
                setInterval => 
         
     | 
| 
       11 
12 
     | 
    
         
             
                  @eventsDiv.animate({ scrollTop: @eventsDiv[0].scrollHeight }, 500)
         
     | 
| 
       12 
13 
     | 
    
         
             
                , 1000
         
     | 
| 
         @@ -55,4 +56,5 @@ class App.Log extends Spine.Controller 
     | 
|
| 
       55 
56 
     | 
    
         
             
                  else
         
     | 
| 
       56 
57 
     | 
    
         
             
                    out += "<br/>    -> #{item} = #{data}"
         
     | 
| 
       57 
58 
     | 
    
         | 
| 
       58 
     | 
    
         
            -
                @eventsDiv.append out
         
     | 
| 
      
 59 
     | 
    
         
            +
                @eventsDiv.append out
         
     | 
| 
      
 60 
     | 
    
         
            +
                @changed = true
         
     | 
| 
         @@ -8,10 +8,20 @@ class App.Resources extends Spine.Controller 
     | 
|
| 
       8 
8 
     | 
    
         
             
              constructor: ->
         
     | 
| 
       9 
9 
     | 
    
         
             
                super
         
     | 
| 
       10 
10 
     | 
    
         
             
                [@resources, @partials, @servers] = [{}, {}, {}]
         
     | 
| 
      
 11 
     | 
    
         
            +
                [@resourcesChanged, @partialsChanged] = [false, false]
         
     | 
| 
       11 
12 
     | 
    
         
             
                @colors = {}
         
     | 
| 
       12 
13 
     | 
    
         
             
                @bindColors()
         
     | 
| 
       13 
14 
     | 
    
         
             
                @render()
         
     | 
| 
       14 
15 
     | 
    
         
             
                @bindEvents()
         
     | 
| 
      
 16 
     | 
    
         
            +
                setInterval => 
         
     | 
| 
      
 17 
     | 
    
         
            +
                  if @resourcesChanged
         
     | 
| 
      
 18 
     | 
    
         
            +
                    @resourcesChanged = false
         
     | 
| 
      
 19 
     | 
    
         
            +
                    @renderResources(@resources, @resourcesDiv)
         
     | 
| 
      
 20 
     | 
    
         
            +
                  
         
     | 
| 
      
 21 
     | 
    
         
            +
                  if @partialsChanged
         
     | 
| 
      
 22 
     | 
    
         
            +
                    @partialsChanged = false
         
     | 
| 
      
 23 
     | 
    
         
            +
                    @renderResources(@partials, @partialsDiv)
         
     | 
| 
      
 24 
     | 
    
         
            +
                , 200
         
     | 
| 
       15 
25 
     | 
    
         | 
| 
       16 
26 
     | 
    
         
             
              activate: ->
         
     | 
| 
       17 
27 
     | 
    
         
             
                @el.addClass("active")
         
     | 
| 
         @@ -40,27 +50,27 @@ class App.Resources extends Spine.Controller 
     | 
|
| 
       40 
50 
     | 
    
         | 
| 
       41 
51 
     | 
    
         
             
                Spine.bind 'push_resource', (resource) =>
         
     | 
| 
       42 
52 
     | 
    
         
             
                  @resources[resource.path] = resource
         
     | 
| 
       43 
     | 
    
         
            -
                  @ 
     | 
| 
      
 53 
     | 
    
         
            +
                  @resourcesChanged = true
         
     | 
| 
       44 
54 
     | 
    
         | 
| 
       45 
55 
     | 
    
         
             
                Spine.bind 'destroy_resource', (resource) =>
         
     | 
| 
       46 
56 
     | 
    
         
             
                  delete @resources[resource.path]
         
     | 
| 
       47 
     | 
    
         
            -
                  @ 
     | 
| 
      
 57 
     | 
    
         
            +
                  @resourcesChanged = true
         
     | 
| 
       48 
58 
     | 
    
         | 
| 
       49 
59 
     | 
    
         
             
                Spine.bind 'push_partial', (partial) =>
         
     | 
| 
       50 
60 
     | 
    
         
             
                  @partials[partial.path] = partial
         
     | 
| 
       51 
     | 
    
         
            -
                  @ 
     | 
| 
      
 61 
     | 
    
         
            +
                  @partialsChanged = true
         
     | 
| 
       52 
62 
     | 
    
         | 
| 
       53 
63 
     | 
    
         
             
                Spine.bind 'destroy_partial', (partial) =>
         
     | 
| 
       54 
64 
     | 
    
         
             
                  delete @partials[partial.path]
         
     | 
| 
       55 
     | 
    
         
            -
                  @ 
     | 
| 
      
 65 
     | 
    
         
            +
                  @partialsChanged = true
         
     | 
| 
       56 
66 
     | 
    
         | 
| 
       57 
67 
     | 
    
         
             
                Spine.bind 'server_started', (server) =>
         
     | 
| 
       58 
68 
     | 
    
         
             
                  @servers[server.id] = server
         
     | 
| 
       59 
     | 
    
         
            -
                  @ 
     | 
| 
      
 69 
     | 
    
         
            +
                  @resourcesChanged = true
         
     | 
| 
       60 
70 
     | 
    
         | 
| 
       61 
71 
     | 
    
         
             
                Spine.bind 'server_stopped', (server) =>
         
     | 
| 
       62 
72 
     | 
    
         
             
                  delete @servers[server.id]
         
     | 
| 
       63 
     | 
    
         
            -
                  @ 
     | 
| 
      
 73 
     | 
    
         
            +
                  @resourcesChanged = true
         
     | 
| 
       64 
74 
     | 
    
         | 
| 
       65 
75 
     | 
    
         
             
              render: ->
         
     | 
| 
       66 
76 
     | 
    
         
             
                @html JST['app/views/resources'](@)
         
     | 
| 
         @@ -91,6 +101,7 @@ class App.Resources extends Spine.Controller 
     | 
|
| 
       91 
101 
     | 
    
         
             
                div.html out
         
     | 
| 
       92 
102 
     | 
    
         
             
                div.tooltip({ selector: "a" })
         
     | 
| 
       93 
103 
     | 
    
         
             
                @renderContentTypes()
         
     | 
| 
      
 104 
     | 
    
         
            +
                
         
     | 
| 
       94 
105 
     | 
    
         | 
| 
       95 
106 
     | 
    
         
             
              processContentTypes: ->
         
     | 
| 
       96 
107 
     | 
    
         
             
                formats = {}
         
     | 
| 
         @@ -23,7 +23,9 @@ 
     | 
|
| 
       23 
23 
     | 
    
         | 
| 
       24 
24 
     | 
    
         
             
              <div class="span4">
         
     | 
| 
       25 
25 
     | 
    
         
             
                <div class="page-header"><h1>Content Types</h1></div>
         
     | 
| 
       26 
     | 
    
         
            -
                <div id="content_types" 
     | 
| 
      
 26 
     | 
    
         
            +
                <div id="content_types">
         
     | 
| 
      
 27 
     | 
    
         
            +
                  <div class="well dark-grey pagination-centered"><h2 class="white">0</h2></div>
         
     | 
| 
      
 28 
     | 
    
         
            +
                </div>
         
     | 
| 
       27 
29 
     | 
    
         
             
              </div>
         
     | 
| 
       28 
30 
     | 
    
         | 
| 
       29 
31 
     | 
    
         
             
            </div>
         
     | 
| 
         @@ -4469,6 +4469,7 @@ replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) { 
     | 
|
| 
       4469 
4469 
     | 
    
         
             
                    Log.__super__.constructor.apply(this, arguments);
         
     | 
| 
       4470 
4470 
     | 
    
         
             
                    this.render();
         
     | 
| 
       4471 
4471 
     | 
    
         
             
                    this.bindEvents();
         
     | 
| 
      
 4472 
     | 
    
         
            +
                    this.changed = false;
         
     | 
| 
       4472 
4473 
     | 
    
         
             
                    setInterval(function() {
         
     | 
| 
       4473 
4474 
     | 
    
         
             
                      return _this.eventsDiv.animate({
         
     | 
| 
       4474 
4475 
     | 
    
         
             
                        scrollTop: _this.eventsDiv[0].scrollHeight
         
     | 
| 
         @@ -4549,7 +4550,8 @@ replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) { 
     | 
|
| 
       4549 
4550 
     | 
    
         
             
                        out += "<br/>    -> " + item + " = " + data;
         
     | 
| 
       4550 
4551 
     | 
    
         
             
                      }
         
     | 
| 
       4551 
4552 
     | 
    
         
             
                    }
         
     | 
| 
       4552 
     | 
    
         
            -
                     
     | 
| 
      
 4553 
     | 
    
         
            +
                    this.eventsDiv.append(out);
         
     | 
| 
      
 4554 
     | 
    
         
            +
                    return this.changed = true;
         
     | 
| 
       4553 
4555 
     | 
    
         
             
                  };
         
     | 
| 
       4554 
4556 
     | 
    
         | 
| 
       4555 
4557 
     | 
    
         
             
                  return Log;
         
     | 
| 
         @@ -4746,13 +4748,25 @@ replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) { 
     | 
|
| 
       4746 
4748 
     | 
    
         
             
                };
         
     | 
| 
       4747 
4749 
     | 
    
         | 
| 
       4748 
4750 
     | 
    
         
             
                function Resources() {
         
     | 
| 
       4749 
     | 
    
         
            -
                  var _ref 
     | 
| 
      
 4751 
     | 
    
         
            +
                  var _ref, _ref1,
         
     | 
| 
      
 4752 
     | 
    
         
            +
                    _this = this;
         
     | 
| 
       4750 
4753 
     | 
    
         
             
                  Resources.__super__.constructor.apply(this, arguments);
         
     | 
| 
       4751 
4754 
     | 
    
         
             
                  _ref = [{}, {}, {}], this.resources = _ref[0], this.partials = _ref[1], this.servers = _ref[2];
         
     | 
| 
      
 4755 
     | 
    
         
            +
                  _ref1 = [false, false], this.resourcesChanged = _ref1[0], this.partialsChanged = _ref1[1];
         
     | 
| 
       4752 
4756 
     | 
    
         
             
                  this.colors = {};
         
     | 
| 
       4753 
4757 
     | 
    
         
             
                  this.bindColors();
         
     | 
| 
       4754 
4758 
     | 
    
         
             
                  this.render();
         
     | 
| 
       4755 
4759 
     | 
    
         
             
                  this.bindEvents();
         
     | 
| 
      
 4760 
     | 
    
         
            +
                  setInterval(function() {
         
     | 
| 
      
 4761 
     | 
    
         
            +
                    if (_this.resourcesChanged) {
         
     | 
| 
      
 4762 
     | 
    
         
            +
                      _this.resourcesChanged = false;
         
     | 
| 
      
 4763 
     | 
    
         
            +
                      _this.renderResources(_this.resources, _this.resourcesDiv);
         
     | 
| 
      
 4764 
     | 
    
         
            +
                    }
         
     | 
| 
      
 4765 
     | 
    
         
            +
                    if (_this.partialsChanged) {
         
     | 
| 
      
 4766 
     | 
    
         
            +
                      _this.partialsChanged = false;
         
     | 
| 
      
 4767 
     | 
    
         
            +
                      return _this.renderResources(_this.partials, _this.partialsDiv);
         
     | 
| 
      
 4768 
     | 
    
         
            +
                    }
         
     | 
| 
      
 4769 
     | 
    
         
            +
                  }, 200);
         
     | 
| 
       4756 
4770 
     | 
    
         
             
                }
         
     | 
| 
       4757 
4771 
     | 
    
         | 
| 
       4758 
4772 
     | 
    
         
             
                Resources.prototype.activate = function() {
         
     | 
| 
         @@ -4786,27 +4800,27 @@ replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) { 
     | 
|
| 
       4786 
4800 
     | 
    
         
             
                  var _this = this;
         
     | 
| 
       4787 
4801 
     | 
    
         
             
                  Spine.bind('push_resource', function(resource) {
         
     | 
| 
       4788 
4802 
     | 
    
         
             
                    _this.resources[resource.path] = resource;
         
     | 
| 
       4789 
     | 
    
         
            -
                    return _this. 
     | 
| 
      
 4803 
     | 
    
         
            +
                    return _this.resourcesChanged = true;
         
     | 
| 
       4790 
4804 
     | 
    
         
             
                  });
         
     | 
| 
       4791 
4805 
     | 
    
         
             
                  Spine.bind('destroy_resource', function(resource) {
         
     | 
| 
       4792 
4806 
     | 
    
         
             
                    delete _this.resources[resource.path];
         
     | 
| 
       4793 
     | 
    
         
            -
                    return _this. 
     | 
| 
      
 4807 
     | 
    
         
            +
                    return _this.resourcesChanged = true;
         
     | 
| 
       4794 
4808 
     | 
    
         
             
                  });
         
     | 
| 
       4795 
4809 
     | 
    
         
             
                  Spine.bind('push_partial', function(partial) {
         
     | 
| 
       4796 
4810 
     | 
    
         
             
                    _this.partials[partial.path] = partial;
         
     | 
| 
       4797 
     | 
    
         
            -
                    return _this. 
     | 
| 
      
 4811 
     | 
    
         
            +
                    return _this.partialsChanged = true;
         
     | 
| 
       4798 
4812 
     | 
    
         
             
                  });
         
     | 
| 
       4799 
4813 
     | 
    
         
             
                  Spine.bind('destroy_partial', function(partial) {
         
     | 
| 
       4800 
4814 
     | 
    
         
             
                    delete _this.partials[partial.path];
         
     | 
| 
       4801 
     | 
    
         
            -
                    return _this. 
     | 
| 
      
 4815 
     | 
    
         
            +
                    return _this.partialsChanged = true;
         
     | 
| 
       4802 
4816 
     | 
    
         
             
                  });
         
     | 
| 
       4803 
4817 
     | 
    
         
             
                  Spine.bind('server_started', function(server) {
         
     | 
| 
       4804 
4818 
     | 
    
         
             
                    _this.servers[server.id] = server;
         
     | 
| 
       4805 
     | 
    
         
            -
                    return _this. 
     | 
| 
      
 4819 
     | 
    
         
            +
                    return _this.resourcesChanged = true;
         
     | 
| 
       4806 
4820 
     | 
    
         
             
                  });
         
     | 
| 
       4807 
4821 
     | 
    
         
             
                  return Spine.bind('server_stopped', function(server) {
         
     | 
| 
       4808 
4822 
     | 
    
         
             
                    delete _this.servers[server.id];
         
     | 
| 
       4809 
     | 
    
         
            -
                    return _this. 
     | 
| 
      
 4823 
     | 
    
         
            +
                    return _this.resourcesChanged = true;
         
     | 
| 
       4810 
4824 
     | 
    
         
             
                  });
         
     | 
| 
       4811 
4825 
     | 
    
         
             
                };
         
     | 
| 
       4812 
4826 
     | 
    
         | 
| 
         @@ -5486,7 +5500,7 @@ replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) { 
     | 
|
| 
       5486 
5500 
     | 
    
         
             
                (function() {
         
     | 
| 
       5487 
5501 
     | 
    
         
             
                  (function() {
         
     | 
| 
       5488 
5502 
     | 
    
         | 
| 
       5489 
     | 
    
         
            -
                    __out.push('<header class="jumbotron subhead">\n  <h1>Resources</h1>\n  <p class="lead">Overview of all Resources, the Partials and Content Types</p>\n</header>\n\n<section>\n\n<div class="row">\n  \n  <div class="span4">\n    <div class="page-header"><h1>Resources</h1></div>\n    <div id="resources">\n      <div class="well dark-grey pagination-centered"><h2 class="white">0</h2></div>\n    </div>\n  </div>\n  \n  <div class="span4">\n    <div class="page-header"><h1>Partials</h1></div>\n    <div id="partials">\n      <div class="well dark-grey pagination-centered"><h2 class="white">0</h2></div>\n    </div>\n  </div>\n  \n  <div class="span4">\n    <div class="page-header"><h1>Content Types</h1></div>\n    <div id="content_types"></div>\n  </div>\n  \n</div>\n\n</section>\n');
         
     | 
| 
      
 5503 
     | 
    
         
            +
                    __out.push('<header class="jumbotron subhead">\n  <h1>Resources</h1>\n  <p class="lead">Overview of all Resources, the Partials and Content Types</p>\n</header>\n\n<section>\n\n<div class="row">\n  \n  <div class="span4">\n    <div class="page-header"><h1>Resources</h1></div>\n    <div id="resources">\n      <div class="well dark-grey pagination-centered"><h2 class="white">0</h2></div>\n    </div>\n  </div>\n  \n  <div class="span4">\n    <div class="page-header"><h1>Partials</h1></div>\n    <div id="partials">\n      <div class="well dark-grey pagination-centered"><h2 class="white">0</h2></div>\n    </div>\n  </div>\n  \n  <div class="span4">\n    <div class="page-header"><h1>Content Types</h1></div>\n    <div id="content_types">\n      <div class="well dark-grey pagination-centered"><h2 class="white">0</h2></div>\n    </div>\n  </div>\n  \n</div>\n\n</section>\n');
         
     | 
| 
       5490 
5504 
     | 
    
         | 
| 
       5491 
5505 
     | 
    
         
             
                  }).call(this);
         
     | 
| 
       5492 
5506 
     | 
    
         | 
| 
         @@ -6,7 +6,7 @@ module Scales 
     | 
|
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
                  def on_open(env)
         
     | 
| 
       8 
8 
     | 
    
         
             
                    send_initial_statuses(env)
         
     | 
| 
       9 
     | 
    
         
            -
                    setup_subscription
         
     | 
| 
      
 9 
     | 
    
         
            +
                    setup_subscription!
         
     | 
| 
       10 
10 
     | 
    
         
             
                    add_to_subscribers(env)
         
     | 
| 
       11 
11 
     | 
    
         
             
                  end
         
     | 
| 
       12 
12 
     | 
    
         | 
| 
         @@ -15,7 +15,6 @@ module Scales 
     | 
|
| 
       15 
15 
     | 
    
         
             
                  end
         
     | 
| 
       16 
16 
     | 
    
         | 
| 
       17 
17 
     | 
    
         
             
                  def on_message(env, msg)
         
     | 
| 
       18 
     | 
    
         
            -
                    env.stream_send(msg)
         
     | 
| 
       19 
18 
     | 
    
         
             
                  end
         
     | 
| 
       20 
19 
     | 
    
         | 
| 
       21 
20 
     | 
    
         
             
                  def on_close(env)
         
     | 
| 
         @@ -34,7 +33,7 @@ module Scales 
     | 
|
| 
       34 
33 
     | 
    
         | 
| 
       35 
34 
     | 
    
         
             
                  private
         
     | 
| 
       36 
35 
     | 
    
         | 
| 
       37 
     | 
    
         
            -
                  def setup_subscription
         
     | 
| 
      
 36 
     | 
    
         
            +
                  def setup_subscription!
         
     | 
| 
       38 
37 
     | 
    
         
             
                    return if @subscribed
         
     | 
| 
       39 
38 
     | 
    
         
             
                    @subscribers = []
         
     | 
| 
       40 
39 
     | 
    
         | 
| 
         @@ -43,6 +42,7 @@ module Scales 
     | 
|
| 
       43 
42 
     | 
    
         
             
                    events.on(:message) do |channel, message|
         
     | 
| 
       44 
43 
     | 
    
         
             
                      @subscribers.each { |subscriber| subscriber.stream_send(message) }
         
     | 
| 
       45 
44 
     | 
    
         
             
                    end
         
     | 
| 
      
 45 
     | 
    
         
            +
                    
         
     | 
| 
       46 
46 
     | 
    
         
             
                    @subscribed = true
         
     | 
| 
       47 
47 
     | 
    
         
             
                  end
         
     | 
| 
       48 
48 
     | 
    
         | 
| 
         @@ -60,7 +60,6 @@ module Scales 
     | 
|
| 
       60 
60 
     | 
    
         
             
                    worker_statuses.each{ |worker| env.stream_send(worker)    }
         
     | 
| 
       61 
61 
     | 
    
         | 
| 
       62 
62 
     | 
    
         
             
                    request_queue.each{  |request| env.stream_send(request)   }
         
     | 
| 
       63 
     | 
    
         
            -
                    response_queue.each{ |request| env.stream_send(response)  }
         
     | 
| 
       64 
63 
     | 
    
         | 
| 
       65 
64 
     | 
    
         
             
                    push_resources.each{ |resource| env.stream_send(resource) }
         
     | 
| 
       66 
65 
     | 
    
         
             
                    push_partials.each{  |partial|  env.stream_send(partial)  }
         
     | 
| 
         @@ -95,11 +94,11 @@ module Scales 
     | 
|
| 
       95 
94 
     | 
    
         
             
                  end
         
     | 
| 
       96 
95 
     | 
    
         | 
| 
       97 
96 
     | 
    
         
             
                  def request_queue
         
     | 
| 
       98 
     | 
    
         
            -
                    requests = Storage::Async.connection.llen( 
     | 
| 
      
 97 
     | 
    
         
            +
                    requests = Storage::Async.connection.llen(Scales::Storage::REQUEST_QUEUE)
         
     | 
| 
       99 
98 
     | 
    
         
             
                    return [] if requests == 0
         
     | 
| 
       100 
99 
     | 
    
         | 
| 
       101 
100 
     | 
    
         
             
                    data = []
         
     | 
| 
       102 
     | 
    
         
            -
                    Storage::Async.connection.lrange( 
     | 
| 
      
 101 
     | 
    
         
            +
                    Storage::Async.connection.lrange(Scales::Storage::REQUEST_QUEUE, 0, requests).each do |request|
         
     | 
| 
       103 
102 
     | 
    
         
             
                      job = JSON.parse(request)
         
     | 
| 
       104 
103 
     | 
    
         
             
                      data << {
         
     | 
| 
       105 
104 
     | 
    
         
             
                        :id         => job['scales.id'],
         
     | 
| 
         @@ -112,26 +111,6 @@ module Scales 
     | 
|
| 
       112 
111 
     | 
    
         
             
                    data
         
     | 
| 
       113 
112 
     | 
    
         
             
                  end
         
     | 
| 
       114 
113 
     | 
    
         | 
| 
       115 
     | 
    
         
            -
                  def response_queue
         
     | 
| 
       116 
     | 
    
         
            -
                    responses = Storage::Async.connection.keys("scales_response_*")
         
     | 
| 
       117 
     | 
    
         
            -
                    return [] if responses.empty?
         
     | 
| 
       118 
     | 
    
         
            -
                    
         
     | 
| 
       119 
     | 
    
         
            -
                    data = []
         
     | 
| 
       120 
     | 
    
         
            -
                    responses.each do |response_key|
         
     | 
| 
       121 
     | 
    
         
            -
                      response = Storage::Async.connection.lindex(response_key, 0)
         
     | 
| 
       122 
     | 
    
         
            -
                      response = JSON.parse(response)
         
     | 
| 
       123 
     | 
    
         
            -
                      data << {
         
     | 
| 
       124 
     | 
    
         
            -
                        :id         => response[1]['scales.id'],
         
     | 
| 
       125 
     | 
    
         
            -
                        :worker_id  => nil,
         
     | 
| 
       126 
     | 
    
         
            -
                        :type       => "worker_put_response_in_queue",
         
     | 
| 
       127 
     | 
    
         
            -
                        :path       => response[1]['PATH_INFO'],
         
     | 
| 
       128 
     | 
    
         
            -
                        :method     => response[1]['REQUEST_METHOD'],
         
     | 
| 
       129 
     | 
    
         
            -
                        :status     => response[0]
         
     | 
| 
       130 
     | 
    
         
            -
                      }.to_json
         
     | 
| 
       131 
     | 
    
         
            -
                    end
         
     | 
| 
       132 
     | 
    
         
            -
                    data
         
     | 
| 
       133 
     | 
    
         
            -
                  end
         
     | 
| 
       134 
     | 
    
         
            -
                  
         
     | 
| 
       135 
114 
     | 
    
         
             
                  def push_resources
         
     | 
| 
       136 
115 
     | 
    
         
             
                    resources = Storage::Async.connection.keys("scales_resource_/*")
         
     | 
| 
       137 
116 
     | 
    
         
             
                    return [] if resources.empty?
         
     | 
    
        data/spec/web_socket_spec.rb
    CHANGED
    
    | 
         @@ -51,8 +51,8 @@ describe Scales::Monitor::WebSocket do 
     | 
|
| 
       51 
51 
     | 
    
         
             
                it "sends requests" do
         
     | 
| 
       52 
52 
     | 
    
         
             
                  with_api(described_class, {:verbose => true, :log_stdout => true}) do |server|
         
     | 
| 
       53 
53 
     | 
    
         
             
                    json = "{\"scales.id\":\"4f57fcec795b6a6158796a1958e781f0\",\"SERVER_NAME\":\"0.0.0.0\",\"SERVER_PORT\":\"3005\",\"REQUEST_METHOD\":\"POST\",\"QUERY_STRING\":\"\",\"PATH_INFO\":\"/tracks\",\"HTTP_HOST\":\"0.0.0.0:3005\",\"HTTP_USER_AGENT\":\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.19 (KHTML, like Gecko) Version/6.0 Safari/536.19\",\"HTTP_ACCEPT\":\"text/html, application/xhtml+xml, application/xml;q=0.9, */*;q=0.8\",\"HTTP_ORIGIN\":\"http://0.0.0.0:3005\",\"HTTP_REFERER\":\"http://0.0.0.0:3005/tracks/new\",\"HTTP_ACCEPT_LANGUAGE\":\"en-us\",\"HTTP_ACCEPT_ENCODING\":\"gzip, deflate\",\"HTTP_CONNECTION\":\"keep-alive\",\"HTTP_VERSION\":\"1.1\",\"rack.version\":[1,0],\"rack.url_scheme\":null,\"rack.input\":\"utf8=%E2%9C%93&authenticity_token=gniWYAZpl67rSI0VYfrpoBXJ3Ipv9ZEv9VY9FSbyoDM%3D&track%5Bname%5D=Next+one&track%5Bartist%5D=Okay+here&commit=Create+Track\"}"
         
     | 
| 
       54 
     | 
    
         
            -
                    Scales::Storage::Async.connection.lpush( 
     | 
| 
       55 
     | 
    
         
            -
                    Scales::Storage::Async.connection.lpush( 
     | 
| 
      
 54 
     | 
    
         
            +
                    Scales::Storage::Async.connection.lpush(Scales::Storage::REQUEST_QUEUE, json)
         
     | 
| 
      
 55 
     | 
    
         
            +
                    Scales::Storage::Async.connection.lpush(Scales::Storage::REQUEST_QUEUE, json)
         
     | 
| 
       56 
56 
     | 
    
         | 
| 
       57 
57 
     | 
    
         
             
                    requests = described_class.new.instance_eval{ request_queue }
         
     | 
| 
       58 
58 
     | 
    
         
             
                    requests.should have_at_least(2).requests
         
     | 
| 
         @@ -60,18 +60,6 @@ describe Scales::Monitor::WebSocket do 
     | 
|
| 
       60 
60 
     | 
    
         
             
                  end
         
     | 
| 
       61 
61 
     | 
    
         
             
                end
         
     | 
| 
       62 
62 
     | 
    
         | 
| 
       63 
     | 
    
         
            -
                it "sends responds" do
         
     | 
| 
       64 
     | 
    
         
            -
                  with_api(described_class, {:verbose => true, :log_stdout => true}) do |server|
         
     | 
| 
       65 
     | 
    
         
            -
                    json = "[302,{\"Location\":\"http://0.0.0.0:3005/tracks/170\",\"Content-Type\":\"text/html; charset=utf-8\",\"Set-Cookie\":\"_app_session=BAh7B0kiCmZsYXNoBjoGRUZvOiVBY3Rpb25EaXNwYXRjaDo6Rmxhc2g6OkZsYXNoSGFzaAk6CkB1c2VkbzoIU2V0BjoKQGhhc2h7ADoMQGNsb3NlZEY6DUBmbGFzaGVzewY6C25vdGljZUkiJFRyYWNrIHdhcyBzdWNjZXNzZnVsbHkgY3JlYXRlZC4GOwBGOglAbm93MEkiD3Nlc3Npb25faWQGOwBGSSIlZDkxNDA4OTFmMWVhZTJlNGU2MmM3MmRkOTA4NDZjODUGOwBU--fd4912d39bd51eedcd5bf0519a939e5b38317b34; path=/; HttpOnly\",\"scales.id\":\"155a255dd3604fa2e39469e30aef3206\"},\"<html><body>You are being <a href=\\\"http://0.0.0.0:3005/tracks/170\\\">redirected</a>.</body></html>\"]"
         
     | 
| 
       66 
     | 
    
         
            -
                    Scales::Storage::Async.connection.lpush("scales_response_155a255dd3604fa2e39469e30aef3206", json)
         
     | 
| 
       67 
     | 
    
         
            -
                    Scales::Storage::Async.connection.lpush("scales_response_155a255dd3604fa2e39469e30aef3207", json)
         
     | 
| 
       68 
     | 
    
         
            -
             
     | 
| 
       69 
     | 
    
         
            -
                    responses = described_class.new.instance_eval{ response_queue }
         
     | 
| 
       70 
     | 
    
         
            -
                    responses.should have_at_least(2).responses
         
     | 
| 
       71 
     | 
    
         
            -
                    EM.stop
         
     | 
| 
       72 
     | 
    
         
            -
                  end
         
     | 
| 
       73 
     | 
    
         
            -
                end
         
     | 
| 
       74 
     | 
    
         
            -
                
         
     | 
| 
       75 
63 
     | 
    
         
             
                it "sends push resources" do
         
     | 
| 
       76 
64 
     | 
    
         
             
                  with_api(described_class, {:verbose => true, :log_stdout => true}) do |server|
         
     | 
| 
       77 
65 
     | 
    
         
             
                    Scales::Storage::Async.flushall!      
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,19 +1,19 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: scales-monitor
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.0. 
     | 
| 
       5 
     | 
    
         
            -
              prerelease:  
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.0.4
         
     | 
| 
      
 5 
     | 
    
         
            +
              prerelease: 
         
     | 
| 
       6 
6 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       7 
7 
     | 
    
         
             
            authors:
         
     | 
| 
       8 
8 
     | 
    
         
             
            - Thomas Fankhauser
         
     | 
| 
       9 
9 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       10 
10 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       11 
11 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       12 
     | 
    
         
            -
            date: 2012-08- 
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2012-08-11 00:00:00.000000000 Z
         
     | 
| 
       13 
13 
     | 
    
         
             
            dependencies:
         
     | 
| 
       14 
14 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       15 
15 
     | 
    
         
             
              name: rake
         
     | 
| 
       16 
     | 
    
         
            -
              requirement: & 
     | 
| 
      
 16 
     | 
    
         
            +
              requirement: &70344757710880 !ruby/object:Gem::Requirement
         
     | 
| 
       17 
17 
     | 
    
         
             
                none: false
         
     | 
| 
       18 
18 
     | 
    
         
             
                requirements:
         
     | 
| 
       19 
19 
     | 
    
         
             
                - - ! '>='
         
     | 
| 
         @@ -21,10 +21,10 @@ dependencies: 
     | 
|
| 
       21 
21 
     | 
    
         
             
                    version: 0.9.2.2
         
     | 
| 
       22 
22 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       23 
23 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       24 
     | 
    
         
            -
              version_requirements: * 
     | 
| 
      
 24 
     | 
    
         
            +
              version_requirements: *70344757710880
         
     | 
| 
       25 
25 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       26 
26 
     | 
    
         
             
              name: rspec
         
     | 
| 
       27 
     | 
    
         
            -
              requirement: & 
     | 
| 
      
 27 
     | 
    
         
            +
              requirement: &70344757710380 !ruby/object:Gem::Requirement
         
     | 
| 
       28 
28 
     | 
    
         
             
                none: false
         
     | 
| 
       29 
29 
     | 
    
         
             
                requirements:
         
     | 
| 
       30 
30 
     | 
    
         
             
                - - ! '>='
         
     | 
| 
         @@ -32,32 +32,32 @@ dependencies: 
     | 
|
| 
       32 
32 
     | 
    
         
             
                    version: '2.11'
         
     | 
| 
       33 
33 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       34 
34 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       35 
     | 
    
         
            -
              version_requirements: * 
     | 
| 
      
 35 
     | 
    
         
            +
              version_requirements: *70344757710380
         
     | 
| 
       36 
36 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       37 
37 
     | 
    
         
             
              name: scales-core
         
     | 
| 
       38 
     | 
    
         
            -
              requirement: & 
     | 
| 
      
 38 
     | 
    
         
            +
              requirement: &70344757709940 !ruby/object:Gem::Requirement
         
     | 
| 
       39 
39 
     | 
    
         
             
                none: false
         
     | 
| 
       40 
40 
     | 
    
         
             
                requirements:
         
     | 
| 
       41 
41 
     | 
    
         
             
                - - =
         
     | 
| 
       42 
42 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       43 
     | 
    
         
            -
                    version: 0.0. 
     | 
| 
      
 43 
     | 
    
         
            +
                    version: 0.0.4
         
     | 
| 
       44 
44 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       45 
45 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       46 
     | 
    
         
            -
              version_requirements: * 
     | 
| 
      
 46 
     | 
    
         
            +
              version_requirements: *70344757709940
         
     | 
| 
       47 
47 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       48 
48 
     | 
    
         
             
              name: scales-server
         
     | 
| 
       49 
     | 
    
         
            -
              requirement: & 
     | 
| 
      
 49 
     | 
    
         
            +
              requirement: &70344757709460 !ruby/object:Gem::Requirement
         
     | 
| 
       50 
50 
     | 
    
         
             
                none: false
         
     | 
| 
       51 
51 
     | 
    
         
             
                requirements:
         
     | 
| 
       52 
52 
     | 
    
         
             
                - - =
         
     | 
| 
       53 
53 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       54 
     | 
    
         
            -
                    version: 0.0. 
     | 
| 
      
 54 
     | 
    
         
            +
                    version: 0.0.4
         
     | 
| 
       55 
55 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       56 
56 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       57 
     | 
    
         
            -
              version_requirements: * 
     | 
| 
      
 57 
     | 
    
         
            +
              version_requirements: *70344757709460
         
     | 
| 
       58 
58 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       59 
59 
     | 
    
         
             
              name: goliath
         
     | 
| 
       60 
     | 
    
         
            -
              requirement: & 
     | 
| 
      
 60 
     | 
    
         
            +
              requirement: &70344757709000 !ruby/object:Gem::Requirement
         
     | 
| 
       61 
61 
     | 
    
         
             
                none: false
         
     | 
| 
       62 
62 
     | 
    
         
             
                requirements:
         
     | 
| 
       63 
63 
     | 
    
         
             
                - - ! '>='
         
     | 
| 
         @@ -65,7 +65,7 @@ dependencies: 
     | 
|
| 
       65 
65 
     | 
    
         
             
                    version: 1.0.0.beta.1
         
     | 
| 
       66 
66 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       67 
67 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       68 
     | 
    
         
            -
              version_requirements: * 
     | 
| 
      
 68 
     | 
    
         
            +
              version_requirements: *70344757709000
         
     | 
| 
       69 
69 
     | 
    
         
             
            description: Super Scale Caching Framework - Monitor Server
         
     | 
| 
       70 
70 
     | 
    
         
             
            email:
         
     | 
| 
       71 
71 
     | 
    
         
             
            - tommylefunk@googlemail.com
         
     | 
| 
         @@ -157,9 +157,9 @@ required_ruby_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       157 
157 
     | 
    
         
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
       158 
158 
     | 
    
         
             
              none: false
         
     | 
| 
       159 
159 
     | 
    
         
             
              requirements:
         
     | 
| 
       160 
     | 
    
         
            -
              - - ! ' 
     | 
| 
      
 160 
     | 
    
         
            +
              - - ! '>='
         
     | 
| 
       161 
161 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       162 
     | 
    
         
            -
                  version:  
     | 
| 
      
 162 
     | 
    
         
            +
                  version: '0'
         
     | 
| 
       163 
163 
     | 
    
         
             
            requirements: []
         
     | 
| 
       164 
164 
     | 
    
         
             
            rubyforge_project: 
         
     | 
| 
       165 
165 
     | 
    
         
             
            rubygems_version: 1.8.11
         
     |