nofxx-god_web 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +1 -0
- data/Rakefile +50 -0
- data/Readme.textile +82 -0
- data/VERSION +1 -0
- data/bin/god_web +11 -0
- data/bugs/issue-28789de6ef59a981f26031fdf68030a1474251e8.yaml +18 -0
- data/bugs/issue-949b87d1535bd55950daf2ec197a25ce2a0de13f.yaml +18 -0
- data/bugs/issue-9579e138eec0aee906895eefa1cc546bd7d54b0d.yaml +18 -0
- data/bugs/issue-b13b98759d3cf194cfee1bc00f0245f4b19f6cd2.yaml +18 -0
- data/bugs/issue-cf27fa73c85d2b7a389cbdcfe669b9703380667c.yaml +18 -0
- data/bugs/project.yaml +16 -0
- data/god_web.gemspec +109 -0
- data/lib/app.rb +56 -0
- data/lib/environment.rb +28 -0
- data/lib/god_web.rb +197 -0
- data/lib/sinatra_http_auth.rb +53 -0
- data/public/.DS_Store +0 -0
- data/public/app.css +30 -0
- data/public/icons/databases.png +0 -0
- data/public/icons/gear.png +0 -0
- data/public/icons/groups.png +0 -0
- data/public/icons/key.png +0 -0
- data/public/icons/monitor.png +0 -0
- data/public/icons/restart.png +0 -0
- data/public/icons/ruby.png +0 -0
- data/public/icons/server.png +0 -0
- data/public/icons/start.png +0 -0
- data/public/icons/stop.png +0 -0
- data/public/icons/terminal.png +0 -0
- data/public/icons/unmonitor.png +0 -0
- data/public/icons/unmonitored.png +0 -0
- data/public/icons/unmonitored_old.png +0 -0
- data/public/icons/up.png +0 -0
- data/public/icons/warn.png +0 -0
- data/public/icons/wrench.png +0 -0
- data/public/iui/backButton.png +0 -0
- data/public/iui/blueButton.png +0 -0
- data/public/iui/cancel.png +0 -0
- data/public/iui/grayButton.png +0 -0
- data/public/iui/iui-logo-touch-icon.png +0 -0
- data/public/iui/iui.css +396 -0
- data/public/iui/iui.js +510 -0
- data/public/iui/iuix.css +1 -0
- data/public/iui/iuix.js +1 -0
- data/public/iui/listArrow.png +0 -0
- data/public/iui/listArrowSel.png +0 -0
- data/public/iui/listGroup.png +0 -0
- data/public/iui/loading.gif +0 -0
- data/public/iui/pinstripes.png +0 -0
- data/public/iui/redButton.png +0 -0
- data/public/iui/selection.png +0 -0
- data/public/iui/thumb.png +0 -0
- data/public/iui/toggle.png +0 -0
- data/public/iui/toggleOn.png +0 -0
- data/public/iui/toolButton.png +0 -0
- data/public/iui/toolbar.png +0 -0
- data/public/iui/whiteButton.png +0 -0
- data/spec/god_web_spec.rb +46 -0
- data/spec/spec_helper.rb +11 -0
- data/views/command.erb +4 -0
- data/views/status.erb +30 -0
- data/views/watch.erb +10 -0
- metadata +146 -0
data/public/iui/iuix.css
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
body{margin:0;font-family:Helvetica;background:#FFF;color:#000;overflow-x:hidden;-webkit-user-select:none;-webkit-text-size-adjust:none;}body>*:not(.toolbar){display:none;position:absolute;margin:0;padding:0;left:0;top:45px;width:100%;min-height:372px;-webkit-transition-duration:300ms;-webkit-transition-property:-webkit-transform;-webkit-transform:translateX(0%);}body[orient="landscape"]>*:not(.toolbar){min-height:268px;}body>*[selected="true"]{display:block;}a[selected],a:active{background-color:#194fdb!important;background-image:url(listArrowSel.png),url(selection.png)!important;background-repeat:no-repeat,repeat-x;background-position:right center,left top;color:#FFF!important;}a[selected="progress"]{background-image:url(loading.gif),url(selection.png)!important;}body>.toolbar{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;border-bottom:1px solid #2d3642;border-top:1px solid #6d84a2;padding:10px;height:45px;background:url(toolbar.png) #6d84a2 repeat-x;}.toolbar>h1{position:absolute;overflow:hidden;left:50%;margin:1px 0 0 -75px;height:45px;font-size:20px;width:150px;font-weight:bold;text-shadow:rgba(0,0,0,0.4) 0 -1px 0;text-align:center;text-overflow:ellipsis;white-space:nowrap;color:#FFF;}body[orient="landscape"]>.toolbar>h1{margin-left:-125px;width:250px;}.button{position:absolute;overflow:hidden;top:8px;right:6px;margin:0;border-width:0 5px;padding:0 3px;width:auto;height:30px;line-height:30px;font-family:inherit;font-size:12px;font-weight:bold;color:#FFF;text-shadow:rgba(0,0,0,0.6) 0 -1px 0;text-overflow:ellipsis;text-decoration:none;white-space:nowrap;background:none;-webkit-border-image:url(toolButton.png) 0 5 0 5;}.blueButton{-webkit-border-image:url(blueButton.png) 0 5 0 5;border-width:0 5px;}.leftButton{left:6px;right:auto;}#backButton{display:none;left:6px;right:auto;padding:0;max-width:55px;border-width:0 8px 0 14px;-webkit-border-image:url(backButton.png) 0 8 0 14;}.whiteButton,.redButton,.grayButton{display:block;border-width:0 12px;padding:10px;text-align:center;font-size:20px;font-weight:bold;text-decoration:inherit;color:inherit;}.whiteButton{-webkit-border-image:url(whiteButton.png) 0 12 0 12;text-shadow:rgba(255,255,255,0.7) 0 1px 0;}.redButton{-webkit-border-image:url(redButton.png) 0 12 0 12;color:#fff;text-shadow:#7a0001 0 -1px 0;}.grayButton{-webkit-border-image:url(grayButton.png) 0 12 0 12;color:#FFF;}body>ul>li{position:relative;margin:0;border-bottom:1px solid #E0E0E0;padding:8px 0 8px 10px;font-size:20px;font-weight:bold;list-style:none;}body>ul>li.group{position:relative;top:-1px;margin-bottom:-2px;border-top:1px solid #7d7d7d;border-bottom:1px solid #999;padding:1px 10px;background:url(listGroup.png) repeat-x;font-size:17px;font-weight:bold;text-shadow:rgba(0,0,0,0.4) 0 1px 0;color:#FFF;}body>ul>li.group:first-child{top:0;border-top:none;}body>ul>li>a{display:block;margin:-8px 0 -8px -10px;padding:8px 32px 8px 10px;text-decoration:none;color:inherit;background:url(listArrow.png) no-repeat right center;}a[target="_replace"]{box-sizing:border-box;-webkit-box-sizing:border-box;padding-top:25px;padding-bottom:25px;font-size:18px;color:cornflowerblue;background-color:#FFF;background-image:none;}body>.dialog{top:0;width:100%;min-height:417px;z-index:2;background:rgba(0,0,0,0.8);padding:0;text-align:right;}.dialog>fieldset{box-sizing:border-box;-webkit-box-sizing:border-box;width:100%;margin:0;border:none;border-top:1px solid #6d84a2;padding:10px 6px;background:url(toolbar.png) #7388a5 repeat-x;}.dialog>fieldset>h1{margin:0 10px 0 10px;padding:0;font-size:20px;font-weight:bold;color:#FFF;text-shadow:rgba(0,0,0,0.4) 0 -1px 0;text-align:center;}.dialog>fieldset>label{position:absolute;margin:16px 0 0 6px;font-size:14px;color:#999;}input:not(input[type|=radio]):not(input[type|=checkbox]){box-sizing:border-box;-webkit-box-sizing:border-box;width:100%;margin:8px 0 0 0;padding:6px 6px 6px 44px;font-size:16px;font-weight:normal;}body>.panel{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:10px;background:#c8c8c8 url(pinstripes.png);}.panel>fieldset{position:relative;margin:0 0 20px 0;padding:0;background:#FFF;-webkit-border-radius:10px;-moz-border-radius:10px;border:1px solid #999;text-align:right;font-size:16px;}.row{position:relative;min-height:42px;border-bottom:1px solid #999;-webkit-border-radius:0;text-align:right;}fieldset>.row:last-child{border-bottom:none!important;}.row>input:not(input[type|=radio]):not(input[type|=checkbox]){box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;margin:0;border:none;padding:12px 10px 0 110px;height:42px;background:none;}.row>input[type|=radio],.row>input[type|=checkbox]{margin:7px 7px 0 0;height:25px;width:25px;}.row>label{position:absolute;margin:0 0 0 14px;line-height:42px;font-weight:bold;}.row>span{position:absolute;padding:12px 10px 0 110px;margin:0;}.row>.toggle{position:absolute;top:6px;right:6px;width:100px;height:28px;}.toggle{border:1px solid #888;-webkit-border-radius:6px;background:#FFF url(toggle.png) repeat-x;font-size:19px;font-weight:bold;line-height:30px;}.toggle[toggled="true"]{border:1px solid #143fae;background:#194fdb url(toggleOn.png) repeat-x;}.toggleOn{display:none;position:absolute;width:60px;text-align:center;left:0;top:0;color:#FFF;text-shadow:rgba(0,0,0,0.4) 0 -1px 0;}.toggleOff{position:absolute;width:60px;text-align:center;right:0;top:0;color:#666;}.toggle[toggled="true"]>.toggleOn{display:block;}.toggle[toggled="true"]>.toggleOff{display:none;}.thumb{position:absolute;top:-1px;left:-1px;width:40px;height:28px;border:1px solid #888;-webkit-border-radius:6px;background:#fff url(thumb.png) repeat-x;}.toggle[toggled="true"]>.thumb{left:auto;right:-1px;}.panel>h2{margin:0 0 8px 14px;font-size:inherit;font-weight:bold;color:#4d4d70;text-shadow:rgba(255,255,255,0.75) 2px 2px 0;}#preloader{display:none;background-image:url(loading.gif),url(selection.png),url(blueButton.png),url(listArrowSel.png),url(listGroup.png);}
|
data/public/iui/iuix.js
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
(function(){var _1=20;var _2=0;var _3=null;var _4=null;var _5=0;var _6=location.hash;var _7="#_";var _8=[];var _9=0;var _a;var _b=false;var _c="portrait";var _d="landscape";window.iui={animOn:false,showPage:function(_e,_f){if(_e){if(_4){_4.removeAttribute("selected");_4=null;}if(hasClass(_e,"dialog")){showDialog(_e);}else{var _10=_3;_3=_e;if(_10){setTimeout(slidePages,0,_10,_e,_f);}else{updatePage(_e,_10);}}}},showPageById:function(_11){var _12=$(_11);if(_12){var _13=_8.indexOf(_11);var _14=_13!=-1;if(_14){_8.splice(_13,_8.length);}iui.showPage(_12,_14);}},showPageByHref:function(_15,_16,_17,_18,cb){var req=new XMLHttpRequest();req.onerror=function(){if(cb){cb(false);}};req.onreadystatechange=function(){if(req.readyState==4){if(_18){replaceElementWithSource(_18,req.responseText);}else{var _1b=document.createElement("div");_1b.innerHTML=req.responseText;iui.insertPages(_1b.childNodes);}if(cb){setTimeout(cb,1000,true);}}};if(_16){req.open(_17||"GET",_15,true);req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");req.setRequestHeader("Content-Length",_16.length);req.send(_16.join("&"));}else{req.open(_17||"GET",_15,true);req.send(null);}},insertPages:function(_1c){var _1d;for(var i=0;i<_1c.length;++i){var _1f=_1c[i];if(_1f.nodeType==1){if(!_1f.id){_1f.id="__"+(++_9)+"__";}var _20=$(_1f.id);if(_20){_20.parentNode.replaceChild(_1f,_20);}else{document.body.appendChild(_1f);}if(_1f.getAttribute("selected")=="true"||!_1d){_1d=_1f;}--i;}}if(_1d){iui.showPage(_1d);}},getSelectedPage:function(){for(var _21=document.body.firstChild;_21;_21=_21.nextSibling){if(_21.nodeType==1&&_21.getAttribute("selected")=="true"){return _21;}}},isNativeUrl:function(_22){for(var i=0;i<iui.nativeUrlPatterns.length;i++){if(_22.match(iui.nativeUrlPatterns[i])){return true;}}return false;},nativeUrlPatterns:[new RegExp("^http://maps.google.com/maps?"),new RegExp("^mailto:"),new RegExp("^tel:"),new RegExp("^http://www.youtube.com/watch\\?v="),new RegExp("^http://www.youtube.com/v/"),new RegExp("^javascript:"),]};addEventListener("load",function(_24){var _25=iui.getSelectedPage();var _26=getPageFromLoc();if(_25){iui.showPage(_25);}if(_26&&(_26!=_25)){iui.showPage(_26);}setTimeout(preloadImages,0);if(typeof window.onorientationchange=="object"){window.onorientationchange=orientChangeHandler;_b=true;setTimeout(orientChangeHandler,0);}setTimeout(checkOrientAndLocation,0);_a=setInterval(checkOrientAndLocation,300);},false);addEventListener("unload",function(_27){return;},false);addEventListener("click",function(_28){var _29=findParent(_28.target,"a");if(_29){function unselect(){_29.removeAttribute("selected");}if(_29.href&&_29.hash&&_29.hash!="#"&&!_29.target){_29.setAttribute("selected","true");iui.showPage($(_29.hash.substr(1)));setTimeout(unselect,500);}else{if(_29==$("backButton")){history.back();}else{if(_29.getAttribute("type")=="submit"){submitForm(findParent(_29,"form"));}else{if(_29.getAttribute("type")=="cancel"){cancelDialog(findParent(_29,"form"));}else{if(_29.target=="_replace"){_29.setAttribute("selected","progress");iui.showPageByHref(_29.href,null,null,_29,unselect);}else{if(iui.isNativeUrl(_29.href)){return;}else{if(_29.target=="_webapp"){location.href=_29.href;}else{if(!_29.target){_29.setAttribute("selected","progress");iui.showPageByHref(_29.href,null,null,null,unselect);}else{return;}}}}}}}}_28.preventDefault();}},true);addEventListener("click",function(_2a){var div=findParent(_2a.target,"div");if(div&&hasClass(div,"toggle")){div.setAttribute("toggled",div.getAttribute("toggled")!="true");_2a.preventDefault();}},true);function getPageFromLoc(){var _2c;var _2d=location.hash.match(/#_([^\?_]+)/);if(_2d){_2c=_2d[1];}if(_2c){_2c=$(_2c);}return _2c;}function orientChangeHandler(){var _2e=window.orientation;switch(_2e){case 0:setOrientation(_c);break;case 90:case -90:setOrientation(_d);break;}}function checkOrientAndLocation(){if(!_b){if(window.innerWidth!=_5){_5=window.innerWidth;var _2f=_5==320?_c:_d;setOrientation(_2f);}}if(location.hash!=_6){var _30=location.hash.substr(_7.length);iui.showPageById(_30);}}function setOrientation(_31){document.body.setAttribute("orient",_31);setTimeout(scrollTo,100,0,1);}function showDialog(_32){_4=_32;_32.setAttribute("selected","true");if(hasClass(_32,"dialog")&&!_32.target){showForm(_32);}}function showForm(_33){_33.onsubmit=function(_34){_34.preventDefault();submitForm(_33);};_33.onclick=function(_35){if(_35.target==_33&&hasClass(_33,"dialog")){cancelDialog(_33);}};}function cancelDialog(_36){_36.removeAttribute("selected");}function updatePage(_37,_38){if(!_37.id){_37.id="__"+(++_9)+"__";}location.hash=_6=_7+_37.id;_8.push(_37.id);var _39=$("pageTitle");if(_37.title){_39.innerHTML=_37.title;}if(_37.localName.toLowerCase()=="form"&&!_37.target){showForm(_37);}var _3a=$("backButton");if(_3a){var _3b=$(_8[_8.length-2]);if(_3b&&!_37.getAttribute("hideBackButton")){_3a.style.display="inline";_3a.innerHTML=_3b.title?_3b.title:"Back";}else{_3a.style.display="none";}}}function slidePages(_3c,_3d,_3e){var _3f=(_3e?_3c:_3d).getAttribute("axis");clearInterval(_a);if(canDoSlideAnim()&&_3f!="y"){slide2(_3c,_3d,_3e,slideDone);}else{slide1(_3c,_3d,_3e,_3f,slideDone);}function slideDone(){if(!hasClass(_3d,"dialog")){_3c.removeAttribute("selected");}_a=setInterval(checkOrientAndLocation,300);setTimeout(updatePage,0,_3d,_3c);_3c.removeEventListener("webkitTransitionEnd",slideDone,false);}}function canDoSlideAnim(){return (iui.animOn)&&(typeof WebKitCSSMatrix=="object");}function slide1(_40,_41,_42,_43,cb){if(_43=="y"){(_42?_40:_41).style.top="100%";}else{_41.style.left="100%";}scrollTo(0,1);_41.setAttribute("selected","true");var _45=100;slide();var _46=setInterval(slide,_2);function slide(){_45-=_1;if(_45<=0){_45=0;clearInterval(_46);cb();}if(_43=="y"){_42?_40.style.top=(100-_45)+"%":_41.style.top=_45+"%";}else{_40.style.left=(_42?(100-_45):(_45-100))+"%";_41.style.left=(_42?-_45:_45)+"%";}}}function slide2(_47,_48,_49,cb){_48.style.webkitTransitionDuration="0ms";var _4b="translateX("+(_49?"-":"")+window.innerWidth+"px)";var _4c="translateX("+(_49?"100%":"-100%")+")";_48.style.webkitTransform=_4b;_48.setAttribute("selected","true");_48.style.webkitTransitionDuration="";function startTrans(){_47.style.webkitTransform=_4c;_48.style.webkitTransform="translateX(0%)";}_47.addEventListener("webkitTransitionEnd",cb,false);setTimeout(startTrans,0);}function preloadImages(){var _4d=document.createElement("div");_4d.id="preloader";document.body.appendChild(_4d);}function submitForm(_4e){iui.showPageByHref(_4e.action||"POST",encodeForm(_4e),_4e.method);}function encodeForm(_4f){function encode(_50){for(var i=0;i<_50.length;++i){if(_50[i].name){args.push(_50[i].name+"="+escape(_50[i].value));}}}var _52=[];encode(_4f.getElementsByTagName("input"));encode(_4f.getElementsByTagName("textarea"));encode(_4f.getElementsByTagName("select"));return _52;}function findParent(_53,_54){while(_53&&(_53.nodeType!=1||_53.localName.toLowerCase()!=_54)){_53=_53.parentNode;}return _53;}function hasClass(_55,_56){var re=new RegExp("(^|\\s)"+_56+"($|\\s)");return re.exec(_55.getAttribute("class"))!=null;}function replaceElementWithSource(_58,_59){var _5a=_58.parentNode;var _5b=_58;while(_5a.parentNode!=document.body){_5a=_5a.parentNode;_5b=_5b.parentNode;}var _5c=document.createElement(_5b.localName);_5c.innerHTML=_59;_5a.removeChild(_5b);while(_5c.firstChild){_5a.appendChild(_5c.firstChild);}}function $(id){return document.getElementById(id);}function ddd(){console.log.apply(console,arguments);}})();
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
+
|
3
|
+
GOD_RUN = "I [2009-09-08 02:50:33] INFO: integra [ok] process is running (ProcessRunning)\n"
|
4
|
+
GOD_MEM = "I [2009-09-08 02:50:42] INFO: integra [ok] memory within bounds [23600kb, 23600kb, 23600kb, 23604kb, 23604kb] (MemoryUsage)"
|
5
|
+
GOD_MOV = "I [2009-09-08 05:06:19] INFO: nginx move 'up' to 'restart'"
|
6
|
+
GOD_ACT = "I [2009-09-08 05:06:19] INFO: nginx restart: /etc/rc.d/nginx restart"
|
7
|
+
|
8
|
+
describe "GodWeb" do
|
9
|
+
|
10
|
+
it "should find possible statuses" do
|
11
|
+
GodWeb.possible_statuses(:up).should eql(["stop", "restart", "unmonitor"])
|
12
|
+
end
|
13
|
+
|
14
|
+
describe "Log formatter" do
|
15
|
+
before do
|
16
|
+
DRb.stub!(:start_service)
|
17
|
+
God::Socket.stub!(:socket)
|
18
|
+
DRbObject.should_receive(:new).and_return(mock_drb = mock("DRB"))
|
19
|
+
mock_drb.should_receive(:ping).and_return(true)
|
20
|
+
@g = GodWeb.new("foo")
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should format log" do
|
24
|
+
@g.send(:format_log, GOD_RUN).should eql(
|
25
|
+
"<span class='gray'>02:50:33</span> | <span class='green'>ok</span> | process is running " )
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should format log mem" do
|
29
|
+
@g.send(:format_log, GOD_MEM).should eql(
|
30
|
+
"<span class='gray'>02:50:42</span> | <span class='green'>ok</span> | memory mb [23, 23, 23, 23, 23] " )
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should format log move" do
|
34
|
+
@g.send(:format_log, GOD_MOV).should eql(
|
35
|
+
"<span class='gray'>05:06:19</span> | <span class='act'>act</span> | move 'up' to 'restart'" )
|
36
|
+
end
|
37
|
+
|
38
|
+
it "should format log act" do
|
39
|
+
@g.send(:format_log, GOD_ACT).should eql(
|
40
|
+
"<span class='gray'>05:06:19</span> | <span class='act'>act</span> | restart: /etc/rc.d/nginx restart" )
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
2
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
3
|
+
require 'rubygems'
|
4
|
+
require 'god'
|
5
|
+
require 'god_web'
|
6
|
+
require 'spec'
|
7
|
+
require 'spec/autorun'
|
8
|
+
|
9
|
+
Spec::Runner.configure do |config|
|
10
|
+
|
11
|
+
end
|
data/views/command.erb
ADDED
data/views/status.erb
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
<html>
|
2
|
+
<head>
|
3
|
+
<title><%= @title %></title>
|
4
|
+
<meta name="viewport" content="width=320; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;"/>
|
5
|
+
<style type="text/css" media="screen">@import "/iui/iui.css";</style>
|
6
|
+
<style type="text/css" media="screen">@import "/app.css";</style>
|
7
|
+
<script type="application/x-javascript" src="/iui/iui.js"></script>
|
8
|
+
<script type="text/javascript"> iui.animOn = true;</script>
|
9
|
+
</head>
|
10
|
+
<body>
|
11
|
+
<div class="toolbar">
|
12
|
+
<h1 id="pageTitle"><%= @title %><img src="icons/up.png"></img></h1>
|
13
|
+
<a id="backButton" class="button" href="#"></a>
|
14
|
+
<a class="button" href="/" target="_self">Refresh</a>
|
15
|
+
</div>
|
16
|
+
<ul id="home" selected="true" title="GodWeb">
|
17
|
+
<% unless @groups.empty? %>
|
18
|
+
<li class="group">Groups</li>
|
19
|
+
<% @groups.each do |watch| %>
|
20
|
+
<li id="<%= watch %>" class="groups"><a href="/g/<%= watch %>"><%= watch %></a></li>
|
21
|
+
<% end %>
|
22
|
+
<% end %>
|
23
|
+
<li class="group">Watches</li>
|
24
|
+
<% @watches.each do |watch| %>
|
25
|
+
<li id="<%= watch %>" class="<%= @statuses[watch][:state] %>">
|
26
|
+
<a href="/w/<%= watch %>"><%= watch %></a></li>
|
27
|
+
<% end %>
|
28
|
+
</ul>
|
29
|
+
</body>
|
30
|
+
</html>
|
data/views/watch.erb
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
<ul id="<%= @watch %>_commands" title="<%= @title %>">
|
2
|
+
<li class="<%= @status %>"> <%= @status %> [<%= Time.now.strftime("%H:%m %m/%d") %>]</li>
|
3
|
+
<li class="group">Commands</li>
|
4
|
+
<% @commands.each do |command| %>
|
5
|
+
<li id="<%= command %>_<%= @watch %>" class="<%= command %>">
|
6
|
+
<a href="/w/<%= @watch %>/<%= command %>"><%= command %></a></li>
|
7
|
+
<% end %>
|
8
|
+
<li class="group">Log</li>
|
9
|
+
<div class="info"><p><%= @log %></p></div>
|
10
|
+
</ul>
|
metadata
ADDED
@@ -0,0 +1,146 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: nofxx-god_web
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jesse Newland
|
8
|
+
- Marcos Piccinini
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
|
13
|
+
date: 2009-09-08 00:00:00 -07:00
|
14
|
+
default_executable: god_web
|
15
|
+
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
17
|
+
name: god
|
18
|
+
type: :runtime
|
19
|
+
version_requirement:
|
20
|
+
version_requirements: !ruby/object:Gem::Requirement
|
21
|
+
requirements:
|
22
|
+
- - ">="
|
23
|
+
- !ruby/object:Gem::Version
|
24
|
+
version: "0"
|
25
|
+
version:
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: sinatra
|
28
|
+
type: :runtime
|
29
|
+
version_requirement:
|
30
|
+
version_requirements: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ">="
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: "0"
|
35
|
+
version:
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: rspec
|
38
|
+
type: :development
|
39
|
+
version_requirement:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
requirements:
|
42
|
+
- - ">="
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: "0"
|
45
|
+
version:
|
46
|
+
description: iPhone friendly sinatra web UI for God
|
47
|
+
email: see@github.com
|
48
|
+
executables:
|
49
|
+
- god_web
|
50
|
+
extensions: []
|
51
|
+
|
52
|
+
extra_rdoc_files: []
|
53
|
+
|
54
|
+
files:
|
55
|
+
- .gitignore
|
56
|
+
- Rakefile
|
57
|
+
- Readme.textile
|
58
|
+
- VERSION
|
59
|
+
- bin/god_web
|
60
|
+
- bugs/issue-28789de6ef59a981f26031fdf68030a1474251e8.yaml
|
61
|
+
- bugs/issue-949b87d1535bd55950daf2ec197a25ce2a0de13f.yaml
|
62
|
+
- bugs/issue-9579e138eec0aee906895eefa1cc546bd7d54b0d.yaml
|
63
|
+
- bugs/issue-b13b98759d3cf194cfee1bc00f0245f4b19f6cd2.yaml
|
64
|
+
- bugs/issue-cf27fa73c85d2b7a389cbdcfe669b9703380667c.yaml
|
65
|
+
- bugs/project.yaml
|
66
|
+
- god_web.gemspec
|
67
|
+
- lib/app.rb
|
68
|
+
- lib/environment.rb
|
69
|
+
- lib/god_web.rb
|
70
|
+
- lib/sinatra_http_auth.rb
|
71
|
+
- public/.DS_Store
|
72
|
+
- public/app.css
|
73
|
+
- public/icons/databases.png
|
74
|
+
- public/icons/gear.png
|
75
|
+
- public/icons/groups.png
|
76
|
+
- public/icons/key.png
|
77
|
+
- public/icons/monitor.png
|
78
|
+
- public/icons/restart.png
|
79
|
+
- public/icons/ruby.png
|
80
|
+
- public/icons/server.png
|
81
|
+
- public/icons/start.png
|
82
|
+
- public/icons/stop.png
|
83
|
+
- public/icons/terminal.png
|
84
|
+
- public/icons/unmonitor.png
|
85
|
+
- public/icons/unmonitored.png
|
86
|
+
- public/icons/unmonitored_old.png
|
87
|
+
- public/icons/up.png
|
88
|
+
- public/icons/warn.png
|
89
|
+
- public/icons/wrench.png
|
90
|
+
- public/iui/backButton.png
|
91
|
+
- public/iui/blueButton.png
|
92
|
+
- public/iui/cancel.png
|
93
|
+
- public/iui/grayButton.png
|
94
|
+
- public/iui/iui-logo-touch-icon.png
|
95
|
+
- public/iui/iui.css
|
96
|
+
- public/iui/iui.js
|
97
|
+
- public/iui/iuix.css
|
98
|
+
- public/iui/iuix.js
|
99
|
+
- public/iui/listArrow.png
|
100
|
+
- public/iui/listArrowSel.png
|
101
|
+
- public/iui/listGroup.png
|
102
|
+
- public/iui/loading.gif
|
103
|
+
- public/iui/pinstripes.png
|
104
|
+
- public/iui/redButton.png
|
105
|
+
- public/iui/selection.png
|
106
|
+
- public/iui/thumb.png
|
107
|
+
- public/iui/toggle.png
|
108
|
+
- public/iui/toggleOn.png
|
109
|
+
- public/iui/toolButton.png
|
110
|
+
- public/iui/toolbar.png
|
111
|
+
- public/iui/whiteButton.png
|
112
|
+
- spec/god_web_spec.rb
|
113
|
+
- spec/spec_helper.rb
|
114
|
+
- views/command.erb
|
115
|
+
- views/status.erb
|
116
|
+
- views/watch.erb
|
117
|
+
has_rdoc: false
|
118
|
+
homepage: http://github.com/nofxx/god_web
|
119
|
+
licenses:
|
120
|
+
post_install_message:
|
121
|
+
rdoc_options:
|
122
|
+
- --charset=UTF-8
|
123
|
+
require_paths:
|
124
|
+
- lib
|
125
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
126
|
+
requirements:
|
127
|
+
- - ">="
|
128
|
+
- !ruby/object:Gem::Version
|
129
|
+
version: "0"
|
130
|
+
version:
|
131
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
132
|
+
requirements:
|
133
|
+
- - ">="
|
134
|
+
- !ruby/object:Gem::Version
|
135
|
+
version: "0"
|
136
|
+
version:
|
137
|
+
requirements: []
|
138
|
+
|
139
|
+
rubyforge_project:
|
140
|
+
rubygems_version: 1.3.5
|
141
|
+
signing_key:
|
142
|
+
specification_version: 3
|
143
|
+
summary: iPhone friendly web UI for God
|
144
|
+
test_files:
|
145
|
+
- spec/spec_helper.rb
|
146
|
+
- spec/god_web_spec.rb
|