memcached-manager 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (89) hide show
  1. data/.rspec +2 -0
  2. data/.travis.yml +19 -0
  3. data/Gemfile +24 -0
  4. data/Gemfile.lock +133 -0
  5. data/LICENSE.txt +20 -0
  6. data/README.rdoc +72 -0
  7. data/Rakefile +57 -0
  8. data/VERSION +1 -0
  9. data/config.ru +8 -0
  10. data/features/api/create_memcached_key.feature +6 -0
  11. data/features/api/delete_memcached_key.feature +6 -0
  12. data/features/api/list_memcached_keys.feature +6 -0
  13. data/features/api/set_memcached_info.feature +5 -0
  14. data/features/api/show_memcached_key.feature +10 -0
  15. data/features/api/show_memcached_stats.feature +5 -0
  16. data/features/api/update_memcached_key.feature +7 -0
  17. data/features/step_definitions/api/create_memcached_key.rb +21 -0
  18. data/features/step_definitions/api/delete_memcached_key.rb +7 -0
  19. data/features/step_definitions/api/list_memcached_keys.rb +16 -0
  20. data/features/step_definitions/api/show_memcached_key.rb +18 -0
  21. data/features/step_definitions/api/show_memcached_stats.rb +3 -0
  22. data/features/step_definitions/api/update_memcached_key.rb +18 -0
  23. data/features/step_definitions/set_memcached_info.rb +25 -0
  24. data/features/step_definitions/webapp/create_memcached_key.rb +10 -0
  25. data/features/step_definitions/webapp/delete_memcached_key.rb +16 -0
  26. data/features/step_definitions/webapp/edit_memcached_key.rb +3 -0
  27. data/features/step_definitions/webapp/list_memcached_keys.rb +4 -0
  28. data/features/step_definitions/webapp/show_memcached_key.rb +4 -0
  29. data/features/step_definitions/webapp/show_memcached_stats.rb +5 -0
  30. data/features/support/env.rb +27 -0
  31. data/features/support/hooks.rb +3 -0
  32. data/features/webapp/create_memcached_key.feature +9 -0
  33. data/features/webapp/delete_memcached_key.feature +8 -0
  34. data/features/webapp/edit_memcached_key.feature +9 -0
  35. data/features/webapp/list_memcached_keys.feature +8 -0
  36. data/features/webapp/show_memcached_key.feature +7 -0
  37. data/features/webapp/show_memcached_stats.feature +6 -0
  38. data/lib/api.rb +85 -0
  39. data/lib/extensions/api_response.rb +15 -0
  40. data/lib/extensions/errors.rb +19 -0
  41. data/lib/extensions/memcached_connection.rb +15 -0
  42. data/lib/extensions/memcached_inspector.rb +49 -0
  43. data/lib/extensions/memcached_settings.rb +18 -0
  44. data/lib/extensions.rb +14 -0
  45. data/lib/public/images/glyphicons-halflings-white.png +0 -0
  46. data/lib/public/images/glyphicons-halflings.png +0 -0
  47. data/lib/public/javascripts/angular/controllers.js +86 -0
  48. data/lib/public/javascripts/angular/routes.js +66 -0
  49. data/lib/public/javascripts/angular/services/notification.js +16 -0
  50. data/lib/public/javascripts/angular/services/resources.js +20 -0
  51. data/lib/public/javascripts/angular/services/response.js +10 -0
  52. data/lib/public/javascripts/angular-resource.min.js +10 -0
  53. data/lib/public/javascripts/angular-ui-states.min.js +7 -0
  54. data/lib/public/javascripts/angular.min.js +161 -0
  55. data/lib/public/javascripts/application.js +18 -0
  56. data/lib/public/javascripts/jquery-1.9.1.min.js +5 -0
  57. data/lib/public/javascripts/noty/jquery.noty.js +547 -0
  58. data/lib/public/javascripts/noty/layouts/top.js +34 -0
  59. data/lib/public/javascripts/noty/themes/default.js +156 -0
  60. data/lib/public/javascripts/noty_config.js +25 -0
  61. data/lib/public/stylesheets/app.css +50 -0
  62. data/lib/public/stylesheets/base.css +269 -0
  63. data/lib/public/stylesheets/icons.css +492 -0
  64. data/lib/public/stylesheets/layout.css +58 -0
  65. data/lib/public/stylesheets/skeleton.css +242 -0
  66. data/lib/public/templates/edit.html.erb +6 -0
  67. data/lib/public/templates/keys.html.erb +36 -0
  68. data/lib/public/templates/new.html.erb +6 -0
  69. data/lib/public/templates/show.html.erb +2 -0
  70. data/lib/public/templates/stats.html.erb +8 -0
  71. data/lib/views/index.erb +13 -0
  72. data/lib/views/layout.erb +52 -0
  73. data/lib/webapp.rb +14 -0
  74. data/memcached-manager.gemspec +145 -0
  75. data/spec/javascripts/angular/controllers/list_keys_controller_spec.js +26 -0
  76. data/spec/javascripts/angular/services/notification_spec.js +45 -0
  77. data/spec/javascripts/angular/services/resource_spec.js +41 -0
  78. data/spec/javascripts/angular/services/response_spec.js +26 -0
  79. data/spec/javascripts/helpers/SpecHelper.js +2 -0
  80. data/spec/javascripts/helpers/angular-mocks.js +1962 -0
  81. data/spec/javascripts/support/jasmine.yml +96 -0
  82. data/spec/javascripts/support/jasmine_helper.rb +11 -0
  83. data/spec/lib/extensions/api_response_spec.rb +28 -0
  84. data/spec/lib/extensions/error_spec.rb +23 -0
  85. data/spec/lib/extensions/memcached_connection_spec.rb +25 -0
  86. data/spec/lib/extensions/memcached_inspector_spec.rb +41 -0
  87. data/spec/lib/extensions/memcached_settings_spec.rb +53 -0
  88. data/spec/spec_helper.rb +41 -0
  89. metadata +252 -0
@@ -0,0 +1,492 @@
1
+ /*!
2
+ * Bootstrap v2.3.2
3
+ *
4
+ * Copyright 2012 Twitter, Inc
5
+ * Licensed under the Apache License v2.0
6
+ * http://www.apache.org/licenses/LICENSE-2.0
7
+ *
8
+ * Designed and built with all the love in the world @twitter by @mdo and @fat.
9
+ */
10
+ .clearfix {
11
+ *zoom: 1;
12
+ }
13
+ .clearfix:before,
14
+ .clearfix:after {
15
+ display: table;
16
+ content: "";
17
+ line-height: 0;
18
+ }
19
+ .clearfix:after {
20
+ clear: both;
21
+ }
22
+ .hide-text {
23
+ font: 0/0 a;
24
+ color: transparent;
25
+ text-shadow: none;
26
+ background-color: transparent;
27
+ border: 0;
28
+ }
29
+ .input-block-level {
30
+ display: block;
31
+ width: 100%;
32
+ min-height: 30px;
33
+ -webkit-box-sizing: border-box;
34
+ -moz-box-sizing: border-box;
35
+ box-sizing: border-box;
36
+ }
37
+ [class^="icon-"],
38
+ [class*=" icon-"] {
39
+ display: inline-block;
40
+ width: 14px;
41
+ height: 14px;
42
+ *margin-right: .3em;
43
+ line-height: 14px;
44
+ vertical-align: text-top;
45
+ background-image: url("/images/glyphicons-halflings.png");
46
+ background-position: 14px 14px;
47
+ background-repeat: no-repeat;
48
+ margin-top: 1px;
49
+ }
50
+ /* White icons with optional class, or on hover/focus/active states of certain elements */
51
+ .icon-white,
52
+ .nav-pills > .active > a > [class^="icon-"],
53
+ .nav-pills > .active > a > [class*=" icon-"],
54
+ .nav-list > .active > a > [class^="icon-"],
55
+ .nav-list > .active > a > [class*=" icon-"],
56
+ .navbar-inverse .nav > .active > a > [class^="icon-"],
57
+ .navbar-inverse .nav > .active > a > [class*=" icon-"],
58
+ .dropdown-menu > li > a:hover > [class^="icon-"],
59
+ .dropdown-menu > li > a:focus > [class^="icon-"],
60
+ .dropdown-menu > li > a:hover > [class*=" icon-"],
61
+ .dropdown-menu > li > a:focus > [class*=" icon-"],
62
+ .dropdown-menu > .active > a > [class^="icon-"],
63
+ .dropdown-menu > .active > a > [class*=" icon-"],
64
+ .dropdown-submenu:hover > a > [class^="icon-"],
65
+ .dropdown-submenu:focus > a > [class^="icon-"],
66
+ .dropdown-submenu:hover > a > [class*=" icon-"],
67
+ .dropdown-submenu:focus > a > [class*=" icon-"] {
68
+ background-image: url("/images/glyphicons-halflings-white.png");
69
+ }
70
+ .icon-glass {
71
+ background-position: 0 0;
72
+ }
73
+ .icon-music {
74
+ background-position: -24px 0;
75
+ }
76
+ .icon-search {
77
+ background-position: -48px 0;
78
+ }
79
+ .icon-envelope {
80
+ background-position: -72px 0;
81
+ }
82
+ .icon-heart {
83
+ background-position: -96px 0;
84
+ }
85
+ .icon-star {
86
+ background-position: -120px 0;
87
+ }
88
+ .icon-star-empty {
89
+ background-position: -144px 0;
90
+ }
91
+ .icon-user {
92
+ background-position: -168px 0;
93
+ }
94
+ .icon-film {
95
+ background-position: -192px 0;
96
+ }
97
+ .icon-th-large {
98
+ background-position: -216px 0;
99
+ }
100
+ .icon-th {
101
+ background-position: -240px 0;
102
+ }
103
+ .icon-th-list {
104
+ background-position: -264px 0;
105
+ }
106
+ .icon-ok {
107
+ background-position: -288px 0;
108
+ }
109
+ .icon-remove {
110
+ background-position: -312px 0;
111
+ }
112
+ .icon-zoom-in {
113
+ background-position: -336px 0;
114
+ }
115
+ .icon-zoom-out {
116
+ background-position: -360px 0;
117
+ }
118
+ .icon-off {
119
+ background-position: -384px 0;
120
+ }
121
+ .icon-signal {
122
+ background-position: -408px 0;
123
+ }
124
+ .icon-cog {
125
+ background-position: -432px 0;
126
+ }
127
+ .icon-trash {
128
+ background-position: -456px 0;
129
+ }
130
+ .icon-home {
131
+ background-position: 0 -24px;
132
+ }
133
+ .icon-file {
134
+ background-position: -24px -24px;
135
+ }
136
+ .icon-time {
137
+ background-position: -48px -24px;
138
+ }
139
+ .icon-road {
140
+ background-position: -72px -24px;
141
+ }
142
+ .icon-download-alt {
143
+ background-position: -96px -24px;
144
+ }
145
+ .icon-download {
146
+ background-position: -120px -24px;
147
+ }
148
+ .icon-upload {
149
+ background-position: -144px -24px;
150
+ }
151
+ .icon-inbox {
152
+ background-position: -168px -24px;
153
+ }
154
+ .icon-play-circle {
155
+ background-position: -192px -24px;
156
+ }
157
+ .icon-repeat {
158
+ background-position: -216px -24px;
159
+ }
160
+ .icon-refresh {
161
+ background-position: -240px -24px;
162
+ }
163
+ .icon-list-alt {
164
+ background-position: -264px -24px;
165
+ }
166
+ .icon-lock {
167
+ background-position: -287px -24px;
168
+ }
169
+ .icon-flag {
170
+ background-position: -312px -24px;
171
+ }
172
+ .icon-headphones {
173
+ background-position: -336px -24px;
174
+ }
175
+ .icon-volume-off {
176
+ background-position: -360px -24px;
177
+ }
178
+ .icon-volume-down {
179
+ background-position: -384px -24px;
180
+ }
181
+ .icon-volume-up {
182
+ background-position: -408px -24px;
183
+ }
184
+ .icon-qrcode {
185
+ background-position: -432px -24px;
186
+ }
187
+ .icon-barcode {
188
+ background-position: -456px -24px;
189
+ }
190
+ .icon-tag {
191
+ background-position: 0 -48px;
192
+ }
193
+ .icon-tags {
194
+ background-position: -25px -48px;
195
+ }
196
+ .icon-book {
197
+ background-position: -48px -48px;
198
+ }
199
+ .icon-bookmark {
200
+ background-position: -72px -48px;
201
+ }
202
+ .icon-print {
203
+ background-position: -96px -48px;
204
+ }
205
+ .icon-camera {
206
+ background-position: -120px -48px;
207
+ }
208
+ .icon-font {
209
+ background-position: -144px -48px;
210
+ }
211
+ .icon-bold {
212
+ background-position: -167px -48px;
213
+ }
214
+ .icon-italic {
215
+ background-position: -192px -48px;
216
+ }
217
+ .icon-text-height {
218
+ background-position: -216px -48px;
219
+ }
220
+ .icon-text-width {
221
+ background-position: -240px -48px;
222
+ }
223
+ .icon-align-left {
224
+ background-position: -264px -48px;
225
+ }
226
+ .icon-align-center {
227
+ background-position: -288px -48px;
228
+ }
229
+ .icon-align-right {
230
+ background-position: -312px -48px;
231
+ }
232
+ .icon-align-justify {
233
+ background-position: -336px -48px;
234
+ }
235
+ .icon-list {
236
+ background-position: -360px -48px;
237
+ }
238
+ .icon-indent-left {
239
+ background-position: -384px -48px;
240
+ }
241
+ .icon-indent-right {
242
+ background-position: -408px -48px;
243
+ }
244
+ .icon-facetime-video {
245
+ background-position: -432px -48px;
246
+ }
247
+ .icon-picture {
248
+ background-position: -456px -48px;
249
+ }
250
+ .icon-pencil {
251
+ background-position: 0 -72px;
252
+ }
253
+ .icon-map-marker {
254
+ background-position: -24px -72px;
255
+ }
256
+ .icon-adjust {
257
+ background-position: -48px -72px;
258
+ }
259
+ .icon-tint {
260
+ background-position: -72px -72px;
261
+ }
262
+ .icon-edit {
263
+ background-position: -96px -72px;
264
+ }
265
+ .icon-share {
266
+ background-position: -120px -72px;
267
+ }
268
+ .icon-check {
269
+ background-position: -144px -72px;
270
+ }
271
+ .icon-move {
272
+ background-position: -168px -72px;
273
+ }
274
+ .icon-step-backward {
275
+ background-position: -192px -72px;
276
+ }
277
+ .icon-fast-backward {
278
+ background-position: -216px -72px;
279
+ }
280
+ .icon-backward {
281
+ background-position: -240px -72px;
282
+ }
283
+ .icon-play {
284
+ background-position: -264px -72px;
285
+ }
286
+ .icon-pause {
287
+ background-position: -288px -72px;
288
+ }
289
+ .icon-stop {
290
+ background-position: -312px -72px;
291
+ }
292
+ .icon-forward {
293
+ background-position: -336px -72px;
294
+ }
295
+ .icon-fast-forward {
296
+ background-position: -360px -72px;
297
+ }
298
+ .icon-step-forward {
299
+ background-position: -384px -72px;
300
+ }
301
+ .icon-eject {
302
+ background-position: -408px -72px;
303
+ }
304
+ .icon-chevron-left {
305
+ background-position: -432px -72px;
306
+ }
307
+ .icon-chevron-right {
308
+ background-position: -456px -72px;
309
+ }
310
+ .icon-plus-sign {
311
+ background-position: 0 -96px;
312
+ }
313
+ .icon-minus-sign {
314
+ background-position: -24px -96px;
315
+ }
316
+ .icon-remove-sign {
317
+ background-position: -48px -96px;
318
+ }
319
+ .icon-ok-sign {
320
+ background-position: -72px -96px;
321
+ }
322
+ .icon-question-sign {
323
+ background-position: -96px -96px;
324
+ }
325
+ .icon-info-sign {
326
+ background-position: -120px -96px;
327
+ }
328
+ .icon-screenshot {
329
+ background-position: -144px -96px;
330
+ }
331
+ .icon-remove-circle {
332
+ background-position: -168px -96px;
333
+ }
334
+ .icon-ok-circle {
335
+ background-position: -192px -96px;
336
+ }
337
+ .icon-ban-circle {
338
+ background-position: -216px -96px;
339
+ }
340
+ .icon-arrow-left {
341
+ background-position: -240px -96px;
342
+ }
343
+ .icon-arrow-right {
344
+ background-position: -264px -96px;
345
+ }
346
+ .icon-arrow-up {
347
+ background-position: -289px -96px;
348
+ }
349
+ .icon-arrow-down {
350
+ background-position: -312px -96px;
351
+ }
352
+ .icon-share-alt {
353
+ background-position: -336px -96px;
354
+ }
355
+ .icon-resize-full {
356
+ background-position: -360px -96px;
357
+ }
358
+ .icon-resize-small {
359
+ background-position: -384px -96px;
360
+ }
361
+ .icon-plus {
362
+ background-position: -408px -96px;
363
+ }
364
+ .icon-minus {
365
+ background-position: -433px -96px;
366
+ }
367
+ .icon-asterisk {
368
+ background-position: -456px -96px;
369
+ }
370
+ .icon-exclamation-sign {
371
+ background-position: 0 -120px;
372
+ }
373
+ .icon-gift {
374
+ background-position: -24px -120px;
375
+ }
376
+ .icon-leaf {
377
+ background-position: -48px -120px;
378
+ }
379
+ .icon-fire {
380
+ background-position: -72px -120px;
381
+ }
382
+ .icon-eye-open {
383
+ background-position: -96px -120px;
384
+ }
385
+ .icon-eye-close {
386
+ background-position: -120px -120px;
387
+ }
388
+ .icon-warning-sign {
389
+ background-position: -144px -120px;
390
+ }
391
+ .icon-plane {
392
+ background-position: -168px -120px;
393
+ }
394
+ .icon-calendar {
395
+ background-position: -192px -120px;
396
+ }
397
+ .icon-random {
398
+ background-position: -216px -120px;
399
+ width: 16px;
400
+ }
401
+ .icon-comment {
402
+ background-position: -240px -120px;
403
+ }
404
+ .icon-magnet {
405
+ background-position: -264px -120px;
406
+ }
407
+ .icon-chevron-up {
408
+ background-position: -288px -120px;
409
+ }
410
+ .icon-chevron-down {
411
+ background-position: -313px -119px;
412
+ }
413
+ .icon-retweet {
414
+ background-position: -336px -120px;
415
+ }
416
+ .icon-shopping-cart {
417
+ background-position: -360px -120px;
418
+ }
419
+ .icon-folder-close {
420
+ background-position: -384px -120px;
421
+ width: 16px;
422
+ }
423
+ .icon-folder-open {
424
+ background-position: -408px -120px;
425
+ width: 16px;
426
+ }
427
+ .icon-resize-vertical {
428
+ background-position: -432px -119px;
429
+ }
430
+ .icon-resize-horizontal {
431
+ background-position: -456px -118px;
432
+ }
433
+ .icon-hdd {
434
+ background-position: 0 -144px;
435
+ }
436
+ .icon-bullhorn {
437
+ background-position: -24px -144px;
438
+ }
439
+ .icon-bell {
440
+ background-position: -48px -144px;
441
+ }
442
+ .icon-certificate {
443
+ background-position: -72px -144px;
444
+ }
445
+ .icon-thumbs-up {
446
+ background-position: -96px -144px;
447
+ }
448
+ .icon-thumbs-down {
449
+ background-position: -120px -144px;
450
+ }
451
+ .icon-hand-right {
452
+ background-position: -144px -144px;
453
+ }
454
+ .icon-hand-left {
455
+ background-position: -168px -144px;
456
+ }
457
+ .icon-hand-up {
458
+ background-position: -192px -144px;
459
+ }
460
+ .icon-hand-down {
461
+ background-position: -216px -144px;
462
+ }
463
+ .icon-circle-arrow-right {
464
+ background-position: -240px -144px;
465
+ }
466
+ .icon-circle-arrow-left {
467
+ background-position: -264px -144px;
468
+ }
469
+ .icon-circle-arrow-up {
470
+ background-position: -288px -144px;
471
+ }
472
+ .icon-circle-arrow-down {
473
+ background-position: -312px -144px;
474
+ }
475
+ .icon-globe {
476
+ background-position: -336px -144px;
477
+ }
478
+ .icon-wrench {
479
+ background-position: -360px -144px;
480
+ }
481
+ .icon-tasks {
482
+ background-position: -384px -144px;
483
+ }
484
+ .icon-filter {
485
+ background-position: -408px -144px;
486
+ }
487
+ .icon-briefcase {
488
+ background-position: -432px -144px;
489
+ }
490
+ .icon-fullscreen {
491
+ background-position: -456px -144px;
492
+ }
@@ -0,0 +1,58 @@
1
+ /*
2
+ * Skeleton V1.2
3
+ * Copyright 2011, Dave Gamache
4
+ * www.getskeleton.com
5
+ * Free to use under the MIT license.
6
+ * http://www.opensource.org/licenses/mit-license.php
7
+ * 6/20/2012
8
+ */
9
+
10
+ /* Table of Content
11
+ ==================================================
12
+ #Site Styles
13
+ #Page Styles
14
+ #Media Queries
15
+ #Font-Face */
16
+
17
+ /* #Site Styles
18
+ ================================================== */
19
+
20
+ /* #Page Styles
21
+ ================================================== */
22
+
23
+ /* #Media Queries
24
+ ================================================== */
25
+
26
+ /* Smaller than standard 960 (devices and browsers) */
27
+ @media only screen and (max-width: 959px) {}
28
+
29
+ /* Tablet Portrait size to standard 960 (devices and browsers) */
30
+ @media only screen and (min-width: 768px) and (max-width: 959px) {}
31
+
32
+ /* All Mobile Sizes (devices and browser) */
33
+ @media only screen and (max-width: 767px) {}
34
+
35
+ /* Mobile Landscape Size to Tablet Portrait (devices and browsers) */
36
+ @media only screen and (min-width: 480px) and (max-width: 767px) {}
37
+
38
+ /* Mobile Portrait Size to Mobile Landscape Size (devices and browsers) */
39
+ @media only screen and (max-width: 479px) {}
40
+
41
+
42
+ /* #Font-Face
43
+ ================================================== */
44
+ /* This is the proper syntax for an @font-face file
45
+ Just create a "fonts" folder at the root,
46
+ copy your FontName into code below and remove
47
+ comment brackets */
48
+
49
+ /* @font-face {
50
+ font-family: 'FontName';
51
+ src: url('../fonts/FontName.eot');
52
+ src: url('../fonts/FontName.eot?iefix') format('eot'),
53
+ url('../fonts/FontName.woff') format('woff'),
54
+ url('../fonts/FontName.ttf') format('truetype'),
55
+ url('../fonts/FontName.svg#webfontZam02nTh') format('svg');
56
+ font-weight: normal;
57
+ font-style: normal; }
58
+ */