sidekiq 3.0.2 → 3.1.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of sidekiq might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.travis.yml +1 -1
- data/Changes.md +23 -0
- data/Pro-Changes.md +8 -0
- data/lib/sidekiq/api.rb +77 -13
- data/lib/sidekiq/cli.rb +14 -17
- data/lib/sidekiq/logging.rb +1 -1
- data/lib/sidekiq/manager.rb +4 -1
- data/lib/sidekiq/processor.rb +0 -3
- data/lib/sidekiq/rails.rb +15 -0
- data/lib/sidekiq/util.rb +11 -0
- data/lib/sidekiq/version.rb +1 -1
- data/lib/sidekiq/web.rb +39 -42
- data/sidekiq.gemspec +2 -2
- data/test/helper.rb +1 -1
- data/test/test_api.rb +24 -4
- data/test/test_cli.rb +16 -16
- data/test/test_client.rb +1 -1
- data/test/test_fetch.rb +4 -0
- data/test/test_manager.rb +4 -3
- data/test/test_retry.rb +4 -0
- data/test/test_scheduling.rb +1 -0
- data/test/test_sidekiq.rb +2 -0
- data/test/test_web.rb +52 -15
- data/web/assets/javascripts/dashboard.js +134 -21
- data/web/assets/stylesheets/application.css +78 -310
- data/web/locales/en.yml +5 -0
- data/web/views/_job_info.erb +4 -4
- data/web/views/_poll.erb +1 -1
- data/web/views/busy.erb +27 -6
- data/web/views/dashboard.erb +19 -11
- data/web/views/morgue.erb +3 -3
- data/web/views/queue.erb +8 -7
- data/web/views/retries.erb +3 -3
- data/web/views/scheduled.erb +3 -3
- metadata +8 -8
@@ -369,6 +369,79 @@ img.smallogo {
|
|
369
369
|
margin: 5px 5px 5px 10px;
|
370
370
|
}
|
371
371
|
}
|
372
|
+
|
373
|
+
/* Dashboard
|
374
|
+
********************************** */
|
375
|
+
div.dashboard h3 {
|
376
|
+
float: left;
|
377
|
+
}
|
378
|
+
|
379
|
+
div.interval-slider {
|
380
|
+
float: right;
|
381
|
+
line-height: 1.3;
|
382
|
+
font-size: 0.95em;
|
383
|
+
padding: 15px 0 0;
|
384
|
+
}
|
385
|
+
|
386
|
+
span.current-interval {
|
387
|
+
min-width: 40px;
|
388
|
+
display: inline-block;
|
389
|
+
padding: 0 0 5px 0;
|
390
|
+
color: #B1003E;
|
391
|
+
}
|
392
|
+
|
393
|
+
div.interval-slider input {
|
394
|
+
width: 160px;
|
395
|
+
}
|
396
|
+
|
397
|
+
#realtime-legend,
|
398
|
+
#history-legend {
|
399
|
+
width: 490px;
|
400
|
+
text-align: left;
|
401
|
+
margin-top: 5px;
|
402
|
+
float: right;
|
403
|
+
}
|
404
|
+
#realtime-legend .timestamp,
|
405
|
+
#history-legend .timestamp {
|
406
|
+
display: inline-block;
|
407
|
+
width: 220px;
|
408
|
+
text-align: right;
|
409
|
+
}
|
410
|
+
#realtime-legend .line,
|
411
|
+
#history-legend .line {
|
412
|
+
display: inline-block;
|
413
|
+
margin: 0 0 0 20px;
|
414
|
+
}
|
415
|
+
#realtime-legend .swatch,
|
416
|
+
#history-legend .swatch {
|
417
|
+
display: inline-block;
|
418
|
+
width: 10px;
|
419
|
+
height: 10px;
|
420
|
+
margin: 0 8px 0 0;
|
421
|
+
}
|
422
|
+
#realtime-legend .tag,
|
423
|
+
#history-legend .tag {
|
424
|
+
display: inline-block;
|
425
|
+
}
|
426
|
+
|
427
|
+
@media (max-width: 790px) {
|
428
|
+
#realtime-legend,
|
429
|
+
#history-legend {
|
430
|
+
float: none;
|
431
|
+
width: 100%;
|
432
|
+
margin-bottom: 20px;
|
433
|
+
}
|
434
|
+
}
|
435
|
+
|
436
|
+
@media (max-width: 500px) {
|
437
|
+
#realtime-legend,
|
438
|
+
#history-legend {
|
439
|
+
text-align: center;
|
440
|
+
}
|
441
|
+
}
|
442
|
+
/* Beacon
|
443
|
+
********************************** */
|
444
|
+
|
372
445
|
.beacon {
|
373
446
|
position: relative;
|
374
447
|
height: 20px;
|
@@ -608,313 +681,8 @@ img.smallogo {
|
|
608
681
|
}
|
609
682
|
|
610
683
|
/* Rickshaw */
|
611
|
-
.rickshaw_graph .detail {
|
612
|
-
pointer-events: none;
|
613
|
-
position: absolute;
|
614
|
-
top: 0;
|
615
|
-
z-index: 2;
|
616
|
-
background: rgba(0, 0, 0, 0.1);
|
617
|
-
bottom: 0;
|
618
|
-
width: 1px;
|
619
|
-
transition: opacity 0.25s linear;
|
620
|
-
-moz-transition: opacity 0.25s linear;
|
621
|
-
-o-transition: opacity 0.25s linear;
|
622
|
-
-webkit-transition: opacity 0.25s linear;
|
623
|
-
}
|
624
|
-
.rickshaw_graph .detail.inactive {
|
625
|
-
opacity: 0;
|
626
|
-
}
|
627
|
-
.rickshaw_graph .detail .item.active {
|
628
|
-
opacity: 1;
|
629
|
-
}
|
630
|
-
.rickshaw_graph .detail .x_label {
|
631
|
-
font-family: Arial, sans-serif;
|
632
|
-
border-radius: 3px;
|
633
|
-
padding: 6px;
|
634
|
-
opacity: 0.5;
|
635
|
-
border: 1px solid #e0e0e0;
|
636
|
-
font-size: 12px;
|
637
|
-
position: absolute;
|
638
|
-
background: white;
|
639
|
-
white-space: nowrap;
|
640
|
-
}
|
641
|
-
.rickshaw_graph .detail .item {
|
642
|
-
position: absolute;
|
643
|
-
z-index: 2;
|
644
|
-
border-radius: 3px;
|
645
|
-
padding: 0.25em;
|
646
|
-
font-size: 12px;
|
647
|
-
font-family: Arial, sans-serif;
|
648
|
-
opacity: 0;
|
649
|
-
background: rgba(0, 0, 0, 0.4);
|
650
|
-
color: white;
|
651
|
-
border: 1px solid rgba(0, 0, 0, 0.4);
|
652
|
-
margin-left: 1em;
|
653
|
-
margin-top: -1em;
|
654
|
-
white-space: nowrap;
|
655
|
-
}
|
656
|
-
.rickshaw_graph .detail .item.active {
|
657
|
-
opacity: 1;
|
658
|
-
background: rgba(0, 0, 0, 0.8);
|
659
|
-
}
|
660
|
-
.rickshaw_graph .detail .item:before {
|
661
|
-
content: "\25c2";
|
662
|
-
position: absolute;
|
663
|
-
left: -0.5em;
|
664
|
-
color: rgba(0, 0, 0, 0.7);
|
665
|
-
width: 0;
|
666
|
-
}
|
667
|
-
.rickshaw_graph .detail .dot {
|
668
|
-
width: 4px;
|
669
|
-
height: 4px;
|
670
|
-
margin-left: -4px;
|
671
|
-
margin-top: -3px;
|
672
|
-
border-radius: 5px;
|
673
|
-
position: absolute;
|
674
|
-
box-shadow: 0 0 2px rgba(0, 0, 0, 0.6);
|
675
|
-
background: white;
|
676
|
-
border-width: 2px;
|
677
|
-
border-style: solid;
|
678
|
-
display: none;
|
679
|
-
background-clip: padding-box;
|
680
|
-
}
|
681
|
-
.rickshaw_graph .detail .dot.active {
|
682
|
-
display: block;
|
683
|
-
}
|
684
|
-
/* graph */
|
685
|
-
|
686
|
-
.rickshaw_graph {
|
687
|
-
position: relative;
|
688
|
-
}
|
689
|
-
.rickshaw_graph svg {
|
690
|
-
display: block;
|
691
|
-
overflow: hidden;
|
692
|
-
}
|
684
|
+
.rickshaw_graph .detail{pointer-events:none;position:absolute;top:0;z-index:2;background:rgba(0,0,0,.1);bottom:0;width:1px;transition:opacity .25s linear;-moz-transition:opacity .25s linear;-o-transition:opacity .25s linear;-webkit-transition:opacity .25s linear}.rickshaw_graph .detail.inactive{opacity:0}.rickshaw_graph .detail .item.active{opacity:1}.rickshaw_graph .detail .x_label{font-family:Arial,sans-serif;border-radius:3px;padding:6px;opacity:.5;border:1px solid #e0e0e0;font-size:12px;position:absolute;background:#fff;white-space:nowrap}.rickshaw_graph .detail .x_label.left{left:0}.rickshaw_graph .detail .x_label.right{right:0}.rickshaw_graph .detail .item{position:absolute;z-index:2;border-radius:3px;padding:.25em;font-size:12px;font-family:Arial,sans-serif;opacity:0;background:rgba(0,0,0,.4);color:#fff;border:1px solid rgba(0,0,0,.4);margin-left:1em;margin-right:1em;margin-top:-1em;white-space:nowrap}.rickshaw_graph .detail .item.left{left:0}.rickshaw_graph .detail .item.right{right:0}.rickshaw_graph .detail .item.active{opacity:1;background:rgba(0,0,0,.8)}.rickshaw_graph .detail .item:after{position:absolute;display:block;width:0;height:0;content:"";border:5px solid transparent}.rickshaw_graph .detail .item.left:after{top:1em;left:-5px;margin-top:-5px;border-right-color:rgba(0,0,0,.8);border-left-width:0}.rickshaw_graph .detail .item.right:after{top:1em;right:-5px;margin-top:-5px;border-left-color:rgba(0,0,0,.8);border-right-width:0}.rickshaw_graph .detail .dot{width:4px;height:4px;margin-left:-3px;margin-top:-3.5px;border-radius:5px;position:absolute;box-shadow:0 0 2px rgba(0,0,0,.6);box-sizing:content-box;-moz-box-sizing:content-box;background:#fff;border-width:2px;border-style:solid;display:none;background-clip:padding-box}.rickshaw_graph .detail .dot.active{display:block}.rickshaw_graph{position:relative}.rickshaw_graph svg{display:block;overflow:hidden}.rickshaw_graph .x_tick{position:absolute;top:0;bottom:0;width:0;border-left:1px dotted rgba(0,0,0,.2);pointer-events:none}.rickshaw_graph .x_tick .title{position:absolute;font-size:12px;font-family:Arial,sans-serif;opacity:.5;white-space:nowrap;margin-left:3px;bottom:1px}.rickshaw_annotation_timeline{height:1px;border-top:1px solid #e0e0e0;margin-top:10px;position:relative}.rickshaw_annotation_timeline .annotation{position:absolute;height:6px;width:6px;margin-left:-2px;top:-3px;border-radius:5px;background-color:rgba(0,0,0,.25)}.rickshaw_graph .annotation_line{position:absolute;top:0;bottom:-6px;width:0;border-left:2px solid rgba(0,0,0,.3);display:none}.rickshaw_graph .annotation_line.active{display:block}.rickshaw_graph .annotation_range{background:rgba(0,0,0,.1);display:none;position:absolute;top:0;bottom:-6px}.rickshaw_graph .annotation_range.active{display:block}.rickshaw_graph .annotation_range.active.offscreen{display:none}.rickshaw_annotation_timeline .annotation .content{background:#fff;color:#000;opacity:.9;padding:5px;box-shadow:0 0 2px rgba(0,0,0,.8);border-radius:3px;position:relative;z-index:20;font-size:12px;padding:6px 8px 8px;top:18px;left:-11px;width:160px;display:none;cursor:pointer}.rickshaw_annotation_timeline .annotation .content:before{content:"\25b2";position:absolute;top:-11px;color:#fff;text-shadow:0 -1px 1px rgba(0,0,0,.8)}.rickshaw_annotation_timeline .annotation.active,.rickshaw_annotation_timeline .annotation:hover{background-color:rgba(0,0,0,.8);cursor:none}.rickshaw_annotation_timeline .annotation .content:hover{z-index:50}.rickshaw_annotation_timeline .annotation.active .content{display:block}.rickshaw_annotation_timeline .annotation:hover .content{display:block;z-index:50}.rickshaw_graph .y_axis,.rickshaw_graph .x_axis_d3{fill:none}.rickshaw_graph .y_ticks .tick line,.rickshaw_graph .x_ticks_d3 .tick{stroke:rgba(0,0,0,.16);stroke-width:2px;shape-rendering:crisp-edges;pointer-events:none}.rickshaw_graph .y_grid .tick,.rickshaw_graph .x_grid_d3 .tick{z-index:-1;stroke:rgba(0,0,0,.2);stroke-width:1px;stroke-dasharray:1 1}.rickshaw_graph .y_grid .tick[data-y-value="0"]{stroke-dasharray:1 0}.rickshaw_graph .y_grid path,.rickshaw_graph .x_grid_d3 path{fill:none;stroke:none}.rickshaw_graph .y_ticks path,.rickshaw_graph .x_ticks_d3 path{fill:none;stroke:gray}.rickshaw_graph .y_ticks text,.rickshaw_graph .x_ticks_d3 text{opacity:.5;font-size:12px;pointer-events:none}.rickshaw_graph .x_tick.glow .title,.rickshaw_graph .y_ticks.glow text{fill:#000;color:#000;text-shadow:-1px 1px 0 rgba(255,255,255,.1),1px -1px 0 rgba(255,255,255,.1),1px 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1),0 -1px 0 rgba(255,255,255,.1),1px 0 0 rgba(255,255,255,.1),-1px 0 0 rgba(255,255,255,.1),-1px -1px 0 rgba(255,255,255,.1)}.rickshaw_graph .x_tick.inverse .title,.rickshaw_graph .y_ticks.inverse text{fill:#fff;color:#fff;text-shadow:-1px 1px 0 rgba(0,0,0,.8),1px -1px 0 rgba(0,0,0,.8),1px 1px 0 rgba(0,0,0,.8),0 1px 0 rgba(0,0,0,.8),0 -1px 0 rgba(0,0,0,.8),1px 0 0 rgba(0,0,0,.8),-1px 0 0 rgba(0,0,0,.8),-1px -1px 0 rgba(0,0,0,.8)}.rickshaw_legend{font-family:Arial;font-size:12px;color:#fff;background:#404040;display:inline-block;padding:12px 5px;border-radius:2px;position:relative}.rickshaw_legend:hover{z-index:10}.rickshaw_legend .swatch{width:10px;height:10px;border:1px solid rgba(0,0,0,.2)}.rickshaw_legend .line{clear:both;line-height:140%;padding-right:15px}.rickshaw_legend .line .swatch{display:inline-block;margin-right:3px;border-radius:2px}.rickshaw_legend .label{margin:0;white-space:nowrap;display:inline;font-size:inherit;background-color:transparent;color:inherit;font-weight:400;line-height:normal;padding:0;text-shadow:none}.rickshaw_legend .action:hover{opacity:.6}.rickshaw_legend .action{margin-right:.2em;font-size:10px;opacity:.2;cursor:pointer;font-size:14px}.rickshaw_legend .line.disabled{opacity:.4}.rickshaw_legend ul{list-style-type:none;margin:0;padding:0;margin:2px;cursor:pointer}.rickshaw_legend li{padding:0 0 0 2px;min-width:80px;white-space:nowrap}.rickshaw_legend li:hover{background:rgba(255,255,255,.08);border-radius:3px}.rickshaw_legend li:active{background:rgba(255,255,255,.2);border-radius:3px}
|
693
685
|
|
694
|
-
/* ticks */
|
695
|
-
|
696
|
-
.rickshaw_graph .x_tick {
|
697
|
-
position: absolute;
|
698
|
-
top: 0;
|
699
|
-
bottom: 0;
|
700
|
-
width: 0px;
|
701
|
-
border-left: 1px dotted rgba(0, 0, 0, 0.2);
|
702
|
-
pointer-events: none;
|
703
|
-
}
|
704
|
-
.rickshaw_graph .x_tick .title {
|
705
|
-
position: absolute;
|
706
|
-
font-size: 12px;
|
707
|
-
font-family: Arial, sans-serif;
|
708
|
-
opacity: 0.5;
|
709
|
-
white-space: nowrap;
|
710
|
-
margin-left: 3px;
|
711
|
-
bottom: 1px;
|
712
|
-
}
|
713
|
-
|
714
|
-
/* annotations */
|
715
|
-
|
716
|
-
.rickshaw_annotation_timeline {
|
717
|
-
height: 1px;
|
718
|
-
border-top: 1px solid #e0e0e0;
|
719
|
-
margin-top: 10px;
|
720
|
-
position: relative;
|
721
|
-
}
|
722
|
-
.rickshaw_annotation_timeline .annotation {
|
723
|
-
position: absolute;
|
724
|
-
height: 6px;
|
725
|
-
width: 6px;
|
726
|
-
margin-left: -2px;
|
727
|
-
top: -3px;
|
728
|
-
border-radius: 5px;
|
729
|
-
background-color: rgba(0, 0, 0, 0.25);
|
730
|
-
}
|
731
|
-
.rickshaw_graph .annotation_line {
|
732
|
-
position: absolute;
|
733
|
-
top: 0;
|
734
|
-
bottom: -6px;
|
735
|
-
width: 0px;
|
736
|
-
border-left: 2px solid rgba(0, 0, 0, 0.3);
|
737
|
-
display: none;
|
738
|
-
}
|
739
|
-
.rickshaw_graph .annotation_line.active {
|
740
|
-
display: block;
|
741
|
-
}
|
742
|
-
|
743
|
-
.rickshaw_graph .annotation_range {
|
744
|
-
background: rgba(0, 0, 0, 0.1);
|
745
|
-
display: none;
|
746
|
-
position: absolute;
|
747
|
-
top: 0;
|
748
|
-
bottom: -6px;
|
749
|
-
z-index: -10;
|
750
|
-
}
|
751
|
-
.rickshaw_graph .annotation_range.active {
|
752
|
-
display: block;
|
753
|
-
}
|
754
|
-
.rickshaw_graph .annotation_range.active.offscreen {
|
755
|
-
display: none;
|
756
|
-
}
|
757
|
-
|
758
|
-
.rickshaw_annotation_timeline .annotation .content {
|
759
|
-
background: white;
|
760
|
-
color: black;
|
761
|
-
opacity: 0.9;
|
762
|
-
padding: 5px 5px;
|
763
|
-
box-shadow: 0 0 2px rgba(0, 0, 0, 0.8);
|
764
|
-
border-radius: 3px;
|
765
|
-
position: relative;
|
766
|
-
z-index: 20;
|
767
|
-
font-size: 12px;
|
768
|
-
padding: 6px 8px 8px;
|
769
|
-
top: 18px;
|
770
|
-
left: -11px;
|
771
|
-
width: 160px;
|
772
|
-
display: none;
|
773
|
-
cursor: pointer;
|
774
|
-
}
|
775
|
-
.rickshaw_annotation_timeline .annotation .content:before {
|
776
|
-
content: "\25b2";
|
777
|
-
position: absolute;
|
778
|
-
top: -11px;
|
779
|
-
color: white;
|
780
|
-
text-shadow: 0 -1px 1px rgba(0, 0, 0, 0.8);
|
781
|
-
}
|
782
|
-
.rickshaw_annotation_timeline .annotation.active,
|
783
|
-
.rickshaw_annotation_timeline .annotation:hover {
|
784
|
-
background-color: rgba(0, 0, 0, 0.8);
|
785
|
-
cursor: none;
|
786
|
-
}
|
787
|
-
.rickshaw_annotation_timeline .annotation .content:hover {
|
788
|
-
z-index: 50;
|
789
|
-
}
|
790
|
-
.rickshaw_annotation_timeline .annotation.active .content {
|
791
|
-
display: block;
|
792
|
-
}
|
793
|
-
.rickshaw_annotation_timeline .annotation:hover .content {
|
794
|
-
display: block;
|
795
|
-
z-index: 50;
|
796
|
-
}
|
797
|
-
.rickshaw_graph .y_axis {
|
798
|
-
fill: none;
|
799
|
-
}
|
800
|
-
.rickshaw_graph .y_ticks .tick {
|
801
|
-
stroke: rgba(0, 0, 0, 0.16);
|
802
|
-
stroke-width: 2px;
|
803
|
-
shape-rendering: crisp-edges;
|
804
|
-
pointer-events: none;
|
805
|
-
}
|
806
|
-
.rickshaw_graph .y_grid .tick {
|
807
|
-
z-index: -1;
|
808
|
-
stroke: rgba(0, 0, 0, 0.20);
|
809
|
-
stroke-width: 1px;
|
810
|
-
stroke-dasharray: 1 1;
|
811
|
-
}
|
812
|
-
.rickshaw_graph .y_grid path {
|
813
|
-
fill: none;
|
814
|
-
stroke: none;
|
815
|
-
}
|
816
|
-
.rickshaw_graph .y_ticks path {
|
817
|
-
fill: none;
|
818
|
-
stroke: #808080;
|
819
|
-
}
|
820
|
-
.rickshaw_graph .y_ticks text {
|
821
|
-
opacity: 0.5;
|
822
|
-
font-size: 12px;
|
823
|
-
pointer-events: none;
|
824
|
-
}
|
825
|
-
.rickshaw_graph .x_tick.glow .title,
|
826
|
-
.rickshaw_graph .y_ticks.glow text {
|
827
|
-
fill: black;
|
828
|
-
color: black;
|
829
|
-
text-shadow:
|
830
|
-
-1px 1px 0 rgba(255, 255, 255, 0.1),
|
831
|
-
1px -1px 0 rgba(255, 255, 255, 0.1),
|
832
|
-
1px 1px 0 rgba(255, 255, 255, 0.1),
|
833
|
-
0px 1px 0 rgba(255, 255, 255, 0.1),
|
834
|
-
0px -1px 0 rgba(255, 255, 255, 0.1),
|
835
|
-
1px 0px 0 rgba(255, 255, 255, 0.1),
|
836
|
-
-1px 0px 0 rgba(255, 255, 255, 0.1),
|
837
|
-
-1px -1px 0 rgba(255, 255, 255, 0.1);
|
838
|
-
}
|
839
|
-
.rickshaw_graph .x_tick.inverse .title,
|
840
|
-
.rickshaw_graph .y_ticks.inverse text {
|
841
|
-
fill: white;
|
842
|
-
color: white;
|
843
|
-
text-shadow:
|
844
|
-
-1px 1px 0 rgba(0, 0, 0, 0.8),
|
845
|
-
1px -1px 0 rgba(0, 0, 0, 0.8),
|
846
|
-
1px 1px 0 rgba(0, 0, 0, 0.8),
|
847
|
-
0px 1px 0 rgba(0, 0, 0, 0.8),
|
848
|
-
0px -1px 0 rgba(0, 0, 0, 0.8),
|
849
|
-
1px 0px 0 rgba(0, 0, 0, 0.8),
|
850
|
-
-1px 0px 0 rgba(0, 0, 0, 0.8),
|
851
|
-
-1px -1px 0 rgba(0, 0, 0, 0.8);
|
852
|
-
}
|
853
|
-
.rickshaw_legend {
|
854
|
-
font-family: Arial;
|
855
|
-
font-size: 12px;
|
856
|
-
color: white;
|
857
|
-
background: #404040;
|
858
|
-
display: inline-block;
|
859
|
-
padding: 12px 5px;
|
860
|
-
border-radius: 2px;
|
861
|
-
position: relative;
|
862
|
-
}
|
863
|
-
.rickshaw_legend:hover {
|
864
|
-
z-index: 10;
|
865
|
-
}
|
866
|
-
.rickshaw_legend .swatch {
|
867
|
-
width: 10px;
|
868
|
-
height: 10px;
|
869
|
-
border: 1px solid rgba(0, 0, 0, 0.2);
|
870
|
-
}
|
871
|
-
.rickshaw_legend .line {
|
872
|
-
clear: both;
|
873
|
-
line-height: 140%;
|
874
|
-
padding-right: 15px;
|
875
|
-
}
|
876
|
-
.rickshaw_legend .line .swatch {
|
877
|
-
display: inline-block;
|
878
|
-
margin-right: 3px;
|
879
|
-
border-radius: 2px;
|
880
|
-
}
|
881
|
-
.rickshaw_legend .label {
|
882
|
-
white-space: nowrap;
|
883
|
-
display: inline;
|
884
|
-
}
|
885
|
-
.rickshaw_legend .action:hover {
|
886
|
-
opacity: 0.6;
|
887
|
-
}
|
888
|
-
.rickshaw_legend .action {
|
889
|
-
margin-right: 0.2em;
|
890
|
-
font-size: 10px;
|
891
|
-
opacity: 0.2;
|
892
|
-
cursor: pointer;
|
893
|
-
font-size: 14px;
|
894
|
-
}
|
895
|
-
.rickshaw_legend .line.disabled {
|
896
|
-
opacity: 0.4;
|
897
|
-
}
|
898
|
-
.rickshaw_legend ul {
|
899
|
-
list-style-type: none;
|
900
|
-
margin: 0;
|
901
|
-
padding: 0;
|
902
|
-
margin: 2px;
|
903
|
-
cursor: pointer;
|
904
|
-
}
|
905
|
-
.rickshaw_legend li {
|
906
|
-
padding: 0 0 0 2px;
|
907
|
-
min-width: 80px;
|
908
|
-
white-space: nowrap;
|
909
|
-
}
|
910
|
-
.rickshaw_legend li:hover {
|
911
|
-
background: rgba(255, 255, 255, 0.08);
|
912
|
-
border-radius: 3px;
|
913
|
-
}
|
914
|
-
.rickshaw_legend li:active {
|
915
|
-
background: rgba(255, 255, 255, 0.2);
|
916
|
-
border-radius: 3px;
|
917
|
-
}
|
918
686
|
.code-wrap {
|
919
687
|
white-space: normal;
|
920
688
|
}
|
@@ -934,8 +702,8 @@ img.smallogo {
|
|
934
702
|
padding: 0;
|
935
703
|
}
|
936
704
|
@media (max-width: 979px) {
|
937
|
-
|
938
|
-
|
939
|
-
|
940
|
-
|
705
|
+
.navbar-fixed-top, .navbar-fixed-bottom {
|
706
|
+
position: relative;
|
707
|
+
top: auto;
|
708
|
+
}
|
941
709
|
}
|
data/web/locales/en.yml
CHANGED
data/web/views/_job_info.erb
CHANGED
@@ -7,13 +7,13 @@
|
|
7
7
|
<tr>
|
8
8
|
<th><%= t('Queue') %></th>
|
9
9
|
<td>
|
10
|
-
<a href="<%= root_path %>queues/<%= job
|
10
|
+
<a href="<%= root_path %>queues/<%= job.queue %>"><%= job.queue %></a>
|
11
11
|
</td>
|
12
12
|
</tr>
|
13
13
|
<tr>
|
14
|
-
<th><%= t('
|
14
|
+
<th><%= t('Job') %></th>
|
15
15
|
<td>
|
16
|
-
<code><%= job
|
16
|
+
<code><%= job.display_class %></code>
|
17
17
|
</td>
|
18
18
|
</tr>
|
19
19
|
<tr>
|
@@ -21,7 +21,7 @@
|
|
21
21
|
<td>
|
22
22
|
<code class="code-wrap">
|
23
23
|
<!-- We don't want to truncate any job arguments when viewing a single job's status page -->
|
24
|
-
<div class="args-extended"><%= display_args(job
|
24
|
+
<div class="args-extended"><%= display_args(job.display_args, nil) %></div>
|
25
25
|
</code>
|
26
26
|
</td>
|
27
27
|
</tr>
|
data/web/views/_poll.erb
CHANGED
data/web/views/busy.erb
CHANGED
@@ -1,7 +1,16 @@
|
|
1
1
|
<div class="row header">
|
2
|
-
<div class="col-sm-
|
2
|
+
<div class="col-sm-8 pull-left">
|
3
3
|
<h3><%= t('Processes') %></h3>
|
4
4
|
</div>
|
5
|
+
<div class="col-sm-4 pull-right">
|
6
|
+
<form method="POST" style="margin-top: 20px; margin-bottom: 10px;">
|
7
|
+
<div class="btn-group pull-right">
|
8
|
+
<button class="btn btn-warn" type="submit" name="quiet" value="1"><%= t('QuietAll') %></button>
|
9
|
+
<button class="btn btn-danger" type="submit" name="stop" value="1"><%= t('StopAll') %></button>
|
10
|
+
</div>
|
11
|
+
</form>
|
12
|
+
</div>
|
13
|
+
</div>
|
5
14
|
</div>
|
6
15
|
|
7
16
|
<table class="processes table table-hover table-bordered table-striped table-white">
|
@@ -10,13 +19,24 @@
|
|
10
19
|
<th><%= t('Started') %></th>
|
11
20
|
<th><%= t('Threads') %></th>
|
12
21
|
<th><%= t('Busy') %></th>
|
22
|
+
<th> </th>
|
13
23
|
</thead>
|
14
24
|
<% Sidekiq::ProcessSet.new.each_with_index do |process, index| %>
|
15
25
|
<tr>
|
16
|
-
<td><%= process['hostname']
|
26
|
+
<td><%= "#{process['hostname']}:#{process['pid']}" %></td>
|
17
27
|
<td><%= relative_time(Time.at(process['started_at'])) %></td>
|
18
28
|
<td><%= process['concurrency'] %></td>
|
19
29
|
<td><%= process['busy'] %></td>
|
30
|
+
<td>
|
31
|
+
<div class="btn-group pull-right">
|
32
|
+
<form method="POST">
|
33
|
+
<input type="hidden" name="hostname" value="<%= process['hostname'] %>"/>
|
34
|
+
<input type="hidden" name="pid" value="<%= process['pid'] %>"/>
|
35
|
+
<button class="btn btn-warn" type="submit" name="quiet" value="1"><%= t('Quiet') %></button>
|
36
|
+
<button class="btn btn-danger" type="submit" name="stop" value="1"><%= t('Stop') %></button>
|
37
|
+
</form>
|
38
|
+
</div>
|
39
|
+
</td>
|
20
40
|
</tr>
|
21
41
|
<% end %>
|
22
42
|
</table>
|
@@ -33,21 +53,22 @@
|
|
33
53
|
<th><%= t('TID') %></th>
|
34
54
|
<th><%= t('JID') %></th>
|
35
55
|
<th><%= t('Queue') %></th>
|
36
|
-
<th><%= t('
|
56
|
+
<th><%= t('Job') %></th>
|
37
57
|
<th><%= t('Arguments') %></th>
|
38
58
|
<th><%= t('Started') %></th>
|
39
59
|
</thead>
|
40
60
|
<% workers.each_with_index do |(process, thread, msg), index| %>
|
61
|
+
<% job = Sidekiq::Job.new(msg['payload']) -%>
|
41
62
|
<tr>
|
42
63
|
<td><%= process %></td>
|
43
64
|
<td><%= thread %></td>
|
44
|
-
<td><%=
|
65
|
+
<td><%= job.jid %></td>
|
45
66
|
<td>
|
46
67
|
<a href="<%= root_path %>queues/<%= msg['queue'] %>"><%= msg['queue'] %></a>
|
47
68
|
</td>
|
48
|
-
<td><%=
|
69
|
+
<td><%= job.display_class %></td>
|
49
70
|
<td>
|
50
|
-
<div class="args"><%= display_args(
|
71
|
+
<div class="args"><%= display_args(job.display_args) %></div>
|
51
72
|
</td>
|
52
73
|
<td><%= relative_time(Time.at(msg['run_at'])) %></td>
|
53
74
|
</tr>
|