qless 0.10.5 → 0.11.0
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 +4 -4
 - data/README.md +11 -1
 - data/Rakefile +2 -2
 - data/lib/qless/middleware/sentry.rb +1 -1
 - data/lib/qless/middleware/timeout.rb +1 -1
 - data/lib/qless/server.rb +1 -0
 - data/lib/qless/server/static/css/docs.css +0 -21
 - data/lib/qless/server/static/css/jquery.noty.css +10 -11
 - data/lib/qless/server/static/css/noty_theme_twitter.css +13 -14
 - data/lib/qless/server/static/css/resque.css +204 -0
 - data/lib/qless/server/static/css/style.css +23 -190
 - data/lib/qless/server/views/failed.erb +10 -4
 - data/lib/qless/server/views/layout.erb +5 -0
 - data/lib/qless/version.rb +1 -1
 - metadata +19 -11
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: d90cb39f5a815e14fe5213ee01ec5ea36b771d02
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 1bbe259be1439258e67a380ddf5a9135395123e8
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 997edf93ad4f9b4fd87bdf2058e4355bf995c0fceba227006b31658d69acdb274f85347baa0fa562e85a9a1c540187caeae0ec9e33494ea10cfcf2a3e0531e8b
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: acac2dc97737aa5b63785aab8dec49dc688c6f55f1a6abd447e9d0450be3ac274dd261fff6505c7eef97b7a394c100dfdff88b873e11a37f74adb1c4c1b27aeb
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -299,6 +299,15 @@ end 
     | 
|
| 
       299 
299 
     | 
    
         
             
            For an app using Rails 3+, check the router documentation for how to mount
         
     | 
| 
       300 
300 
     | 
    
         
             
            rack apps.
         
     | 
| 
       301 
301 
     | 
    
         | 
| 
      
 302 
     | 
    
         
            +
            If you wish to run the web interface from the `exe` directory, you
         
     | 
| 
      
 303 
     | 
    
         
            +
            have the option to run the server as a daemon. Running as a daemon is
         
     | 
| 
      
 304 
     | 
    
         
            +
            default behavior. To run in the foreground, pass the `--foreground` or
         
     | 
| 
      
 305 
     | 
    
         
            +
            `-F` flag:
         
     | 
| 
      
 306 
     | 
    
         
            +
             
     | 
| 
      
 307 
     | 
    
         
            +
            ```bash
         
     | 
| 
      
 308 
     | 
    
         
            +
            PATH_TO_QLESS_DIST/exe/qless-web -F
         
     | 
| 
      
 309 
     | 
    
         
            +
            ```
         
     | 
| 
      
 310 
     | 
    
         
            +
             
     | 
| 
       302 
311 
     | 
    
         
             
            Job Dependencies
         
     | 
| 
       303 
312 
     | 
    
         
             
            ================
         
     | 
| 
       304 
313 
     | 
    
         
             
            Let's say you have one job that depends on another, but the task definitions are
         
     | 
| 
         @@ -645,6 +654,8 @@ bundle exec rake spec 
     | 
|
| 
       645 
654 
     | 
    
         | 
| 
       646 
655 
     | 
    
         
             
            To change the redis instance used in tests, put the connection information into [`./spec/redis.config.yml`](https://github.com/seomoz/qless/blob/92904532aee82aaf1078957ccadfa6fcd27ae408/spec/spec_helper.rb#L26).
         
     | 
| 
       647 
656 
     | 
    
         | 
| 
      
 657 
     | 
    
         
            +
            To help develop the web UI, run `bundle exec ./utils/dev/qless-web-dev` to run the server with seed data.
         
     | 
| 
      
 658 
     | 
    
         
            +
             
     | 
| 
       648 
659 
     | 
    
         
             
            To contribute, fork the repo, use feature branches, run the tests and open PRs.
         
     | 
| 
       649 
660 
     | 
    
         | 
| 
       650 
661 
     | 
    
         
             
            Mailing List
         
     | 
| 
         @@ -652,4 +663,3 @@ Mailing List 
     | 
|
| 
       652 
663 
     | 
    
         | 
| 
       653 
664 
     | 
    
         
             
            For questions and general Qless discussion, please join the [Qless
         
     | 
| 
       654 
665 
     | 
    
         
             
            Mailing list](https://groups.google.com/forum/?fromgroups#!forum/qless).
         
     | 
| 
       655 
     | 
    
         
            -
             
     | 
    
        data/Rakefile
    CHANGED
    
    | 
         @@ -51,8 +51,8 @@ namespace :core do 
     | 
|
| 
       51 
51 
     | 
    
         
             
                desc "Verifies the script has no uncommitted changes"
         
     | 
| 
       52 
52 
     | 
    
         
             
                task :clean do
         
     | 
| 
       53 
53 
     | 
    
         
             
                  script_files.each do |file|
         
     | 
| 
       54 
     | 
    
         
            -
                    git_status = `git status -- #{file}`
         
     | 
| 
       55 
     | 
    
         
            -
                    unless  
     | 
| 
      
 54 
     | 
    
         
            +
                    git_status = `git status --porcelain -- #{file}`
         
     | 
| 
      
 55 
     | 
    
         
            +
                    unless git_status.strip.empty?
         
     | 
| 
       56 
56 
     | 
    
         
             
                      raise "#{file} is dirty: \n\n#{git_status}\n\n"
         
     | 
| 
       57 
57 
     | 
    
         
             
                    end
         
     | 
| 
       58 
58 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -3,7 +3,7 @@ require 'qless/middleware/requeue_exceptions' 
     | 
|
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            module Qless
         
     | 
| 
       5 
5 
     | 
    
         
             
              # Unique error class used when a job is timed out by this middleware.
         
     | 
| 
       6 
     | 
    
         
            -
              # Allows us to differentiate this timeout from others caused by `::Timeout:: 
     | 
| 
      
 6 
     | 
    
         
            +
              # Allows us to differentiate this timeout from others caused by `::Timeout::Error`
         
     | 
| 
       7 
7 
     | 
    
         
             
              JobTimedoutError = Class.new(StandardError)
         
     | 
| 
       8 
8 
     | 
    
         
             
              InvalidTimeoutError = Class.new(ArgumentError)
         
     | 
| 
       9 
9 
     | 
    
         | 
    
        data/lib/qless/server.rb
    CHANGED
    
    
| 
         @@ -816,24 +816,3 @@ form.well { 
     | 
|
| 
       816 
816 
     | 
    
         
             
              }
         
     | 
| 
       817 
817 
     | 
    
         | 
| 
       818 
818 
     | 
    
         
             
            }
         
     | 
| 
       819 
     | 
    
         
            -
             
     | 
| 
       820 
     | 
    
         
            -
            /* For proper failed job display*/
         
     | 
| 
       821 
     | 
    
         
            -
            .l-sidebyside {
         
     | 
| 
       822 
     | 
    
         
            -
              overflow:auto;
         
     | 
| 
       823 
     | 
    
         
            -
            }
         
     | 
| 
       824 
     | 
    
         
            -
             
     | 
| 
       825 
     | 
    
         
            -
            .l-sidebyside > * {
         
     | 
| 
       826 
     | 
    
         
            -
              display:inline-block;
         
     | 
| 
       827 
     | 
    
         
            -
              *display: inline;
         
     | 
| 
       828 
     | 
    
         
            -
              *zoom: 1;
         
     | 
| 
       829 
     | 
    
         
            -
            }
         
     | 
| 
       830 
     | 
    
         
            -
             
     | 
| 
       831 
     | 
    
         
            -
            .failed-job > .min-col-size {
         
     | 
| 
       832 
     | 
    
         
            -
              min-width: 395px;
         
     | 
| 
       833 
     | 
    
         
            -
            }
         
     | 
| 
       834 
     | 
    
         
            -
             
     | 
| 
       835 
     | 
    
         
            -
            .failed-job .row {
         
     | 
| 
       836 
     | 
    
         
            -
              margin-left:0;
         
     | 
| 
       837 
     | 
    
         
            -
              margin-right:10px;
         
     | 
| 
       838 
     | 
    
         
            -
              height: 30px;
         
     | 
| 
       839 
     | 
    
         
            -
            }
         
     | 
| 
         @@ -1,4 +1,3 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
       2 
1 
     | 
    
         
             
            /* CORE STYLES */
         
     | 
| 
       3 
2 
     | 
    
         | 
| 
       4 
3 
     | 
    
         
             
            	/* noty bar */
         
     | 
| 
         @@ -7,17 +6,17 @@ 
     | 
|
| 
       7 
6 
     | 
    
         
             
            		display: none;
         
     | 
| 
       8 
7 
     | 
    
         
             
            		z-index: 9999999;
         
     | 
| 
       9 
8 
     | 
    
         
             
            	}
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
       11 
10 
     | 
    
         
             
            	/* noty_message */
         
     | 
| 
       12 
11 
     | 
    
         
             
            	.noty_bar .noty_message {
         
     | 
| 
       13 
12 
     | 
    
         
             
            		text-align: center;
         
     | 
| 
       14 
13 
     | 
    
         
             
            	}
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
       16 
15 
     | 
    
         
             
            	/* noty close button */
         
     | 
| 
       17 
16 
     | 
    
         
             
            	.noty_bar .noty_close {
         
     | 
| 
       18 
17 
     | 
    
         
             
            		cursor: pointer;
         
     | 
| 
       19 
18 
     | 
    
         
             
            	}
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
       21 
20 
     | 
    
         
             
            	/* noty modal */
         
     | 
| 
       22 
21 
     | 
    
         
             
            	.noty_modal {
         
     | 
| 
       23 
22 
     | 
    
         
             
            		position: fixed;
         
     | 
| 
         @@ -30,7 +29,7 @@ 
     | 
|
| 
       30 
29 
     | 
    
         
             
            		left: 0;
         
     | 
| 
       31 
30 
     | 
    
         
             
            		top: 0;
         
     | 
| 
       32 
31 
     | 
    
         
             
            	}
         
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
       34 
33 
     | 
    
         
             
            	/* noty container for noty_layout_topLeft & noty_layout_topRight */
         
     | 
| 
       35 
34 
     | 
    
         
             
            	ul.noty_cont {
         
     | 
| 
       36 
35 
     | 
    
         
             
            		position: fixed;
         
     | 
| 
         @@ -81,9 +80,9 @@ 
     | 
|
| 
       81 
80 
     | 
    
         
             
            	.noty_bar.noty_layout_center {
         
     | 
| 
       82 
81 
     | 
    
         
             
            		top: 40%;
         
     | 
| 
       83 
82 
     | 
    
         
             
            	}
         
     | 
| 
       84 
     | 
    
         
            -
             
     | 
| 
      
 83 
     | 
    
         
            +
             
     | 
| 
       85 
84 
     | 
    
         
             
            	/* noty_layout_topLeft & noty_layout_topRight */
         
     | 
| 
       86 
     | 
    
         
            -
            	.noty_bar.noty_layout_topLeft, 
     | 
| 
      
 85 
     | 
    
         
            +
            	.noty_bar.noty_layout_topLeft,
         
     | 
| 
       87 
86 
     | 
    
         
             
            	.noty_bar.noty_layout_topRight,
         
     | 
| 
       88 
87 
     | 
    
         
             
            	.noty_bar.noty_layout_bottomLeft,
         
     | 
| 
       89 
88 
     | 
    
         
             
            	.noty_bar.noty_layout_bottomRight {
         
     | 
| 
         @@ -91,15 +90,15 @@ 
     | 
|
| 
       91 
90 
     | 
    
         
             
            		clear: both;
         
     | 
| 
       92 
91 
     | 
    
         
             
            		position: relative;
         
     | 
| 
       93 
92 
     | 
    
         
             
            	}
         
     | 
| 
       94 
     | 
    
         
            -
             
     | 
| 
       95 
     | 
    
         
            -
            	.noty_bar.noty_layout_topLeft .noty_message, 
     | 
| 
      
 93 
     | 
    
         
            +
             
     | 
| 
      
 94 
     | 
    
         
            +
            	.noty_bar.noty_layout_topLeft .noty_message,
         
     | 
| 
       96 
95 
     | 
    
         
             
            	.noty_bar.noty_layout_topRight .noty_message,
         
     | 
| 
       97 
96 
     | 
    
         
             
            	.noty_bar.noty_layout_bottomLeft .noty_message,
         
     | 
| 
       98 
97 
     | 
    
         
             
            	.noty_bar.noty_layout_bottomRight .noty_message {
         
     | 
| 
       99 
98 
     | 
    
         
             
            		text-align: left;
         
     | 
| 
       100 
99 
     | 
    
         
             
            	}
         
     | 
| 
       101 
     | 
    
         
            -
             
     | 
| 
      
 100 
     | 
    
         
            +
             
     | 
| 
       102 
101 
     | 
    
         
             
            	/* noty_layout_topCenter */
         
     | 
| 
       103 
102 
     | 
    
         
             
            	.noty_bar.noty_layout_topCenter {
         
     | 
| 
       104 
103 
     | 
    
         
             
            		top: 20px;
         
     | 
| 
       105 
     | 
    
         
            -
            	}
         
     | 
| 
      
 104 
     | 
    
         
            +
            	}
         
     | 
| 
         @@ -1,4 +1,3 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
       2 
1 
     | 
    
         
             
            /* CORE STYLES*/
         
     | 
| 
       3 
2 
     | 
    
         | 
| 
       4 
3 
     | 
    
         
             
            	/* noty bar */
         
     | 
| 
         @@ -8,12 +7,12 @@ 
     | 
|
| 
       8 
7 
     | 
    
         
             
                text-shadow: 0 1px 0 #fff;
         
     | 
| 
       9 
8 
     | 
    
         
             
                font-family: "Helvetica Neue",Helvetica,Arial,sans-serif;
         
     | 
| 
       10 
9 
     | 
    
         
             
            	}
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
       12 
11 
     | 
    
         
             
            	/* custom container */
         
     | 
| 
       13 
12 
     | 
    
         
             
            	.noty_custom_container.noty_theme_twitter.noty_layout_inline {
         
     | 
| 
       14 
13 
     | 
    
         
             
            		position: relative;
         
     | 
| 
       15 
14 
     | 
    
         
             
            	}
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
       17 
16 
     | 
    
         
             
            	/* custom growl container */
         
     | 
| 
       18 
17 
     | 
    
         
             
            	.noty_custom_container.noty_theme_twitter.noty_layout_inline .noty_cont.noty_layout_inline {
         
     | 
| 
       19 
18 
     | 
    
         
             
            		position: static;
         
     | 
| 
         @@ -29,7 +28,7 @@ 
     | 
|
| 
       29 
28 
     | 
    
         
             
            				.noty_custom_container.noty_theme_twitter.noty_layout_inline .noty_bar .noty_message .noty_buttons {
         
     | 
| 
       30 
29 
     | 
    
         
             
            					margin-top: -1px;
         
     | 
| 
       31 
30 
     | 
    
         
             
            				}
         
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
       33 
32 
     | 
    
         
             
            	/* noty_message */
         
     | 
| 
       34 
33 
     | 
    
         
             
            	.noty_bar.noty_theme_twitter .noty_message {
         
     | 
| 
       35 
34 
     | 
    
         
             
            		padding: 8px 14px;
         
     | 
| 
         @@ -38,19 +37,19 @@ 
     | 
|
| 
       38 
37 
     | 
    
         
             
            	.noty_bar.noty_theme_twitter.noty_closable .noty_message {
         
     | 
| 
       39 
38 
     | 
    
         
             
            		padding: 8px 35px 8px 14px;
         
     | 
| 
       40 
39 
     | 
    
         
             
            	}
         
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
       42 
41 
     | 
    
         
             
            	/* noty_buttons */
         
     | 
| 
       43 
42 
     | 
    
         
             
            	.noty_bar.noty_theme_twitter .noty_message .noty_buttons {
         
     | 
| 
       44 
43 
     | 
    
         
             
            		float: right;
         
     | 
| 
       45 
44 
     | 
    
         
             
            		margin-top: -5px;
         
     | 
| 
       46 
45 
     | 
    
         
             
            		margin-left: 4px;
         
     | 
| 
       47 
46 
     | 
    
         
             
            	}
         
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
       49 
48 
     | 
    
         
             
            	/* noty_button */
         
     | 
| 
       50 
49 
     | 
    
         
             
            	.noty_bar.noty_theme_twitter .noty_message .noty_buttons button {
         
     | 
| 
       51 
50 
     | 
    
         
             
            		margin-left: 5px;
         
     | 
| 
       52 
51 
     | 
    
         
             
            	}
         
     | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
       54 
53 
     | 
    
         
             
            	/* noty close button */
         
     | 
| 
       55 
54 
     | 
    
         
             
            	.noty_bar.noty_theme_twitter .noty_close {
         
     | 
| 
       56 
55 
     | 
    
         
             
            		position: absolute;
         
     | 
| 
         @@ -63,21 +62,21 @@ 
     | 
|
| 
       63 
62 
     | 
    
         
             
            		opacity: 0.2;
         
     | 
| 
       64 
63 
     | 
    
         
             
            		text-shadow: 0 1px 0 #fff;
         
     | 
| 
       65 
64 
     | 
    
         
             
            	}
         
     | 
| 
       66 
     | 
    
         
            -
             
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
       67 
66 
     | 
    
         
             
            	/* noty close button hover */
         
     | 
| 
       68 
67 
     | 
    
         
             
            	.noty_bar.noty_theme_twitter .noty_close:hover {
         
     | 
| 
       69 
68 
     | 
    
         
             
            		opacity: 0.4;
         
     | 
| 
       70 
69 
     | 
    
         
             
            	}
         
     | 
| 
       71 
     | 
    
         
            -
             
     | 
| 
      
 70 
     | 
    
         
            +
             
     | 
| 
       72 
71 
     | 
    
         
             
            	.noty_bar.noty_theme_twitter .noty_close:after {
         
     | 
| 
       73 
72 
     | 
    
         
             
            		content: "x";
         
     | 
| 
       74 
73 
     | 
    
         
             
            	}
         
     | 
| 
       75 
     | 
    
         
            -
             
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
       76 
75 
     | 
    
         
             
            	/* noty modal */
         
     | 
| 
       77 
76 
     | 
    
         
             
            	.noty_modal.noty_theme_twitter {
         
     | 
| 
       78 
77 
     | 
    
         
             
            		opacity: 0.7;
         
     | 
| 
       79 
78 
     | 
    
         
             
            	}
         
     | 
| 
       80 
     | 
    
         
            -
             
     | 
| 
      
 79 
     | 
    
         
            +
             
     | 
| 
       81 
80 
     | 
    
         
             
            /* LAYOUTS */
         
     | 
| 
       82 
81 
     | 
    
         | 
| 
       83 
82 
     | 
    
         
             
            	/* noty_layout_topLeft & noty_layout_topRight */
         
     | 
| 
         @@ -102,13 +101,13 @@ 
     | 
|
| 
       102 
101 
     | 
    
         
             
            	  padding-top: 10px;
         
     | 
| 
       103 
102 
     | 
    
         
             
            	  text-align: right;
         
     | 
| 
       104 
103 
     | 
    
         
             
            	}
         
     | 
| 
       105 
     | 
    
         
            -
             
     | 
| 
      
 104 
     | 
    
         
            +
             
     | 
| 
       106 
105 
     | 
    
         
             
            	.noty_bar.noty_theme_twitter.noty_layout_center .noty_message .noty_buttons,
         
     | 
| 
       107 
106 
     | 
    
         
             
            	.noty_bar.noty_theme_twitter.noty_layout_topCenter .noty_message .noty_buttons {
         
     | 
| 
       108 
107 
     | 
    
         
             
            		margin-left: 15px;
         
     | 
| 
       109 
108 
     | 
    
         
             
            		margin-top: -2px
         
     | 
| 
       110 
109 
     | 
    
         
             
            	}
         
     | 
| 
       111 
     | 
    
         
            -
             
     | 
| 
      
 110 
     | 
    
         
            +
             
     | 
| 
       112 
111 
     | 
    
         
             
            /* NOTIFICATION TYPES */
         
     | 
| 
       113 
112 
     | 
    
         | 
| 
       114 
113 
     | 
    
         
             
            	/* noty_alert */
         
     | 
| 
         @@ -134,4 +133,4 @@ 
     | 
|
| 
       134 
133 
     | 
    
         
             
            		background-color: #D9EDF7;
         
     | 
| 
       135 
134 
     | 
    
         
             
            		border: 1px solid #BCE8F1;
         
     | 
| 
       136 
135 
     | 
    
         
             
            		color: #3A87AD;
         
     | 
| 
       137 
     | 
    
         
            -
            	}
         
     | 
| 
      
 136 
     | 
    
         
            +
            	}
         
     | 
| 
         @@ -0,0 +1,204 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            /* @override http://localhost:4567/css/style.css */
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            /* Shamelessly poached from resque
         
     | 
| 
      
 4 
     | 
    
         
            +
            	SEOmoz Blue: #4d87e2;
         
     | 
| 
      
 5 
     | 
    
         
            +
             */
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            .queue-name {
         
     | 
| 
      
 8 
     | 
    
         
            +
            	font-size: 25px;
         
     | 
| 
      
 9 
     | 
    
         
            +
            	font-weight: bold;
         
     | 
| 
      
 10 
     | 
    
         
            +
            }
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            .queue-summary {
         
     | 
| 
      
 13 
     | 
    
         
            +
            	font-size: 20px;
         
     | 
| 
      
 14 
     | 
    
         
            +
            }
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            .queue-summary-description {
         
     | 
| 
      
 17 
     | 
    
         
            +
            	font-size: 12px;
         
     | 
| 
      
 18 
     | 
    
         
            +
            	color: lightgrey;
         
     | 
| 
      
 19 
     | 
    
         
            +
            }
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
            .queue-stats {
         
     | 
| 
      
 22 
     | 
    
         
            +
            	margin-top: 10px;
         
     | 
| 
      
 23 
     | 
    
         
            +
            }
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            .queue-stats-date {}
         
     | 
| 
      
 26 
     | 
    
         
            +
            .queue-stats-failures {}
         
     | 
| 
      
 27 
     | 
    
         
            +
            .queue-stats-time {}
         
     | 
| 
      
 28 
     | 
    
         
            +
            .queue-stats-wait {}
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
            .queue-stats-time-title {
         
     | 
| 
      
 31 
     | 
    
         
            +
            	font-size: 20px;
         
     | 
| 
      
 32 
     | 
    
         
            +
            	width: 100%;
         
     | 
| 
      
 33 
     | 
    
         
            +
            	text-align: center;
         
     | 
| 
      
 34 
     | 
    
         
            +
            	margin-bottom: 10px;
         
     | 
| 
      
 35 
     | 
    
         
            +
            	margin-top: 10px;
         
     | 
| 
      
 36 
     | 
    
         
            +
            }
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
            .queue-stats-time-summary {
         
     | 
| 
      
 39 
     | 
    
         
            +
            	text-align: center;
         
     | 
| 
      
 40 
     | 
    
         
            +
            }
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
            .queue-stats-time-histogram-wait {}
         
     | 
| 
      
 43 
     | 
    
         
            +
            .queue-stats-time-histogram-run {}
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
            .job-id {
         
     | 
| 
      
 46 
     | 
    
         
            +
            	float: left;
         
     | 
| 
      
 47 
     | 
    
         
            +
            	font-size: 20px;
         
     | 
| 
      
 48 
     | 
    
         
            +
            	font-weight: bold;
         
     | 
| 
      
 49 
     | 
    
         
            +
            	padding-bottom: 10px;
         
     | 
| 
      
 50 
     | 
    
         
            +
            }
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
            .job-priority {
         
     | 
| 
      
 53 
     | 
    
         
            +
            	font-size: 16px;
         
     | 
| 
      
 54 
     | 
    
         
            +
            	padding-left: 5px;
         
     | 
| 
      
 55 
     | 
    
         
            +
            }
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
            .button {
         
     | 
| 
      
 58 
     | 
    
         
            +
            	background-color: darkgray;
         
     | 
| 
      
 59 
     | 
    
         
            +
            	float: left;
         
     | 
| 
      
 60 
     | 
    
         
            +
            	-webkit-border-radius: 5px;
         
     | 
| 
      
 61 
     | 
    
         
            +
            	-moz-border-radius: 5px;
         
     | 
| 
      
 62 
     | 
    
         
            +
            	border-radius: 5px;
         
     | 
| 
      
 63 
     | 
    
         
            +
            	color: white;
         
     | 
| 
      
 64 
     | 
    
         
            +
            	font-weight: bold;
         
     | 
| 
      
 65 
     | 
    
         
            +
            	padding-top: 2px;
         
     | 
| 
      
 66 
     | 
    
         
            +
            	padding-left: 7px;
         
     | 
| 
      
 67 
     | 
    
         
            +
            	padding-right: 7px;
         
     | 
| 
      
 68 
     | 
    
         
            +
            	padding-bottom: 3px;
         
     | 
| 
      
 69 
     | 
    
         
            +
            	margin-left: 5px;
         
     | 
| 
      
 70 
     | 
    
         
            +
             
     | 
| 
      
 71 
     | 
    
         
            +
            }
         
     | 
| 
      
 72 
     | 
    
         
            +
             
     | 
| 
      
 73 
     | 
    
         
            +
            .cancel-button {
         
     | 
| 
      
 74 
     | 
    
         
            +
            	background-color: red;
         
     | 
| 
      
 75 
     | 
    
         
            +
            }
         
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
      
 77 
     | 
    
         
            +
            .job-tags {
         
     | 
| 
      
 78 
     | 
    
         
            +
            	clear: both;
         
     | 
| 
      
 79 
     | 
    
         
            +
            	margin-left: 15px;
         
     | 
| 
      
 80 
     | 
    
         
            +
            }
         
     | 
| 
      
 81 
     | 
    
         
            +
             
     | 
| 
      
 82 
     | 
    
         
            +
            .job-tag {
         
     | 
| 
      
 83 
     | 
    
         
            +
            	border: none;
         
     | 
| 
      
 84 
     | 
    
         
            +
            	-webkit-border-radius: 15px;
         
     | 
| 
      
 85 
     | 
    
         
            +
            	-moz-border-radius: 15px;
         
     | 
| 
      
 86 
     | 
    
         
            +
            	border-radius: 15px;
         
     | 
| 
      
 87 
     | 
    
         
            +
            	padding-left: 10px;
         
     | 
| 
      
 88 
     | 
    
         
            +
            	padding-right: 10px;
         
     | 
| 
      
 89 
     | 
    
         
            +
            }
         
     | 
| 
      
 90 
     | 
    
         
            +
             
     | 
| 
      
 91 
     | 
    
         
            +
            .job-summary-container > .job-tags {
         
     | 
| 
      
 92 
     | 
    
         
            +
            	float: left;
         
     | 
| 
      
 93 
     | 
    
         
            +
            	clear: none;
         
     | 
| 
      
 94 
     | 
    
         
            +
            	margin-top: 1px;
         
     | 
| 
      
 95 
     | 
    
         
            +
            }
         
     | 
| 
      
 96 
     | 
    
         
            +
             
     | 
| 
      
 97 
     | 
    
         
            +
            .job-summary-container > .job-summary {
         
     | 
| 
      
 98 
     | 
    
         
            +
            	float: left;
         
     | 
| 
      
 99 
     | 
    
         
            +
            	clear: none;
         
     | 
| 
      
 100 
     | 
    
         
            +
            	margin-top: -7px;
         
     | 
| 
      
 101 
     | 
    
         
            +
            	padding-left: 12px;
         
     | 
| 
      
 102 
     | 
    
         
            +
            }
         
     | 
| 
      
 103 
     | 
    
         
            +
             
     | 
| 
      
 104 
     | 
    
         
            +
            .job-summary {
         
     | 
| 
      
 105 
     | 
    
         
            +
            	clear: both;
         
     | 
| 
      
 106 
     | 
    
         
            +
            	padding-top: 10px;
         
     | 
| 
      
 107 
     | 
    
         
            +
            	font-size: 16px;
         
     | 
| 
      
 108 
     | 
    
         
            +
            }
         
     | 
| 
      
 109 
     | 
    
         
            +
             
     | 
| 
      
 110 
     | 
    
         
            +
            .job-state, .job-queue, .job-worker {
         
     | 
| 
      
 111 
     | 
    
         
            +
            	font-weight: bold;
         
     | 
| 
      
 112 
     | 
    
         
            +
            }
         
     | 
| 
      
 113 
     | 
    
         
            +
             
     | 
| 
      
 114 
     | 
    
         
            +
            .job-data-container {
         
     | 
| 
      
 115 
     | 
    
         
            +
            	margin-top: 10px;
         
     | 
| 
      
 116 
     | 
    
         
            +
            	border: 2px solid black;
         
     | 
| 
      
 117 
     | 
    
         
            +
            }
         
     | 
| 
      
 118 
     | 
    
         
            +
             
     | 
| 
      
 119 
     | 
    
         
            +
            html { background:#efefef; font-family:Arial, Verdana, sans-serif; font-size:13px; }
         
     | 
| 
      
 120 
     | 
    
         
            +
            body { padding:0; margin:0; }
         
     | 
| 
      
 121 
     | 
    
         
            +
             
     | 
| 
      
 122 
     | 
    
         
            +
            .header { background:#000; padding:8px 5% 0 5%; border-bottom:1px solid #444;border-bottom:5px solid #4d87e2;}
         
     | 
| 
      
 123 
     | 
    
         
            +
            .header h1 { color:#333; font-size:90%; font-weight:bold; margin-bottom:6px;}
         
     | 
| 
      
 124 
     | 
    
         
            +
            .header ul li { display:inline;}
         
     | 
| 
      
 125 
     | 
    
         
            +
            .header ul li a { color:#fff; text-decoration:none; margin-right:10px; display:inline-block;  padding:8px; -webkit-border-top-right-radius:6px; -webkit-border-top-left-radius:6px; -moz-border-radius-topleft:6px; -moz-border-radius-topright:6px; }
         
     | 
| 
      
 126 
     | 
    
         
            +
            .header ul li a:hover { background:#333;}
         
     | 
| 
      
 127 
     | 
    
         
            +
            .header ul li.current a { background:#ce1212; font-weight:bold; color:#fff;}
         
     | 
| 
      
 128 
     | 
    
         
            +
             
     | 
| 
      
 129 
     | 
    
         
            +
            .header .namespace { position: absolute; right: 75px; top: 10px; color: #7A7A7A; }
         
     | 
| 
      
 130 
     | 
    
         
            +
             
     | 
| 
      
 131 
     | 
    
         
            +
            .subnav { padding:2px 5% 7px 5%; background:#ce1212; font-size:90%;}
         
     | 
| 
      
 132 
     | 
    
         
            +
            .subnav li { display:inline;}
         
     | 
| 
      
 133 
     | 
    
         
            +
            .subnav li a { color:#fff; text-decoration:none; margin-right:10px; display:inline-block; background:#dd5b5b; padding:5px; -webkit-border-radius:3px; -moz-border-radius:3px;}
         
     | 
| 
      
 134 
     | 
    
         
            +
            .subnav li.current a { background:#fff; font-weight:bold; color:#ce1212;}
         
     | 
| 
      
 135 
     | 
    
         
            +
            .subnav li a:active { background:#b00909;}
         
     | 
| 
      
 136 
     | 
    
         
            +
             
     | 
| 
      
 137 
     | 
    
         
            +
            #main { padding:10px 5%; background:#fff; overflow:hidden; }
         
     | 
| 
      
 138 
     | 
    
         
            +
            #main .logo { float:right; margin:10px;}
         
     | 
| 
      
 139 
     | 
    
         
            +
            #main span.hl { background:#efefef; padding:2px;}
         
     | 
| 
      
 140 
     | 
    
         
            +
            #main h1 { margin:10px 0; font-size:190%; font-weight:bold; color:#ce1212;}
         
     | 
| 
      
 141 
     | 
    
         
            +
            #main h2 { margin:10px 0; font-size:130%;}
         
     | 
| 
      
 142 
     | 
    
         
            +
            #main table { width:100%; margin:10px 0;}
         
     | 
| 
      
 143 
     | 
    
         
            +
            #main table tr td, #main table tr th { border:1px solid #ccc; padding:6px;}
         
     | 
| 
      
 144 
     | 
    
         
            +
            #main table tr th { background:#efefef; color:#888; font-size:80%; font-weight:bold;}
         
     | 
| 
      
 145 
     | 
    
         
            +
            #main table tr td.no-data { text-align:center; padding:40px 0; color:#999; font-style:italic; font-size:130%;}
         
     | 
| 
      
 146 
     | 
    
         
            +
            #main a { color:#111;}
         
     | 
| 
      
 147 
     | 
    
         
            +
            #main p { margin:5px 0;}
         
     | 
| 
      
 148 
     | 
    
         
            +
            #main p.intro { margin-bottom:15px; font-size:85%; color:#999; margin-top:0; line-height:1.3;}
         
     | 
| 
      
 149 
     | 
    
         
            +
            #main h1.wi { margin-bottom:5px;}
         
     | 
| 
      
 150 
     | 
    
         
            +
            #main p.sub { font-size:95%; color:#999;}
         
     | 
| 
      
 151 
     | 
    
         
            +
             
     | 
| 
      
 152 
     | 
    
         
            +
            #main table.queues { width:40%;}
         
     | 
| 
      
 153 
     | 
    
         
            +
            #main table.queues td.queue { font-weight:bold; width:50%;}
         
     | 
| 
      
 154 
     | 
    
         
            +
            #main table.queues tr.failed td { border-top:2px solid; font-size:90%; }
         
     | 
| 
      
 155 
     | 
    
         
            +
            #main table.queues tr.failure td { background:#ffecec; border-top:2px solid #d37474; font-size:90%; color:#d37474;}
         
     | 
| 
      
 156 
     | 
    
         
            +
            #main table.queues tr.failure td a{ color:#d37474;}
         
     | 
| 
      
 157 
     | 
    
         
            +
             
     | 
| 
      
 158 
     | 
    
         
            +
            #main table.jobs td.class { font-family:Monaco, "Courier New", monospace; font-size:90%; width:50%;}
         
     | 
| 
      
 159 
     | 
    
         
            +
            #main table.jobs td.args{ width:50%;}
         
     | 
| 
      
 160 
     | 
    
         
            +
             
     | 
| 
      
 161 
     | 
    
         
            +
            #main table.workers td.icon {width:1%; background:#efefef;text-align:center;}
         
     | 
| 
      
 162 
     | 
    
         
            +
            #main table.workers td.icon img { height: 16px; width: 16px; }
         
     | 
| 
      
 163 
     | 
    
         
            +
            #main table.workers td.where { width:25%;}
         
     | 
| 
      
 164 
     | 
    
         
            +
            #main table.workers td.queues { width:35%;}
         
     | 
| 
      
 165 
     | 
    
         
            +
            #main .queue-tag { background:#b1d2e9; padding:2px; margin:0 3px; font-size:80%; text-decoration:none; text-transform:uppercase; font-weight:bold; color:#3274a2; -webkit-border-radius:4px; -moz-border-radius:4px;}
         
     | 
| 
      
 166 
     | 
    
         
            +
            #main table.workers td.queues.queue { width:10%;}
         
     | 
| 
      
 167 
     | 
    
         
            +
            #main table.workers td.process { width:35%;}
         
     | 
| 
      
 168 
     | 
    
         
            +
            #main table.workers td.process span.waiting { color:#999; font-size:90%;}
         
     | 
| 
      
 169 
     | 
    
         
            +
            #main table.workers td.process small { font-size:80%; margin-left:5px;}
         
     | 
| 
      
 170 
     | 
    
         
            +
            #main table.workers td.process code { font-family:Monaco, "Courier New", monospace; font-size:90%;}
         
     | 
| 
      
 171 
     | 
    
         
            +
            #main table.workers td.process small a { color:#999;}
         
     | 
| 
      
 172 
     | 
    
         
            +
            #main.polling table.workers tr.working td { background:#f4ffe4; color:#7ac312;}
         
     | 
| 
      
 173 
     | 
    
         
            +
            #main.polling table.workers tr.working td.where a { color:#7ac312;}
         
     | 
| 
      
 174 
     | 
    
         
            +
            #main.polling table.workers tr.working td.process code { font-weight:bold;}
         
     | 
| 
      
 175 
     | 
    
         
            +
             
     | 
| 
      
 176 
     | 
    
         
            +
             
     | 
| 
      
 177 
     | 
    
         
            +
            #main table.stats th { font-size:100%; width:40%; color:#000;}
         
     | 
| 
      
 178 
     | 
    
         
            +
            #main hr { border:0; border-top:5px solid #efefef;  margin:15px 0;}
         
     | 
| 
      
 179 
     | 
    
         
            +
             
     | 
| 
      
 180 
     | 
    
         
            +
            #footer { padding:10px 5%; background:#efefef; color:#999; font-size:85%; line-height:1.5; border-top:5px solid #ccc; padding-top:10px;}
         
     | 
| 
      
 181 
     | 
    
         
            +
            #footer p a { color:#999;}
         
     | 
| 
      
 182 
     | 
    
         
            +
             
     | 
| 
      
 183 
     | 
    
         
            +
            #main p.poll { background:url(poll.png) no-repeat 0 2px; padding:3px 0; padding-left:23px; float:right; font-size:85%; }
         
     | 
| 
      
 184 
     | 
    
         
            +
             
     | 
| 
      
 185 
     | 
    
         
            +
            #main ul.failed {}
         
     | 
| 
      
 186 
     | 
    
         
            +
            #main ul.failed li {background:-webkit-gradient(linear, left top, left bottom, from(#efefef), to(#fff)) #efefef; margin-top:10px; padding:10px; overflow:hidden; -webkit-border-radius:5px; border:1px solid #ccc; }
         
     | 
| 
      
 187 
     | 
    
         
            +
            #main ul.failed li dl dt {font-size:80%; color:#999; width:60px; float:left; padding-top:1px; text-align:right;}
         
     | 
| 
      
 188 
     | 
    
         
            +
            #main ul.failed li dl dd {margin-bottom:10px; margin-left:70px;}
         
     | 
| 
      
 189 
     | 
    
         
            +
            #main ul.failed li dl dd .retried { float:right; text-align: right; }
         
     | 
| 
      
 190 
     | 
    
         
            +
            #main ul.failed li dl dd .retried .remove { display:none; margin-top: 8px; }
         
     | 
| 
      
 191 
     | 
    
         
            +
            #main ul.failed li.hover dl dd .retried .remove { display:block; }
         
     | 
| 
      
 192 
     | 
    
         
            +
            #main ul.failed li dl dd .controls { display:none; float:right; }
         
     | 
| 
      
 193 
     | 
    
         
            +
            #main ul.failed li.hover dl dd .controls { display:block; }
         
     | 
| 
      
 194 
     | 
    
         
            +
            #main ul.failed li dl dd code, #main ul.failed li dl dd pre { font-family:Monaco, "Courier New", monospace; font-size:90%; white-space: pre-wrap;}
         
     | 
| 
      
 195 
     | 
    
         
            +
            #main ul.failed li dl dd.error a {font-family:Monaco, "Courier New", monospace; font-size:90%; }
         
     | 
| 
      
 196 
     | 
    
         
            +
            #main ul.failed li dl dd.error pre { margin-top:3px; line-height:1.3;}
         
     | 
| 
      
 197 
     | 
    
         
            +
             
     | 
| 
      
 198 
     | 
    
         
            +
            #main p.pagination { background:#efefef; padding:10px; overflow:hidden;}
         
     | 
| 
      
 199 
     | 
    
         
            +
            #main p.pagination a.less { float:left;}
         
     | 
| 
      
 200 
     | 
    
         
            +
            #main p.pagination a.more { float:right;}
         
     | 
| 
      
 201 
     | 
    
         
            +
             
     | 
| 
      
 202 
     | 
    
         
            +
            #main form {float:right; margin-top:-10px;margin-left:10px;}
         
     | 
| 
      
 203 
     | 
    
         
            +
             
     | 
| 
      
 204 
     | 
    
         
            +
            #main .time a.toggle_format {text-decoration:none;}
         
     | 
| 
         @@ -1,204 +1,37 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            /*  
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            	SEOmoz Blue: #4d87e2;
         
     | 
| 
       5 
     | 
    
         
            -
             */
         
     | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
       7 
     | 
    
         
            -
            .queue-name {
         
     | 
| 
       8 
     | 
    
         
            -
            	font-size: 25px;
         
     | 
| 
       9 
     | 
    
         
            -
            	font-weight: bold;
         
     | 
| 
       10 
     | 
    
         
            -
            }
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
            .queue-summary {
         
     | 
| 
       13 
     | 
    
         
            -
            	font-size: 20px;
         
     | 
| 
       14 
     | 
    
         
            -
            }
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
            .queue-summary-description {
         
     | 
| 
       17 
     | 
    
         
            -
            	font-size: 12px;
         
     | 
| 
       18 
     | 
    
         
            -
            	color: lightgrey;
         
     | 
| 
       19 
     | 
    
         
            -
            }
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
            .queue-stats {
         
     | 
| 
       22 
     | 
    
         
            -
            	margin-top: 10px;
         
     | 
| 
       23 
     | 
    
         
            -
            }
         
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
            .queue-stats-date {}
         
     | 
| 
       26 
     | 
    
         
            -
            .queue-stats-failures {}
         
     | 
| 
       27 
     | 
    
         
            -
            .queue-stats-time {}
         
     | 
| 
       28 
     | 
    
         
            -
            .queue-stats-wait {}
         
     | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
       30 
     | 
    
         
            -
            .queue-stats-time-title {
         
     | 
| 
       31 
     | 
    
         
            -
            	font-size: 20px;
         
     | 
| 
       32 
     | 
    
         
            -
            	width: 100%;
         
     | 
| 
       33 
     | 
    
         
            -
            	text-align: center;
         
     | 
| 
       34 
     | 
    
         
            -
            	margin-bottom: 10px;
         
     | 
| 
       35 
     | 
    
         
            -
            	margin-top: 10px;
         
     | 
| 
       36 
     | 
    
         
            -
            }
         
     | 
| 
       37 
     | 
    
         
            -
             
     | 
| 
       38 
     | 
    
         
            -
            .queue-stats-time-summary {
         
     | 
| 
       39 
     | 
    
         
            -
            	text-align: center;
         
     | 
| 
       40 
     | 
    
         
            -
            }
         
     | 
| 
       41 
     | 
    
         
            -
             
     | 
| 
       42 
     | 
    
         
            -
            .queue-stats-time-histogram-wait {}
         
     | 
| 
       43 
     | 
    
         
            -
            .queue-stats-time-histogram-run {}
         
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
            .job-id {
         
     | 
| 
       46 
     | 
    
         
            -
            	float: left;
         
     | 
| 
       47 
     | 
    
         
            -
            	font-size: 20px;
         
     | 
| 
       48 
     | 
    
         
            -
            	font-weight: bold;
         
     | 
| 
       49 
     | 
    
         
            -
            	padding-bottom: 10px;
         
     | 
| 
       50 
     | 
    
         
            -
            }
         
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
     | 
    
         
            -
            .job-priority {
         
     | 
| 
       53 
     | 
    
         
            -
            	font-size: 16px;
         
     | 
| 
       54 
     | 
    
         
            -
            	padding-left: 5px;
         
     | 
| 
       55 
     | 
    
         
            -
            }
         
     | 
| 
       56 
     | 
    
         
            -
             
     | 
| 
       57 
     | 
    
         
            -
            .button {
         
     | 
| 
       58 
     | 
    
         
            -
            	background-color: darkgray;
         
     | 
| 
       59 
     | 
    
         
            -
            	float: left;
         
     | 
| 
       60 
     | 
    
         
            -
            	-webkit-border-radius: 5px;
         
     | 
| 
       61 
     | 
    
         
            -
            	-moz-border-radius: 5px;
         
     | 
| 
       62 
     | 
    
         
            -
            	border-radius: 5px;
         
     | 
| 
       63 
     | 
    
         
            -
            	color: white;
         
     | 
| 
       64 
     | 
    
         
            -
            	font-weight: bold;
         
     | 
| 
       65 
     | 
    
         
            -
            	padding-top: 2px;
         
     | 
| 
       66 
     | 
    
         
            -
            	padding-left: 7px;
         
     | 
| 
       67 
     | 
    
         
            -
            	padding-right: 7px;
         
     | 
| 
       68 
     | 
    
         
            -
            	padding-bottom: 3px;
         
     | 
| 
       69 
     | 
    
         
            -
            	margin-left: 5px;
         
     | 
| 
       70 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            /* For proper failed job display*/
         
     | 
| 
      
 2 
     | 
    
         
            +
            .l-sidebyside {
         
     | 
| 
      
 3 
     | 
    
         
            +
              overflow:auto;
         
     | 
| 
       71 
4 
     | 
    
         
             
            }
         
     | 
| 
       72 
5 
     | 
    
         | 
| 
       73 
     | 
    
         
            -
            . 
     | 
| 
       74 
     | 
    
         
            -
             
     | 
| 
      
 6 
     | 
    
         
            +
            .l-sidebyside > * {
         
     | 
| 
      
 7 
     | 
    
         
            +
              display:inline-block;
         
     | 
| 
      
 8 
     | 
    
         
            +
              *display: inline;
         
     | 
| 
      
 9 
     | 
    
         
            +
              *zoom: 1;
         
     | 
| 
       75 
10 
     | 
    
         
             
            }
         
     | 
| 
       76 
11 
     | 
    
         | 
| 
       77 
     | 
    
         
            -
            . 
     | 
| 
       78 
     | 
    
         
            -
             
     | 
| 
       79 
     | 
    
         
            -
            	margin-left: 15px;
         
     | 
| 
      
 12 
     | 
    
         
            +
            .subnav.subnav-failed {
         
     | 
| 
      
 13 
     | 
    
         
            +
              overflow: hidden;
         
     | 
| 
       80 
14 
     | 
    
         
             
            }
         
     | 
| 
       81 
     | 
    
         
            -
             
     | 
| 
       82 
     | 
    
         
            -
             
     | 
| 
       83 
     | 
    
         
            -
             
     | 
| 
       84 
     | 
    
         
            -
             
     | 
| 
       85 
     | 
    
         
            -
            	-moz-border-radius: 15px;
         
     | 
| 
       86 
     | 
    
         
            -
            	border-radius: 15px;
         
     | 
| 
       87 
     | 
    
         
            -
            	padding-left: 10px;
         
     | 
| 
       88 
     | 
    
         
            -
            	padding-right: 10px;
         
     | 
| 
      
 15 
     | 
    
         
            +
            .subnav.full {
         
     | 
| 
      
 16 
     | 
    
         
            +
              height: auto;
         
     | 
| 
      
 17 
     | 
    
         
            +
              max-height: 50%;
         
     | 
| 
      
 18 
     | 
    
         
            +
              overflow-y: scroll;
         
     | 
| 
       89 
19 
     | 
    
         
             
            }
         
     | 
| 
       90 
20 
     | 
    
         | 
| 
       91 
     | 
    
         
            -
            .job 
     | 
| 
       92 
     | 
    
         
            -
             
     | 
| 
       93 
     | 
    
         
            -
            	clear: none;
         
     | 
| 
       94 
     | 
    
         
            -
            	margin-top: 1px;
         
     | 
| 
      
 21 
     | 
    
         
            +
            .failed-job > .min-col-size {
         
     | 
| 
      
 22 
     | 
    
         
            +
              min-width: 395px;
         
     | 
| 
       95 
23 
     | 
    
         
             
            }
         
     | 
| 
       96 
24 
     | 
    
         | 
| 
       97 
     | 
    
         
            -
            .job 
     | 
| 
       98 
     | 
    
         
            -
             
     | 
| 
       99 
     | 
    
         
            -
             
     | 
| 
       100 
     | 
    
         
            -
             
     | 
| 
       101 
     | 
    
         
            -
            	padding-left: 12px;
         
     | 
| 
      
 25 
     | 
    
         
            +
            .failed-job .row {
         
     | 
| 
      
 26 
     | 
    
         
            +
              margin-left:0;
         
     | 
| 
      
 27 
     | 
    
         
            +
              margin-right:10px;
         
     | 
| 
      
 28 
     | 
    
         
            +
              height: 30px;
         
     | 
| 
       102 
29 
     | 
    
         
             
            }
         
     | 
| 
       103 
30 
     | 
    
         | 
| 
       104 
     | 
    
         
            -
            . 
     | 
| 
       105 
     | 
    
         
            -
             
     | 
| 
       106 
     | 
    
         
            -
            	padding-top: 10px;
         
     | 
| 
       107 
     | 
    
         
            -
            	font-size: 16px;
         
     | 
| 
      
 31 
     | 
    
         
            +
            .subnav-toggle-container {
         
     | 
| 
      
 32 
     | 
    
         
            +
              text-align: right;
         
     | 
| 
       108 
33 
     | 
    
         
             
            }
         
     | 
| 
       109 
34 
     | 
    
         | 
| 
       110 
     | 
    
         
            -
            . 
     | 
| 
       111 
     | 
    
         
            -
             
     | 
| 
      
 35 
     | 
    
         
            +
            .subnav-toggle-container .btn {
         
     | 
| 
      
 36 
     | 
    
         
            +
              padding: 8px 10px;
         
     | 
| 
       112 
37 
     | 
    
         
             
            }
         
     | 
| 
       113 
     | 
    
         
            -
             
     | 
| 
       114 
     | 
    
         
            -
            .job-data-container {
         
     | 
| 
       115 
     | 
    
         
            -
            	margin-top: 10px;
         
     | 
| 
       116 
     | 
    
         
            -
            	border: 2px solid black;
         
     | 
| 
       117 
     | 
    
         
            -
            }
         
     | 
| 
       118 
     | 
    
         
            -
             
     | 
| 
       119 
     | 
    
         
            -
            html { background:#efefef; font-family:Arial, Verdana, sans-serif; font-size:13px; }
         
     | 
| 
       120 
     | 
    
         
            -
            body { padding:0; margin:0; }
         
     | 
| 
       121 
     | 
    
         
            -
             
     | 
| 
       122 
     | 
    
         
            -
            .header { background:#000; padding:8px 5% 0 5%; border-bottom:1px solid #444;border-bottom:5px solid #4d87e2;}
         
     | 
| 
       123 
     | 
    
         
            -
            .header h1 { color:#333; font-size:90%; font-weight:bold; margin-bottom:6px;}
         
     | 
| 
       124 
     | 
    
         
            -
            .header ul li { display:inline;}
         
     | 
| 
       125 
     | 
    
         
            -
            .header ul li a { color:#fff; text-decoration:none; margin-right:10px; display:inline-block;  padding:8px; -webkit-border-top-right-radius:6px; -webkit-border-top-left-radius:6px; -moz-border-radius-topleft:6px; -moz-border-radius-topright:6px; }
         
     | 
| 
       126 
     | 
    
         
            -
            .header ul li a:hover { background:#333;}
         
     | 
| 
       127 
     | 
    
         
            -
            .header ul li.current a { background:#ce1212; font-weight:bold; color:#fff;}
         
     | 
| 
       128 
     | 
    
         
            -
             
     | 
| 
       129 
     | 
    
         
            -
            .header .namespace { position: absolute; right: 75px; top: 10px; color: #7A7A7A; }
         
     | 
| 
       130 
     | 
    
         
            -
             
     | 
| 
       131 
     | 
    
         
            -
            .subnav { padding:2px 5% 7px 5%; background:#ce1212; font-size:90%;}
         
     | 
| 
       132 
     | 
    
         
            -
            .subnav li { display:inline;}
         
     | 
| 
       133 
     | 
    
         
            -
            .subnav li a { color:#fff; text-decoration:none; margin-right:10px; display:inline-block; background:#dd5b5b; padding:5px; -webkit-border-radius:3px; -moz-border-radius:3px;}
         
     | 
| 
       134 
     | 
    
         
            -
            .subnav li.current a { background:#fff; font-weight:bold; color:#ce1212;}
         
     | 
| 
       135 
     | 
    
         
            -
            .subnav li a:active { background:#b00909;}
         
     | 
| 
       136 
     | 
    
         
            -
             
     | 
| 
       137 
     | 
    
         
            -
            #main { padding:10px 5%; background:#fff; overflow:hidden; }
         
     | 
| 
       138 
     | 
    
         
            -
            #main .logo { float:right; margin:10px;}
         
     | 
| 
       139 
     | 
    
         
            -
            #main span.hl { background:#efefef; padding:2px;}
         
     | 
| 
       140 
     | 
    
         
            -
            #main h1 { margin:10px 0; font-size:190%; font-weight:bold; color:#ce1212;}
         
     | 
| 
       141 
     | 
    
         
            -
            #main h2 { margin:10px 0; font-size:130%;}
         
     | 
| 
       142 
     | 
    
         
            -
            #main table { width:100%; margin:10px 0;}
         
     | 
| 
       143 
     | 
    
         
            -
            #main table tr td, #main table tr th { border:1px solid #ccc; padding:6px;}
         
     | 
| 
       144 
     | 
    
         
            -
            #main table tr th { background:#efefef; color:#888; font-size:80%; font-weight:bold;}
         
     | 
| 
       145 
     | 
    
         
            -
            #main table tr td.no-data { text-align:center; padding:40px 0; color:#999; font-style:italic; font-size:130%;}
         
     | 
| 
       146 
     | 
    
         
            -
            #main a { color:#111;}
         
     | 
| 
       147 
     | 
    
         
            -
            #main p { margin:5px 0;}
         
     | 
| 
       148 
     | 
    
         
            -
            #main p.intro { margin-bottom:15px; font-size:85%; color:#999; margin-top:0; line-height:1.3;}
         
     | 
| 
       149 
     | 
    
         
            -
            #main h1.wi { margin-bottom:5px;}
         
     | 
| 
       150 
     | 
    
         
            -
            #main p.sub { font-size:95%; color:#999;}
         
     | 
| 
       151 
     | 
    
         
            -
             
     | 
| 
       152 
     | 
    
         
            -
            #main table.queues { width:40%;}
         
     | 
| 
       153 
     | 
    
         
            -
            #main table.queues td.queue { font-weight:bold; width:50%;}
         
     | 
| 
       154 
     | 
    
         
            -
            #main table.queues tr.failed td { border-top:2px solid; font-size:90%; }
         
     | 
| 
       155 
     | 
    
         
            -
            #main table.queues tr.failure td { background:#ffecec; border-top:2px solid #d37474; font-size:90%; color:#d37474;}
         
     | 
| 
       156 
     | 
    
         
            -
            #main table.queues tr.failure td a{ color:#d37474;}
         
     | 
| 
       157 
     | 
    
         
            -
             
     | 
| 
       158 
     | 
    
         
            -
            #main table.jobs td.class { font-family:Monaco, "Courier New", monospace; font-size:90%; width:50%;}
         
     | 
| 
       159 
     | 
    
         
            -
            #main table.jobs td.args{ width:50%;}
         
     | 
| 
       160 
     | 
    
         
            -
             
     | 
| 
       161 
     | 
    
         
            -
            #main table.workers td.icon {width:1%; background:#efefef;text-align:center;}
         
     | 
| 
       162 
     | 
    
         
            -
            #main table.workers td.icon img { height: 16px; width: 16px; }
         
     | 
| 
       163 
     | 
    
         
            -
            #main table.workers td.where { width:25%;}
         
     | 
| 
       164 
     | 
    
         
            -
            #main table.workers td.queues { width:35%;}
         
     | 
| 
       165 
     | 
    
         
            -
            #main .queue-tag { background:#b1d2e9; padding:2px; margin:0 3px; font-size:80%; text-decoration:none; text-transform:uppercase; font-weight:bold; color:#3274a2; -webkit-border-radius:4px; -moz-border-radius:4px;}
         
     | 
| 
       166 
     | 
    
         
            -
            #main table.workers td.queues.queue { width:10%;}
         
     | 
| 
       167 
     | 
    
         
            -
            #main table.workers td.process { width:35%;}
         
     | 
| 
       168 
     | 
    
         
            -
            #main table.workers td.process span.waiting { color:#999; font-size:90%;}
         
     | 
| 
       169 
     | 
    
         
            -
            #main table.workers td.process small { font-size:80%; margin-left:5px;}
         
     | 
| 
       170 
     | 
    
         
            -
            #main table.workers td.process code { font-family:Monaco, "Courier New", monospace; font-size:90%;}
         
     | 
| 
       171 
     | 
    
         
            -
            #main table.workers td.process small a { color:#999;}
         
     | 
| 
       172 
     | 
    
         
            -
            #main.polling table.workers tr.working td { background:#f4ffe4; color:#7ac312;}
         
     | 
| 
       173 
     | 
    
         
            -
            #main.polling table.workers tr.working td.where a { color:#7ac312;}
         
     | 
| 
       174 
     | 
    
         
            -
            #main.polling table.workers tr.working td.process code { font-weight:bold;}
         
     | 
| 
       175 
     | 
    
         
            -
             
     | 
| 
       176 
     | 
    
         
            -
             
     | 
| 
       177 
     | 
    
         
            -
            #main table.stats th { font-size:100%; width:40%; color:#000;}
         
     | 
| 
       178 
     | 
    
         
            -
            #main hr { border:0; border-top:5px solid #efefef;  margin:15px 0;}
         
     | 
| 
       179 
     | 
    
         
            -
             
     | 
| 
       180 
     | 
    
         
            -
            #footer { padding:10px 5%; background:#efefef; color:#999; font-size:85%; line-height:1.5; border-top:5px solid #ccc; padding-top:10px;}
         
     | 
| 
       181 
     | 
    
         
            -
            #footer p a { color:#999;}
         
     | 
| 
       182 
     | 
    
         
            -
             
     | 
| 
       183 
     | 
    
         
            -
            #main p.poll { background:url(poll.png) no-repeat 0 2px; padding:3px 0; padding-left:23px; float:right; font-size:85%; }
         
     | 
| 
       184 
     | 
    
         
            -
             
     | 
| 
       185 
     | 
    
         
            -
            #main ul.failed {}
         
     | 
| 
       186 
     | 
    
         
            -
            #main ul.failed li {background:-webkit-gradient(linear, left top, left bottom, from(#efefef), to(#fff)) #efefef; margin-top:10px; padding:10px; overflow:hidden; -webkit-border-radius:5px; border:1px solid #ccc; }
         
     | 
| 
       187 
     | 
    
         
            -
            #main ul.failed li dl dt {font-size:80%; color:#999; width:60px; float:left; padding-top:1px; text-align:right;}
         
     | 
| 
       188 
     | 
    
         
            -
            #main ul.failed li dl dd {margin-bottom:10px; margin-left:70px;}
         
     | 
| 
       189 
     | 
    
         
            -
            #main ul.failed li dl dd .retried { float:right; text-align: right; }
         
     | 
| 
       190 
     | 
    
         
            -
            #main ul.failed li dl dd .retried .remove { display:none; margin-top: 8px; }
         
     | 
| 
       191 
     | 
    
         
            -
            #main ul.failed li.hover dl dd .retried .remove { display:block; }
         
     | 
| 
       192 
     | 
    
         
            -
            #main ul.failed li dl dd .controls { display:none; float:right; }
         
     | 
| 
       193 
     | 
    
         
            -
            #main ul.failed li.hover dl dd .controls { display:block; }
         
     | 
| 
       194 
     | 
    
         
            -
            #main ul.failed li dl dd code, #main ul.failed li dl dd pre { font-family:Monaco, "Courier New", monospace; font-size:90%; white-space: pre-wrap;}
         
     | 
| 
       195 
     | 
    
         
            -
            #main ul.failed li dl dd.error a {font-family:Monaco, "Courier New", monospace; font-size:90%; }
         
     | 
| 
       196 
     | 
    
         
            -
            #main ul.failed li dl dd.error pre { margin-top:3px; line-height:1.3;}
         
     | 
| 
       197 
     | 
    
         
            -
             
     | 
| 
       198 
     | 
    
         
            -
            #main p.pagination { background:#efefef; padding:10px; overflow:hidden;}
         
     | 
| 
       199 
     | 
    
         
            -
            #main p.pagination a.less { float:left;}
         
     | 
| 
       200 
     | 
    
         
            -
            #main p.pagination a.more { float:right;}
         
     | 
| 
       201 
     | 
    
         
            -
             
     | 
| 
       202 
     | 
    
         
            -
            #main form {float:right; margin-top:-10px;margin-left:10px;}
         
     | 
| 
       203 
     | 
    
         
            -
             
     | 
| 
       204 
     | 
    
         
            -
            #main .time a.toggle_format {text-decoration:none;}
         
     | 
| 
         @@ -1,7 +1,13 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            <div class="subnav subnav-fixed">
         
     | 
| 
       2 
     | 
    
         
            -
              < 
     | 
| 
       3 
     | 
    
         
            -
                 
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            <div class="subnav subnav-fixed subnav-failed">
         
     | 
| 
      
 2 
     | 
    
         
            +
              <div class="subnav-toggle-container pull-right">
         
     | 
| 
      
 3 
     | 
    
         
            +
                <a class="btn" onclick="toggleSubNavHeight()">+</a>
         
     | 
| 
      
 4 
     | 
    
         
            +
              </div>
         
     | 
| 
      
 5 
     | 
    
         
            +
              <% sorted_failed = failed.sort_by { |f| -f['total'] } %>
         
     | 
| 
      
 6 
     | 
    
         
            +
              <ul class="nav nav-pills failed-list">
         
     | 
| 
      
 7 
     | 
    
         
            +
                <% sorted_failed.each do |f| %>
         
     | 
| 
      
 8 
     | 
    
         
            +
                  <li>
         
     | 
| 
      
 9 
     | 
    
         
            +
                    <a href="#<%= sanitize_attr(f['type']) %>" data-toggle="tab"><%= f['type'] %> (<%= f['total'] %>)</a>
         
     | 
| 
      
 10 
     | 
    
         
            +
                  </li>
         
     | 
| 
       5 
11 
     | 
    
         
             
                <% end %>
         
     | 
| 
       6 
12 
     | 
    
         
             
              </ul>
         
     | 
| 
       7 
13 
     | 
    
         
             
            </div>
         
     | 
| 
         @@ -12,6 +12,7 @@ 
     | 
|
| 
       12 
12 
     | 
    
         
             
                <link href="<%= u '/css/docs.css' %>" rel="stylesheet">
         
     | 
| 
       13 
13 
     | 
    
         
             
                <link href="<%= u '/css/jquery.noty.css' %>" rel="stylesheet">
         
     | 
| 
       14 
14 
     | 
    
         
             
                <link href="<%= u '/css/noty_theme_twitter.css' %>" rel="stylesheet">
         
     | 
| 
      
 15 
     | 
    
         
            +
                <link href="<%= u '/css/style.css' %>" rel="stylesheet">
         
     | 
| 
       15 
16 
     | 
    
         
             
                <script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
         
     | 
| 
       16 
17 
     | 
    
         | 
| 
       17 
18 
     | 
    
         
             
                <style type="text/css">
         
     | 
| 
         @@ -331,6 +332,10 @@ 
     | 
|
| 
       331 
332 
     | 
    
         
             
                  })
         
     | 
| 
       332 
333 
     | 
    
         
             
                }
         
     | 
| 
       333 
334 
     | 
    
         | 
| 
      
 335 
     | 
    
         
            +
                var toggleSubNavHeight = function() {
         
     | 
| 
      
 336 
     | 
    
         
            +
                  $('.subnav-fixed').toggleClass('full');
         
     | 
| 
      
 337 
     | 
    
         
            +
                }
         
     | 
| 
      
 338 
     | 
    
         
            +
             
     | 
| 
       334 
339 
     | 
    
         
             
                $(document).ready(function() {
         
     | 
| 
       335 
340 
     | 
    
         
             
                  $('button').tooltip({delay:200});
         
     | 
| 
       336 
341 
     | 
    
         
             
                });
         
     | 
    
        data/lib/qless/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: qless
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.11.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Dan Lecocq
         
     | 
| 
         @@ -9,7 +9,7 @@ authors: 
     | 
|
| 
       9 
9 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       10 
10 
     | 
    
         
             
            bindir: exe
         
     | 
| 
       11 
11 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       12 
     | 
    
         
            -
            date:  
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2017-12-08 00:00:00.000000000 Z
         
     | 
| 
       13 
13 
     | 
    
         
             
            dependencies:
         
     | 
| 
       14 
14 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       15 
15 
     | 
    
         
             
              name: metriks
         
     | 
| 
         @@ -65,28 +65,34 @@ dependencies: 
     | 
|
| 
       65 
65 
     | 
    
         
             
                requirements:
         
     | 
| 
       66 
66 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       67 
67 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       68 
     | 
    
         
            -
                    version:  
     | 
| 
      
 68 
     | 
    
         
            +
                    version: 0.15.6
         
     | 
| 
       69 
69 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       70 
70 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       71 
71 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       72 
72 
     | 
    
         
             
                requirements:
         
     | 
| 
       73 
73 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       74 
74 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       75 
     | 
    
         
            -
                    version:  
     | 
| 
      
 75 
     | 
    
         
            +
                    version: 0.15.6
         
     | 
| 
       76 
76 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       77 
77 
     | 
    
         
             
              name: sinatra
         
     | 
| 
       78 
78 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       79 
79 
     | 
    
         
             
                requirements:
         
     | 
| 
       80 
     | 
    
         
            -
                - - " 
     | 
| 
      
 80 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       81 
81 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       82 
82 
     | 
    
         
             
                    version: '1.3'
         
     | 
| 
      
 83 
     | 
    
         
            +
                - - "<"
         
     | 
| 
      
 84 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 85 
     | 
    
         
            +
                    version: '2.1'
         
     | 
| 
       83 
86 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       84 
87 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       85 
88 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       86 
89 
     | 
    
         
             
                requirements:
         
     | 
| 
       87 
     | 
    
         
            -
                - - " 
     | 
| 
      
 90 
     | 
    
         
            +
                - - ">="
         
     | 
| 
       88 
91 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       89 
92 
     | 
    
         
             
                    version: '1.3'
         
     | 
| 
      
 93 
     | 
    
         
            +
                - - "<"
         
     | 
| 
      
 94 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 95 
     | 
    
         
            +
                    version: '2.1'
         
     | 
| 
       90 
96 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       91 
97 
     | 
    
         
             
              name: statsd-ruby
         
     | 
| 
       92 
98 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
         @@ -107,14 +113,14 @@ dependencies: 
     | 
|
| 
       107 
113 
     | 
    
         
             
                requirements:
         
     | 
| 
       108 
114 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       109 
115 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       110 
     | 
    
         
            -
                    version: 1.6 
     | 
| 
      
 116 
     | 
    
         
            +
                    version: '1.6'
         
     | 
| 
       111 
117 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       112 
118 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       113 
119 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       114 
120 
     | 
    
         
             
                requirements:
         
     | 
| 
       115 
121 
     | 
    
         
             
                - - "~>"
         
     | 
| 
       116 
122 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       117 
     | 
    
         
            -
                    version: 1.6 
     | 
| 
      
 123 
     | 
    
         
            +
                    version: '1.6'
         
     | 
| 
       118 
124 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       119 
125 
     | 
    
         
             
              name: thor
         
     | 
| 
       120 
126 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
         @@ -195,6 +201,7 @@ files: 
     | 
|
| 
       195 
201 
     | 
    
         
             
            - lib/qless/server/static/css/docs.css
         
     | 
| 
       196 
202 
     | 
    
         
             
            - lib/qless/server/static/css/jquery.noty.css
         
     | 
| 
       197 
203 
     | 
    
         
             
            - lib/qless/server/static/css/noty_theme_twitter.css
         
     | 
| 
      
 204 
     | 
    
         
            +
            - lib/qless/server/static/css/resque.css
         
     | 
| 
       198 
205 
     | 
    
         
             
            - lib/qless/server/static/css/style.css
         
     | 
| 
       199 
206 
     | 
    
         
             
            - lib/qless/server/static/favicon.ico
         
     | 
| 
       200 
207 
     | 
    
         
             
            - lib/qless/server/static/img/glyphicons-halflings-white.png
         
     | 
| 
         @@ -244,7 +251,8 @@ files: 
     | 
|
| 
       244 
251 
     | 
    
         
             
            - lib/qless/worker/forking.rb
         
     | 
| 
       245 
252 
     | 
    
         
             
            - lib/qless/worker/serial.rb
         
     | 
| 
       246 
253 
     | 
    
         
             
            homepage: http://github.com/seomoz/qless
         
     | 
| 
       247 
     | 
    
         
            -
            licenses: 
     | 
| 
      
 254 
     | 
    
         
            +
            licenses:
         
     | 
| 
      
 255 
     | 
    
         
            +
            - MIT
         
     | 
| 
       248 
256 
     | 
    
         
             
            metadata: {}
         
     | 
| 
       249 
257 
     | 
    
         
             
            post_install_message: 
         
     | 
| 
       250 
258 
     | 
    
         
             
            rdoc_options: []
         
     | 
| 
         @@ -262,8 +270,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       262 
270 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       263 
271 
     | 
    
         
             
            requirements: []
         
     | 
| 
       264 
272 
     | 
    
         
             
            rubyforge_project: qless
         
     | 
| 
       265 
     | 
    
         
            -
            rubygems_version: 2. 
     | 
| 
      
 273 
     | 
    
         
            +
            rubygems_version: 2.6.13
         
     | 
| 
       266 
274 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       267 
275 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       268 
     | 
    
         
            -
            summary: A Redis- 
     | 
| 
      
 276 
     | 
    
         
            +
            summary: A Redis-based queueing system
         
     | 
| 
       269 
277 
     | 
    
         
             
            test_files: []
         
     |