redis_monitor 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
data/.travis.yml ADDED
@@ -0,0 +1,8 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.2
4
+ - 1.9.3
5
+ - 2.0.0
6
+ - jruby-19mode
7
+
8
+ script: bundle exec rspec spec
data/README.md CHANGED
@@ -1,4 +1,5 @@
1
1
  # RedisMonitor
2
+ [![Build Status](https://travis-ci.org/javiyu/redis_monitor.png?branch=master)](https://travis-ci.org/javiyu/redis_monitor)
2
3
 
3
4
  ## Installation
4
5
 
@@ -16,10 +17,14 @@ Or install it yourself as:
16
17
 
17
18
  ## Usage
18
19
 
19
- $ redis_monitor --http-port http_port --host host --port port
20
+ $ redis_monitor --http-port http_port --host redis-host --port redis-port
20
21
 
21
22
  Then browse http://localhost:http_port
22
23
 
24
+ --editable or --not-editable can be use to indicate if the user should be able to edit the database content.
25
+ --credentials user:password if only users with credentials can access the application.
26
+
27
+
23
28
  For more information about the parameters:
24
29
 
25
30
  $ redis_monitor --help
@@ -32,6 +37,6 @@ For more information about the parameters:
32
37
  4. Push to the branch (`git push origin my-new-feature`)
33
38
  5. Create new Pull Request
34
39
 
35
- Please write meaningful test, ff you need to execute them:
40
+ Please write meaningful test, if you need to execute them:
36
41
 
37
42
  $ rspec spec
@@ -26,6 +26,10 @@ module RedisMonitor
26
26
  haml 'errors/redis_not_available'.to_sym, layout: main_layout,
27
27
  locals: {host: Backend.host, port: Backend.port}
28
28
  end
29
+
30
+ def http_referer
31
+ context.env['HTTP_REFERER']
32
+ end
29
33
  end
30
34
  end
31
35
  end
@@ -11,9 +11,20 @@ module RedisMonitor
11
11
  end
12
12
 
13
13
  def search(params = {})
14
- results = Backend.search(params[:key])
15
- haml 'content/search'.to_sym, layout: main_layout, locals: {results: results, section: SECTION}
14
+ results = Backend.search(params[:key]).paginate(:page => params[:page], :per_page => 20)
15
+ haml 'content/search'.to_sym, layout: main_layout, locals: {results: results, section: SECTION, object: self}
16
16
  end
17
+
18
+ def delete(params = {})
19
+ Backend.del(params[:key])
20
+
21
+ if http_referer
22
+ context.redirect http_referer
23
+ else
24
+ redirect '/content/search'
25
+ end
26
+ end
27
+
17
28
  end
18
29
  end
19
30
  end
@@ -4,6 +4,10 @@ module RedisMonitor
4
4
  def haml(*arguments)
5
5
  context.haml(*arguments)
6
6
  end
7
+
8
+ def redirect(*arguments)
9
+ context.redirect(*arguments)
10
+ end
7
11
  end
8
12
  end
9
13
  end
@@ -25,6 +25,9 @@ module RedisMonitor
25
25
  end
26
26
  end
27
27
 
28
+ def authorized_for?(action)
29
+ Authorization.authorized_for?(action)
30
+ end
28
31
  end
29
32
  end
30
33
  end
@@ -0,0 +1,5 @@
1
+ module PaginationHelper
2
+ def bootstrap_paginate(results)
3
+ will_paginate results, renderer: BootstrapPagination::Sinatra
4
+ end
5
+ end
@@ -7,7 +7,7 @@ module RedisMonitor
7
7
  class Backend
8
8
  extend SingleForwardable
9
9
 
10
- def_delegators :redis, :get, :set, :del, :info, :keys, :dbsize, :monitor
10
+ def_delegators :redis, :get, :set, :info, :keys, :dbsize, :monitor
11
11
 
12
12
  def self.config(arguments)
13
13
  @@host = arguments[:redis_host]
@@ -33,5 +33,9 @@ module RedisMonitor
33
33
  def self.search(key)
34
34
  keys(key).map{|found| {key: found, value: get(found)} }
35
35
  end
36
+
37
+ def self.del(key)
38
+ redis.del(key) if Authorization.authorized_for?(:remove_content)
39
+ end
36
40
  end
37
41
  end
@@ -2,3 +2,4 @@ require 'controllers/base_controller'
2
2
  require 'controllers/info_controller'
3
3
  require 'controllers/content_controller'
4
4
  require 'controllers/performance_controller'
5
+ require 'will_paginate/array'
@@ -1,5 +1,6 @@
1
1
  require 'helpers/base_helper'
2
2
  require 'helpers/layouts_helper'
3
+ require 'helpers/pagination_helper'
3
4
 
4
5
  module RedisMonitor
5
6
  module Helpers
@@ -11,6 +11,7 @@ module RedisMonitor
11
11
 
12
12
  server.get('/content'){ ContentController.new(context: self).execute(:index, params) }
13
13
  server.get('/content/search'){ ContentController.new(context: self).execute(:search, params) }
14
+ server.post('/content/delete'){ ContentController.new(context: self).execute(:delete, params) }
14
15
 
15
16
  server.get('/performance'){ redirect '/performance/warning' }
16
17
  server.get('/performance/warning'){ PerformanceController.new(context: self).execute(:warning, params) }
@@ -0,0 +1,29 @@
1
+ module RedisMonitor
2
+ module Authentication
3
+
4
+ def self.config(server, credentials)
5
+ @@credentials = credentials
6
+ @@server = server
7
+ inject_authentication
8
+ end
9
+
10
+ def self.inject_authentication
11
+ if authentication_required?
12
+ @@server.class_eval do
13
+ use Rack::Auth::Basic, 'Restricted Area' do |username, password|
14
+ username == Authentication.credentials[:user] and password == Authentication.credentials[:password]
15
+ end
16
+ end
17
+ end
18
+ end
19
+
20
+
21
+ def self.authentication_required?
22
+ !!credentials
23
+ end
24
+
25
+ def self.credentials
26
+ @@credentials
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,18 @@
1
+ module RedisMonitor
2
+ class Authorization
3
+ DEFAULTS = {remove_content: true}
4
+
5
+ def self.config(opts = {})
6
+ opts = {} unless opts
7
+ @@permissions = DEFAULTS.merge(opts)
8
+ end
9
+
10
+ def self.permissions
11
+ @@permissions
12
+ end
13
+
14
+ def self.authorized_for?(action)
15
+ !!permissions[action]
16
+ end
17
+ end
18
+ end
@@ -1,3 +1,3 @@
1
1
  module RedisMonitor
2
- VERSION = '0.0.5'
2
+ VERSION = '0.0.6'
3
3
  end
data/lib/redis_monitor.rb CHANGED
@@ -1,11 +1,16 @@
1
1
  require 'server/command_line_parser'
2
2
  require 'server/server'
3
+ require 'modules/security/authorization'
4
+ require 'modules/security/authentication'
3
5
 
4
6
  module RedisMonitor
5
7
  def self.run
6
8
  arguments = CommandLineParser.parse(ARGV.dup)
7
9
  Backend.config(arguments)
8
10
  Server.config(arguments)
11
+ Authorization.config(arguments[:permissions])
12
+ Authentication.config(Server, arguments[:credentials])
13
+
9
14
  Server.run!
10
15
  end
11
16
  end
@@ -3,7 +3,7 @@ require 'optparse'
3
3
  module RedisMonitor
4
4
  class CommandLineParser
5
5
  DEFAULTS = {
6
- http_server: 'thin',
6
+ http_server: 'webrick',
7
7
  http_port: 6369,
8
8
  redis_host: 'localhost',
9
9
  redis_port: 6379,
@@ -19,12 +19,24 @@ module RedisMonitor
19
19
  op.on('--http-port port', 'specify http port (default is 6369)') do |val|
20
20
  arguments[:http_port] = val.to_i
21
21
  end
22
- op.on('--host host', 'specify redis host (default is localhost)') do |val|
22
+ op.on('--host redis-host', 'specify redis host (default is localhost)') do |val|
23
23
  arguments[:redis_host] = val
24
24
  end
25
- op.on('--port port', 'specify redis port (default is 6379)') do |val|
25
+ op.on('--port redis-port', 'specify redis port (default is 6379)') do |val|
26
26
  arguments[:redis_port] = val.to_i
27
27
  end
28
+ op.on('--editable', 'the content will be editable (default is editable)') do |val|
29
+ arguments[:permissions] ||= {}
30
+ arguments[:permissions][:remove_content] = true
31
+ end
32
+ op.on('--not-editable', 'the content will be not editable (default is editable)') do |val|
33
+ arguments[:permissions] ||= {}
34
+ arguments[:permissions][:remove_content] = false
35
+ end
36
+ op.on('--credentials credentials', 'access only with credentials (format user:password)') do |val|
37
+ user, password = val.to_s.split(':')
38
+ arguments[:credentials] = {user: user, password: password}
39
+ end
28
40
  end
29
41
  parser.parse!(argv)
30
42
 
data/lib/server/server.rb CHANGED
@@ -1,11 +1,16 @@
1
1
  require 'sinatra'
2
2
  require 'haml'
3
3
  require 'modules/router'
4
+ require 'modules/security/authorization'
5
+ require 'will_paginate/view_helpers/sinatra'
6
+ require 'will_paginate-bootstrap'
4
7
 
5
8
  module RedisMonitor
6
9
  class Server < Sinatra::Base
7
10
  include RedisMonitor::Router
8
11
  include RedisMonitor::Helpers::LayoutsHelper
12
+ include WillPaginate::Sinatra::Helpers
13
+ include PaginationHelper
9
14
 
10
15
  set :public_folder, File.dirname(__FILE__) + '/../static'
11
16
  set :views, File.dirname(__FILE__) + '/../views'
@@ -7,6 +7,9 @@
7
7
  Key
8
8
  %th
9
9
  Value
10
+ - if authorized_for?(:remove_content)
11
+ %th
12
+ Actions
10
13
 
11
14
  %tbody
12
15
  - results.each do |result|
@@ -15,3 +18,11 @@
15
18
  = result[:key]
16
19
  %td
17
20
  = result[:value]
21
+ - if authorized_for?(:remove_content)
22
+ %td
23
+ %form{action: '/content/delete', method: 'post'}
24
+ %input{type: 'hidden', name: 'key', value: result[:key]}
25
+ %button.btn.btn-danger
26
+ Delete
27
+
28
+ = bootstrap_paginate results
@@ -19,9 +19,11 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = %w(lib)
20
20
 
21
21
  spec.add_runtime_dependency 'sinatra', '~> 1.4'
22
- spec.add_runtime_dependency 'thin'
22
+ spec.add_runtime_dependency 'webrick'
23
23
  spec.add_runtime_dependency 'redis', '~> 3.0'
24
24
  spec.add_runtime_dependency 'haml', '~> 4.0'
25
+ spec.add_runtime_dependency 'will_paginate', '~> 3.0'
26
+ spec.add_runtime_dependency 'will_paginate-bootstrap'
25
27
 
26
28
  spec.add_development_dependency 'bundler', '~> 1.3'
27
29
  spec.add_development_dependency 'rake'
@@ -1,16 +1,14 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe BaseController do
4
- before :each do
5
- @context = double(:context)
6
- @controller = BaseController.new(context: @context)
7
- end
4
+ let(:context){ double() }
5
+ let(:controller){ BaseController.new(context: context) }
8
6
 
9
7
  describe 'execute method' do
10
8
  it 'should not raise error if the action executed raised RedisNotAvailable' do
11
- @controller.stub(:action) { raise RedisNotAvailable }
12
- @controller.should_receive(:redis_not_available)
13
- expect{ @controller.execute(:action) }.not_to raise_error
9
+ controller.stub(:action) { raise RedisNotAvailable }
10
+ controller.should_receive(:redis_not_available)
11
+ expect{ controller.execute(:action) }.not_to raise_error
14
12
  end
15
13
  end
16
14
 
@@ -18,8 +16,8 @@ describe BaseController do
18
16
  it 'should render redis not available error page' do
19
17
  Backend.stub(:host)
20
18
  Backend.stub(:port)
21
- @context.should_receive(:haml).with('errors/redis_not_available'.to_sym, anything)
22
- @controller.redis_not_available
19
+ context.should_receive(:haml).with('errors/redis_not_available'.to_sym, anything)
20
+ controller.redis_not_available
23
21
  end
24
22
  end
25
23
  end
@@ -1,23 +1,40 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe ContentController do
4
- before :each do
5
- @context = double(:context)
6
- @controller = ContentController.new(context: @context)
7
- end
4
+ let(:context){ double() }
5
+ let(:controller){ ContentController.new(context: context) }
6
+ let(:search_results){ double(paginate: []) }
8
7
 
9
8
  describe 'index action' do
10
9
  it 'should render index template' do
11
- @context.should_receive(:haml).with('content/index'.to_sym, anything)
12
- @controller.index
10
+ context.should_receive(:haml).with('content/index'.to_sym, anything)
11
+ controller.index
13
12
  end
14
13
  end
15
14
 
16
15
  describe 'search action' do
17
16
  it 'should render search template' do
18
- Backend.stub(:search){ {} }
19
- @context.should_receive(:haml).with('content/search'.to_sym, anything)
20
- @controller.search
17
+ Backend.stub(:search){ search_results }
18
+ context.should_receive(:haml).with('content/search'.to_sym, anything)
19
+ controller.search
20
+ end
21
+ end
22
+
23
+ describe 'delete action' do
24
+ before :each do
25
+ Backend.stub(:del)
26
+ end
27
+
28
+ it 'should redirect to the referer if exists' do
29
+ controller.stub(:http_referer){ '/referer' }
30
+ context.should_receive(:redirect).with('/referer')
31
+ controller.delete
32
+ end
33
+
34
+ it 'should redirect to search page if referer does not exists' do
35
+ controller.stub(:http_referer){ nil }
36
+ context.should_receive(:redirect).with('/content/search')
37
+ controller.delete
21
38
  end
22
39
  end
23
40
  end
@@ -1,10 +1,8 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe InfoController do
4
- before :each do
5
- @context = double(:context)
6
- @controller = InfoController.new(context: @context)
7
- end
4
+ let(:context){ double() }
5
+ let(:controller){ InfoController.new(context: context) }
8
6
 
9
7
  describe 'index action' do
10
8
  before :each do
@@ -12,13 +10,13 @@ describe InfoController do
12
10
  end
13
11
 
14
12
  it 'should not fail' do
15
- @context.stub(:haml)
16
- expect{ @controller.index }.not_to raise_error
13
+ context.stub(:haml)
14
+ expect{ controller.index }.not_to raise_error
17
15
  end
18
16
 
19
17
  it 'should render info template' do
20
- @context.should_receive(:haml).with('info/info'.to_sym, anything)
21
- @controller.index
18
+ context.should_receive(:haml).with('info/info'.to_sym, anything)
19
+ controller.index
22
20
  end
23
21
  end
24
22
  end
@@ -1,23 +1,21 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe PerformanceController do
4
- before :each do
5
- @context = double(:context)
6
- @controller = PerformanceController.new(context: @context)
7
- end
4
+ let(:context){ double() }
5
+ let(:controller){ PerformanceController.new(context: context) }
8
6
 
9
7
  describe 'warning action' do
10
8
  it 'should render warning template' do
11
- @context.should_receive(:haml).with('performance/warning'.to_sym, anything)
12
- @controller.warning
9
+ context.should_receive(:haml).with('performance/warning'.to_sym, anything)
10
+ controller.warning
13
11
  end
14
12
  end
15
13
 
16
14
  describe 'check action' do
17
15
  it 'should render check template' do
18
16
  Backend.stub(:performance_stats){ {} }
19
- @context.should_receive(:haml).with('performance/check'.to_sym, anything)
20
- @controller.check
17
+ context.should_receive(:haml).with('performance/check'.to_sym, anything)
18
+ controller.check
21
19
  end
22
20
  end
23
21
  end
@@ -1,18 +1,12 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Backend do
4
+ let(:redis){ double(del: '') }
5
+
4
6
  before :each do
5
7
  Backend.stub(:host)
6
8
  Backend.stub(:port)
7
- Redis.stub(:new){ double(:redis) }
8
- end
9
-
10
- describe 'redis' do
11
- it 'create only one connection' do
12
- Redis.should_receive(:new).once
13
- Backend.redis
14
- Backend.redis
15
- end
9
+ Backend.stub(:redis){ redis }
16
10
  end
17
11
 
18
12
  describe 'performance_stats' do
@@ -43,4 +37,18 @@ describe Backend do
43
37
  Backend.search('*')[0][:value].should_not be_nil
44
38
  end
45
39
  end
40
+
41
+ describe 'del' do
42
+ it 'should not delete content if not allowed' do
43
+ Authorization.stub(:authorized_for?).with(:remove_content){ false }
44
+ redis.should_receive(:del).never
45
+ Backend.del('key')
46
+ end
47
+
48
+ it 'should remove content if allowed' do
49
+ Authorization.stub(:authorized_for?).with(:remove_content){ true }
50
+ redis.should_receive(:del)
51
+ Backend.del('key')
52
+ end
53
+ end
46
54
  end
@@ -0,0 +1,48 @@
1
+ require 'spec_helper'
2
+
3
+ describe Authentication do
4
+ let(:server){ double(class_eval: nil, use: nil) }
5
+ let(:credentials){ {user: 'user', password: 'password'} }
6
+
7
+ describe 'config' do
8
+ it 'should inject authentication in server class' do
9
+ Authentication.should_receive(:inject_authentication)
10
+ Authentication.config(server, credentials)
11
+ end
12
+ end
13
+
14
+ describe 'inject_authentication' do
15
+ before :each do
16
+ Authentication.config(server, credentials)
17
+ server.stub(:class_eval){|&block| block.call }
18
+ end
19
+
20
+ it 'should include authentication if required' do
21
+ Authentication.stub(:authentication_required?){ true }
22
+ Authentication.should_receive(:use).with(Rack::Auth::Basic, anything)
23
+ Authentication.inject_authentication
24
+ end
25
+
26
+ it 'should not include authentication if not required' do
27
+ Authentication.stub(:authentication_required?){ false }
28
+ Authentication.should_not_receive(:use)
29
+ Authentication.inject_authentication
30
+ end
31
+ end
32
+
33
+ describe 'authentication_required??' do
34
+ before :each do
35
+ Authentication.stub(:inject_authentication)
36
+ end
37
+
38
+ it 'should return true if it has some credentials' do
39
+ Authentication.config(server, credentials)
40
+ Authentication.authentication_required?.should eq(true)
41
+ end
42
+
43
+ it 'should return false if no credentials were provided' do
44
+ Authentication.config(server, nil)
45
+ Authentication.authentication_required?.should eq(false)
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,17 @@
1
+ require 'spec_helper'
2
+
3
+ describe Authorization do
4
+ describe 'authorized_for?' do
5
+ it 'should return true if the permission exists and its value is true' do
6
+ Authorization.stub(:permissions){ {action: true} }
7
+ Authorization.authorized_for?(:action).should == true
8
+ end
9
+
10
+ it 'should return false if the permission does not exists or its value is false' do
11
+ Authorization.stub(:permissions){ {action: false} }
12
+ Authorization.authorized_for?(:action).should == false
13
+ Authorization.authorized_for?(:action2).should == false
14
+ end
15
+
16
+ end
17
+ end
@@ -22,5 +22,21 @@ describe CommandLineParser do
22
22
  CommandLineParser.parse(args)[:redis_port].should eq(4444)
23
23
  end
24
24
 
25
+ it 'should read editable option' do
26
+ args = ['--editable']
27
+ CommandLineParser.parse(args)[:permissions][:remove_content].should eq(true)
28
+ end
29
+
30
+ it 'should read not-editable option' do
31
+ args = ['--not-editable']
32
+ CommandLineParser.parse(args)[:permissions][:remove_content].should eq(false)
33
+ end
34
+
35
+ it 'should read credentials options' do
36
+ args = ['--credentials', 'user:password']
37
+ credentials = CommandLineParser.parse(args)[:credentials]
38
+ credentials[:user].should eq('user')
39
+ credentials[:password].should eq('password')
40
+ end
25
41
  end
26
42
  end
data/spec/spec_helper.rb CHANGED
@@ -10,11 +10,14 @@ RSpec.configure do |config|
10
10
  config.order = 'random'
11
11
  end
12
12
 
13
+ require 'sinatra'
13
14
  require 'modules/helpers'
14
15
  require 'modules/controllers'
15
16
  require 'modules/backend'
16
17
  require 'server/command_line_parser'
18
+ require 'modules/security/authorization'
19
+ require 'modules/security/authentication'
17
20
 
18
21
  include RedisMonitor
19
22
  include RedisMonitor::Controllers
20
- include RedisMonitor::Errors
23
+ include RedisMonitor::Errors
metadata CHANGED
@@ -1,18 +1,20 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redis_monitor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Javier Jimenez
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2013-12-28 00:00:00.000000000 Z
12
+ date: 2014-01-04 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: sinatra
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
19
  - - ~>
18
20
  - !ruby/object:Gem::Version
@@ -20,27 +22,31 @@ dependencies:
20
22
  type: :runtime
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
23
26
  requirements:
24
27
  - - ~>
25
28
  - !ruby/object:Gem::Version
26
29
  version: '1.4'
27
30
  - !ruby/object:Gem::Dependency
28
- name: thin
31
+ name: webrick
29
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
30
34
  requirements:
31
- - - '>='
35
+ - - ! '>='
32
36
  - !ruby/object:Gem::Version
33
37
  version: '0'
34
38
  type: :runtime
35
39
  prerelease: false
36
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
37
42
  requirements:
38
- - - '>='
43
+ - - ! '>='
39
44
  - !ruby/object:Gem::Version
40
45
  version: '0'
41
46
  - !ruby/object:Gem::Dependency
42
47
  name: redis
43
48
  requirement: !ruby/object:Gem::Requirement
49
+ none: false
44
50
  requirements:
45
51
  - - ~>
46
52
  - !ruby/object:Gem::Version
@@ -48,6 +54,7 @@ dependencies:
48
54
  type: :runtime
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
51
58
  requirements:
52
59
  - - ~>
53
60
  - !ruby/object:Gem::Version
@@ -55,6 +62,7 @@ dependencies:
55
62
  - !ruby/object:Gem::Dependency
56
63
  name: haml
57
64
  requirement: !ruby/object:Gem::Requirement
65
+ none: false
58
66
  requirements:
59
67
  - - ~>
60
68
  - !ruby/object:Gem::Version
@@ -62,13 +70,47 @@ dependencies:
62
70
  type: :runtime
63
71
  prerelease: false
64
72
  version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
65
74
  requirements:
66
75
  - - ~>
67
76
  - !ruby/object:Gem::Version
68
77
  version: '4.0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: will_paginate
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ~>
84
+ - !ruby/object:Gem::Version
85
+ version: '3.0'
86
+ type: :runtime
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: '3.0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: will_paginate-bootstrap
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :runtime
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
69
110
  - !ruby/object:Gem::Dependency
70
111
  name: bundler
71
112
  requirement: !ruby/object:Gem::Requirement
113
+ none: false
72
114
  requirements:
73
115
  - - ~>
74
116
  - !ruby/object:Gem::Version
@@ -76,6 +118,7 @@ dependencies:
76
118
  type: :development
77
119
  prerelease: false
78
120
  version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
79
122
  requirements:
80
123
  - - ~>
81
124
  - !ruby/object:Gem::Version
@@ -83,20 +126,23 @@ dependencies:
83
126
  - !ruby/object:Gem::Dependency
84
127
  name: rake
85
128
  requirement: !ruby/object:Gem::Requirement
129
+ none: false
86
130
  requirements:
87
- - - '>='
131
+ - - ! '>='
88
132
  - !ruby/object:Gem::Version
89
133
  version: '0'
90
134
  type: :development
91
135
  prerelease: false
92
136
  version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
93
138
  requirements:
94
- - - '>='
139
+ - - ! '>='
95
140
  - !ruby/object:Gem::Version
96
141
  version: '0'
97
142
  - !ruby/object:Gem::Dependency
98
143
  name: rspec
99
144
  requirement: !ruby/object:Gem::Requirement
145
+ none: false
100
146
  requirements:
101
147
  - - ~>
102
148
  - !ruby/object:Gem::Version
@@ -104,6 +150,7 @@ dependencies:
104
150
  type: :development
105
151
  prerelease: false
106
152
  version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
107
154
  requirements:
108
155
  - - ~>
109
156
  - !ruby/object:Gem::Version
@@ -118,6 +165,7 @@ extra_rdoc_files: []
118
165
  files:
119
166
  - .gitignore
120
167
  - .rspec
168
+ - .travis.yml
121
169
  - Gemfile
122
170
  - LICENSE.txt
123
171
  - README.md
@@ -131,11 +179,14 @@ files:
131
179
  - lib/errors/redis_not_available.rb
132
180
  - lib/helpers/base_helper.rb
133
181
  - lib/helpers/layouts_helper.rb
182
+ - lib/helpers/pagination_helper.rb
134
183
  - lib/modules/backend.rb
135
184
  - lib/modules/controllers.rb
136
185
  - lib/modules/helpers.rb
137
186
  - lib/modules/performance_stats.rb
138
187
  - lib/modules/router.rb
188
+ - lib/modules/security/authentication.rb
189
+ - lib/modules/security/authorization.rb
139
190
  - lib/modules/version.rb
140
191
  - lib/redis_monitor.rb
141
192
  - lib/server/command_line_parser.rb
@@ -159,31 +210,34 @@ files:
159
210
  - spec/controllers/performance_controller_spec.rb
160
211
  - spec/modules/backend_spec.rb
161
212
  - spec/modules/performance_stats_spec.rb
213
+ - spec/modules/security/authentication_spec.rb
214
+ - spec/modules/security/authorization_spec.rb
162
215
  - spec/server/command_line_parser_spec.rb
163
216
  - spec/spec_helper.rb
164
217
  homepage: https://github.com/javiyu/redis_monitor
165
218
  licenses:
166
219
  - MIT
167
- metadata: {}
168
220
  post_install_message:
169
221
  rdoc_options: []
170
222
  require_paths:
171
223
  - lib
172
224
  required_ruby_version: !ruby/object:Gem::Requirement
225
+ none: false
173
226
  requirements:
174
- - - '>='
227
+ - - ! '>='
175
228
  - !ruby/object:Gem::Version
176
229
  version: '0'
177
230
  required_rubygems_version: !ruby/object:Gem::Requirement
231
+ none: false
178
232
  requirements:
179
- - - '>='
233
+ - - ! '>='
180
234
  - !ruby/object:Gem::Version
181
235
  version: '0'
182
236
  requirements: []
183
237
  rubyforge_project:
184
- rubygems_version: 2.1.11
238
+ rubygems_version: 1.8.23
185
239
  signing_key:
186
- specification_version: 4
240
+ specification_version: 3
187
241
  summary: Get general information of a running redis instance
188
242
  test_files:
189
243
  - spec/controllers/base_controller_spec.rb
@@ -192,5 +246,7 @@ test_files:
192
246
  - spec/controllers/performance_controller_spec.rb
193
247
  - spec/modules/backend_spec.rb
194
248
  - spec/modules/performance_stats_spec.rb
249
+ - spec/modules/security/authentication_spec.rb
250
+ - spec/modules/security/authorization_spec.rb
195
251
  - spec/server/command_line_parser_spec.rb
196
252
  - spec/spec_helper.rb
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 79092e09550d8bcba8120074790e62443fd811ab
4
- data.tar.gz: add45fdc52392f1f031555b680509f587ad7224b
5
- SHA512:
6
- metadata.gz: 2e1da2f8ffa882d255f841ee2420c92ca5dd2e0064a4d503be353d95069aa972683767d668fcde2891dce2dac3da570d9b9f280a5896ebe774275b06f049eb74
7
- data.tar.gz: eaf4029ffd01a860eca9f4006a484e3f2c631a9afceac765ab8392d47fd9e83e9452e102c61378a0c3a077e49488d36246c820f12d183953503b6fcb3435fbd9