redis_monitor 0.2 → 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.
Files changed (33) hide show
  1. checksums.yaml +4 -4
  2. data/lib/engine/app/controllers/application_controller.rb +3 -0
  3. data/lib/engine/app/controllers/content_controller.rb +12 -6
  4. data/lib/engine/app/controllers/info_controller.rb +1 -1
  5. data/lib/engine/app/controllers/performance_controller.rb +1 -1
  6. data/lib/engine/app/helpers/database_helper.rb +5 -9
  7. data/lib/engine/app/lib/backend.rb +10 -36
  8. data/lib/engine/app/lib/backend_connection.rb +11 -0
  9. data/lib/engine/app/lib/commands/change_database.rb +6 -0
  10. data/lib/engine/app/lib/commands/database_list.rb +5 -0
  11. data/lib/engine/app/lib/{performance_stats.rb → commands/performance_stats.rb} +1 -1
  12. data/lib/engine/app/lib/commands/remove_key.rb +7 -0
  13. data/lib/engine/app/lib/commands/search_key.rb +5 -0
  14. data/lib/engine/app/lib/security/authentication.rb +3 -6
  15. data/lib/engine/app/lib/security/authorization.rb +7 -5
  16. data/lib/engine/app/views/content/_search_form.haml +1 -1
  17. data/lib/engine/app/views/content/search.haml +1 -1
  18. data/lib/engine/config/environments/production.rb +1 -1
  19. data/lib/engine/config/initializers/configuration.rb +6 -3
  20. data/lib/engine/spec/controllers/content_controller_spec.rb +7 -3
  21. data/lib/engine/spec/controllers/info_controller_spec.rb +4 -1
  22. data/lib/engine/spec/controllers/performance_controller_spec.rb +1 -1
  23. data/lib/engine/spec/lib/backend_spec.rb +4 -56
  24. data/lib/engine/spec/lib/commands/change_database_spec.rb +24 -0
  25. data/lib/engine/spec/lib/commands/database_list_spec.rb +15 -0
  26. data/lib/engine/spec/lib/{performance_stats_spec.rb → commands/performance_stats_spec.rb} +5 -5
  27. data/lib/engine/spec/lib/commands/remove_key_spec.rb +21 -0
  28. data/lib/engine/spec/lib/commands/search_key_spec.rb +25 -0
  29. data/lib/engine/spec/lib/security/authentication_spec.rb +3 -3
  30. data/lib/engine/spec/spec_helper.rb +7 -3
  31. data/lib/redis_monitor.rb +1 -2
  32. data/lib/version.rb +1 -1
  33. metadata +13 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0ff1b1686ad016eb88f4b708cac2efb620c32add
4
- data.tar.gz: 7724f8bb31f5823191ebdd6ea088c92128f0ff58
3
+ metadata.gz: ff13da4a5a6d6d3b4965964e669d6790b8aa88eb
4
+ data.tar.gz: db3f048bdb23af208771e50116923c962b4b520f
5
5
  SHA512:
6
- metadata.gz: a75d85f681f8f0ef8c7c25b16c63a96bd670fb9d45be4273299ca288bf8508b918b7b27bddbb7ddcc0fa4095143f1a3f88543ea5365725ef7636d8140c5db651
7
- data.tar.gz: 16f7a6580468f0daff350e9b24cb9afd120d8879e9d637353f4dcaf4d9550c94bd10cddb17a347867fa938387f7adfd3d5bf2e6de9454b87434aaa5e5651a3f4
6
+ metadata.gz: 0008c8e625d7c73d2fe4ad6f554f4ea648557c6d308b4538e870000df576ad8cf052cd78d4931d1f2f62983622356851a2d47fd3444b79e964366250127942cf
7
+ data.tar.gz: b63cd187913745965bc002e4928f9b72df5a6490ed7febe98615290ed9646ed6bd13e57c76e11bdb7bb73de50fe6f593e51fbad437b2f9503cc296e36e3b81d3
@@ -7,4 +7,7 @@ class ApplicationController < ActionController::Base
7
7
  http_basic_authenticate_with name: Authentication.credentials[:user], password: Authentication.credentials[:password]
8
8
  end
9
9
 
10
+ def backend
11
+ @backend ||= BackendConnection.build(current_database: session[:database])
12
+ end
10
13
  end
@@ -1,21 +1,24 @@
1
1
  class ContentController < ApplicationController
2
2
  skip_before_action :verify_authenticity_token
3
3
  before_action :load_section
4
+ before_action :load_database_list, only: [:index, :search]
5
+ before_action :load_current_database, only: [:index, :search]
4
6
 
5
7
  def index
6
8
  end
7
9
 
8
10
  def search
9
- @results = Backend.search(params[:key]).paginate(:page => params[:page], :per_page => 20)
11
+ results = SearchKey.new(backend, params[:key]).result
12
+ @results = results.paginate(:page => params[:page], :per_page => 20)
10
13
  end
11
14
 
12
15
  def delete
13
- Backend.remove(params[:key])
16
+ RemoveKey.new(backend, params[:key]).execute
14
17
  redirect_to :back
15
18
  end
16
19
 
17
20
  def change_database
18
- set_database(params[:database])
21
+ ChangeDatabase.new(backend, session, params[:database]).execute
19
22
  redirect_to :back
20
23
  end
21
24
 
@@ -24,9 +27,12 @@ class ContentController < ApplicationController
24
27
  @section = 'content'
25
28
  end
26
29
 
27
- def set_database(database)
28
- session[:database] = database
29
- Backend.change_database(database)
30
+ def load_database_list
31
+ @databases = DatabaseList.new(backend).result
32
+ end
33
+
34
+ def load_current_database
35
+ @current_database = backend.current_database
30
36
  end
31
37
  end
32
38
 
@@ -1,6 +1,6 @@
1
1
  class InfoController < ApplicationController
2
2
  def index
3
3
  @section = 'info'
4
- @info = Backend.info
4
+ @info = backend.info
5
5
  end
6
6
  end
@@ -3,6 +3,6 @@ class PerformanceController < ApplicationController
3
3
  end
4
4
 
5
5
  def check
6
- @stats = Backend.performance_stats
6
+ @stats = PerformanceStats.new(backend).result
7
7
  end
8
8
  end
@@ -1,21 +1,17 @@
1
1
  module DatabaseHelper
2
- def current_database
3
- session[:database].to_i
4
- end
5
-
6
- def databases
7
- Backend.databases.each do |database|
2
+ def databases(dbs)
3
+ dbs.each do |database|
8
4
  database_option(database)
9
5
  end
10
6
  end
11
7
 
12
8
  def database_option(database)
13
- haml_tag :option, {selected: (database.to_i == current_database.to_i)} do
9
+ haml_tag :option, {selected: (database.to_i == @current_database.to_i)} do
14
10
  haml_concat database
15
11
  end
16
12
  end
17
13
 
18
- def choose_database_select
14
+ def choose_database_select(dbs)
19
15
  capture_haml do
20
16
  haml_tag :form, action: '/content/change_database', method: 'post' do
21
17
  haml_tag :div, class: 'form-group' do
@@ -24,7 +20,7 @@ module DatabaseHelper
24
20
  end
25
21
 
26
22
  haml_tag :select, id: 'database_select', name: 'database', class: 'selectpicker form-control', data: {style: 'btn-info'} do
27
- databases
23
+ databases(dbs)
28
24
  end
29
25
  end
30
26
  end
@@ -1,45 +1,19 @@
1
1
  require 'redis'
2
- require 'forwardable'
3
2
 
4
3
  class Backend
5
- extend SingleForwardable
4
+ attr_accessor :host, :port, :current_database
6
5
 
7
- def_delegators :redis, :get, :set, :info, :keys, :dbsize, :select
6
+ delegate :get, :set, :info, :keys, :select, :del, :to => :redis
8
7
 
9
- def self.config(arguments)
10
- @@host = arguments[:redis_host]
11
- @@port = arguments[:redis_port]
8
+ def initialize(opts = {})
9
+ @host = opts[:host]
10
+ @port = opts[:port]
11
+ @current_database = opts[:current_database]
12
12
  end
13
13
 
14
- def self.host
15
- @@host
16
- end
17
-
18
- def self.port
19
- @@port
20
- end
21
-
22
- def self.redis
23
- @@redis ||= Redis.new(:host => host, :port => port)
24
- end
25
-
26
- def self.performance_stats
27
- PerformanceStats.new(self).results
28
- end
29
-
30
- def self.search(key)
31
- keys(key).map{|found| {key: found, value: get(found)} }
32
- end
33
-
34
- def self.change_database(*args)
35
- select(*args)
36
- end
37
-
38
- def self.remove(key)
39
- redis.del(key) if Authorization.authorized_for?(:remove_content)
40
- end
41
-
42
- def self.databases
43
- info.keys.map{|d| d.match(/db(\d+)/);$1}.compact
14
+ def redis
15
+ @redis ||= Redis.new(host: host, port: port)
16
+ @redis.select(current_database)
17
+ @redis
44
18
  end
45
19
  end
@@ -0,0 +1,11 @@
1
+ class BackendConnection
2
+ cattr_accessor :host, :port, :current_database
3
+
4
+ def self.setup
5
+ yield(self) if block_given?
6
+ end
7
+
8
+ def self.build(opts = {})
9
+ Backend.new(opts.merge(host: host, port: port))
10
+ end
11
+ end
@@ -0,0 +1,6 @@
1
+ class ChangeDatabase < Struct.new(:backend, :session, :database)
2
+ def execute
3
+ backend.current_database = database
4
+ session[:database] = database
5
+ end
6
+ end
@@ -0,0 +1,5 @@
1
+ class DatabaseList < Struct.new(:backend)
2
+ def result
3
+ backend.info.keys.map{|d| d.match(/db(\d+)/);$1}.compact
4
+ end
5
+ end
@@ -36,7 +36,7 @@ class PerformanceStats < Struct.new(:backend)
36
36
  time.real / CREATE_AND_DELETE_ACCESS_TIMES
37
37
  end
38
38
 
39
- def results
39
+ def result
40
40
  { average_access: format_result_in_ms(average_access),
41
41
  average_write: format_result_in_ms(average_write),
42
42
  average_create_and_delete: format_result_in_ms(average_create_and_delete)}
@@ -0,0 +1,7 @@
1
+ class RemoveKey < Struct.new(:backend, :key)
2
+ def execute
3
+ Authorization.execute_if_authorized_for(:remove_content) do
4
+ backend.del(key)
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,5 @@
1
+ class SearchKey < Struct.new(:backend, :key)
2
+ def result
3
+ backend.keys(key).map{|found| {key: found, value: backend.get(found)} }
4
+ end
5
+ end
@@ -1,14 +1,11 @@
1
- module Authentication
1
+ class Authentication
2
+ cattr_accessor :credentials
2
3
 
3
- def self.config(credentials)
4
+ def self.setup(credentials)
4
5
  @@credentials = credentials
5
6
  end
6
7
 
7
8
  def self.authentication_required?
8
9
  !!credentials
9
10
  end
10
-
11
- def self.credentials
12
- @@credentials
13
- end
14
11
  end
@@ -1,16 +1,18 @@
1
1
  class Authorization
2
+ cattr_accessor :permissions
3
+
2
4
  DEFAULTS = {remove_content: true}
3
5
 
4
- def self.config(opts = {})
6
+ def self.setup(opts = {})
5
7
  opts = {} unless opts
6
8
  @@permissions = DEFAULTS.merge(opts)
7
9
  end
8
10
 
9
- def self.permissions
10
- @@permissions
11
- end
12
-
13
11
  def self.authorized_for?(action)
14
12
  !!permissions[action]
15
13
  end
14
+
15
+ def self.execute_if_authorized_for(action)
16
+ yield if authorized_for?(action) && block_given?
17
+ end
16
18
  end
@@ -1,6 +1,6 @@
1
1
  - search_term ||= nil
2
2
 
3
- = choose_database_select
3
+ = choose_database_select(@databases)
4
4
  %hr
5
5
 
6
6
  %form{action: '/content/search', method: 'get', style: 'margin-top: 5px'}
@@ -1,4 +1,4 @@
1
- = render 'search_form', locals: {search_term: params[:key]}
1
+ = render 'search_form', search_term: params[:key]
2
2
 
3
3
  %table.table.table-striped
4
4
  %thead
@@ -20,7 +20,7 @@ Engine::Application.configure do
20
20
  # config.action_dispatch.rack_cache = true
21
21
 
22
22
  # Disable Rails's static asset server (Apache or nginx will already do this).
23
- config.serve_static_assets = false
23
+ #config.serve_static_assets = false
24
24
 
25
25
 
26
26
  # Specifies the header that your server uses for sending files.
@@ -1,5 +1,8 @@
1
1
  if defined?(REDIS_MONITOR_OPTS)
2
- Backend.config(redis_host: REDIS_MONITOR_OPTS[:redis_host], redis_port: REDIS_MONITOR_OPTS[:redis_port])
3
- Authorization.config(REDIS_MONITOR_OPTS[:permissions])
4
- Authentication.config(REDIS_MONITOR_OPTS[:credentials])
2
+ BackendConnection.setup do |config|
3
+ config.host = REDIS_MONITOR_OPTS[:redis_host]
4
+ config.port = REDIS_MONITOR_OPTS[:redis_port]
5
+ end
6
+ Authorization.setup(REDIS_MONITOR_OPTS[:permissions])
7
+ Authentication.setup(REDIS_MONITOR_OPTS[:credentials])
5
8
  end
@@ -1,27 +1,31 @@
1
1
  require_relative '../spec_helper'
2
2
 
3
3
  describe ContentController do
4
+ let(:backend){ double() }
4
5
  before :each do
5
6
  request.env['HTTP_REFERER'] = '/'
7
+ controller.stub(:backend){ backend }
8
+ controller.stub(:load_database_list)
9
+ controller.stub(:load_current_database)
6
10
  end
7
11
 
8
12
  describe 'search action' do
9
13
  it 'should search on backend' do
10
- Backend.should_receive(:search){ [] }
14
+ SearchKey.any_instance.should_receive(:result){ [] }
11
15
  get :search
12
16
  end
13
17
  end
14
18
 
15
19
  describe 'delete action' do
16
20
  it 'should call remove on Backend' do
17
- Backend.should_receive(:remove)
21
+ RemoveKey.any_instance.should_receive(:execute)
18
22
  post :delete
19
23
  end
20
24
  end
21
25
 
22
26
  describe 'change_database' do
23
27
  it 'should call set_database' do
24
- controller.should_receive(:set_database)
28
+ ChangeDatabase.any_instance.should_receive(:execute)
25
29
  post :change_database
26
30
  end
27
31
  end
@@ -1,9 +1,12 @@
1
1
  require_relative '../spec_helper'
2
2
 
3
3
  describe InfoController do
4
+ let(:backend){ BackendConnection.build }
5
+
4
6
  describe 'index action' do
5
7
  it 'should get info from backend' do
6
- Backend.should_receive(:info)
8
+ controller.stub(:backend){ backend }
9
+ backend.should_receive(:info)
7
10
  get :index
8
11
  end
9
12
  end
@@ -3,7 +3,7 @@ require_relative '../spec_helper'
3
3
  describe PerformanceController do
4
4
  describe 'check action' do
5
5
  it 'should get performance stats from backend' do
6
- Backend.should_receive(:performance_stats)
6
+ PerformanceStats.any_instance.should_receive(:result)
7
7
  get :check
8
8
  end
9
9
  end
@@ -1,63 +1,11 @@
1
1
  require_relative '../spec_helper'
2
2
 
3
3
  describe Backend do
4
- let(:redis){ double(del: '') }
4
+ let(:backend){ BackendConnection.build }
5
5
 
6
- before :each do
7
- Backend.stub(:host)
8
- Backend.stub(:port)
9
- Backend.stub(:redis){ redis }
10
- end
11
-
12
- describe 'performance_stats' do
13
- before :each do
14
- PerformanceStats.any_instance.stub(:results){ {} }
15
- end
16
-
17
- it 'should return a hash with the stats' do
18
- Backend.performance_stats.should be_kind_of(Hash)
19
- end
20
- end
21
-
22
- describe 'search' do
23
- let(:keys){ ['k1', 'k2', 'k3'] }
24
-
25
- before :each do
26
- Backend.stub(:keys){ keys }
27
- Backend.stub(:get){ 'value' }
28
- end
29
-
30
- it 'should return an array of hashes' do
31
- Backend.search('*').should be_kind_of(Array)
32
- Backend.search('*')[0].should be_kind_of(Hash)
33
- end
34
-
35
- it 'every entry should have key and value data' do
36
- Backend.search('*')[0][:key].should_not be_nil
37
- Backend.search('*')[0][:value].should_not be_nil
38
- end
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.remove('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.remove('key')
52
- end
53
- end
54
-
55
- describe 'databases' do
56
- it 'should retrieve databases' do
57
- info_keys = {db0: '', db1: '', example: ''}
58
- Backend.stub(:info){ info_keys }
59
- Backend.databases.should include('0')
60
- Backend.databases.should include('1')
6
+ it 'should respond to basic redis methods' do
7
+ [:get, :set, :del, :info, :keys, :select].each do |method|
8
+ backend.should respond_to(method)
61
9
  end
62
10
  end
63
11
  end
@@ -0,0 +1,24 @@
1
+ require_relative '../../spec_helper'
2
+
3
+ describe ChangeDatabase do
4
+ let(:backend){ Struct.new(:current_database).new(0) }
5
+ let(:database){ '2' }
6
+ let(:session){ Struct.new(:database).new(0) }
7
+ let(:command){ ChangeDatabase.new(backend, session, database) }
8
+
9
+ describe 'execute' do
10
+ before :each do
11
+ backend.stub(:select)
12
+ end
13
+
14
+ it 'should change current_database' do
15
+ command.execute
16
+ backend.current_database.should eq(database)
17
+ end
18
+
19
+ it 'should save current_database in session' do
20
+ command.execute
21
+ session[:database].should eq(database)
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,15 @@
1
+ require_relative '../../spec_helper'
2
+
3
+ describe DatabaseList do
4
+ let(:backend){ double() }
5
+ let(:command){ DatabaseList.new(backend) }
6
+
7
+ describe 'result' do
8
+ it 'should retrieve all database identifiers' do
9
+ backend.stub(:info){ {db0: '', db1: '', example: ''} }
10
+
11
+ command.result.should include('0')
12
+ command.result.should include('1')
13
+ end
14
+ end
15
+ end
@@ -1,4 +1,4 @@
1
- require_relative '../spec_helper'
1
+ require_relative '../../spec_helper'
2
2
 
3
3
  describe PerformanceStats do
4
4
  let(:backend){ double(get: nil, set: nil, del: nil) }
@@ -42,7 +42,7 @@ describe PerformanceStats do
42
42
  end
43
43
  end
44
44
 
45
- describe 'results' do
45
+ describe 'result' do
46
46
  before :each do
47
47
  performance_stats.stub(:average_access)
48
48
  performance_stats.stub(:average_write)
@@ -50,9 +50,9 @@ describe PerformanceStats do
50
50
  end
51
51
 
52
52
  it 'should include performance stats' do
53
- performance_stats.results.should include(:average_access)
54
- performance_stats.results.should include(:average_write)
55
- performance_stats.results.should include(:average_create_and_delete)
53
+ performance_stats.result.should include(:average_access)
54
+ performance_stats.result.should include(:average_write)
55
+ performance_stats.result.should include(:average_create_and_delete)
56
56
  end
57
57
  end
58
58
  end
@@ -0,0 +1,21 @@
1
+ require_relative '../../spec_helper'
2
+
3
+ describe RemoveKey do
4
+ let(:backend){ double() }
5
+ let(:key){ 'key' }
6
+ let(:command){ RemoveKey.new(backend, key) }
7
+
8
+ describe 'execute' do
9
+ it 'should not delete content if not allowed' do
10
+ Authorization.stub(:authorized_for?).with(:remove_content){ false }
11
+ backend.should_receive(:del).never
12
+ command.execute
13
+ end
14
+
15
+ it 'should remove content if allowed' do
16
+ Authorization.stub(:authorized_for?).with(:remove_content){ true }
17
+ backend.should_receive(:del)
18
+ command.execute
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,25 @@
1
+ require_relative '../../spec_helper'
2
+
3
+ describe SearchKey do
4
+ let(:backend){ double() }
5
+ let(:key){ 'key' }
6
+ let(:command){ SearchKey.new(backend, key) }
7
+ let(:keys_found){ ['k1', 'k2', 'k3'] }
8
+
9
+ describe 'result' do
10
+ before :each do
11
+ backend.stub(:keys){ keys_found }
12
+ backend.stub(:get){ 'value' }
13
+ end
14
+
15
+ it 'should return an array of hashes' do
16
+ command.result.should be_kind_of(Array)
17
+ command.result[0].should be_kind_of(Hash)
18
+ end
19
+
20
+ it 'every entry should have key and value data' do
21
+ command.result[0][:key].should_not be_nil
22
+ command.result[0][:value].should_not be_nil
23
+ end
24
+ end
25
+ end
@@ -5,18 +5,18 @@ describe Authentication do
5
5
 
6
6
  describe 'config' do
7
7
  it 'should inject authentication in server class' do
8
- Authentication.config(credentials)
8
+ Authentication.setup(credentials)
9
9
  end
10
10
  end
11
11
 
12
12
  describe 'authentication_required??' do
13
13
  it 'should return true if it has some credentials' do
14
- Authentication.config(credentials)
14
+ Authentication.setup(credentials)
15
15
  Authentication.authentication_required?.should eq(true)
16
16
  end
17
17
 
18
18
  it 'should return false if no credentials were provided' do
19
- Authentication.config(nil)
19
+ Authentication.setup(nil)
20
20
  Authentication.authentication_required?.should eq(false)
21
21
  end
22
22
  end
@@ -41,7 +41,11 @@ RSpec.configure do |config|
41
41
  config.order = "random"
42
42
  end
43
43
 
44
- Backend.config(redis_host: 'localhost', redis_port: 6379)
45
- Authorization.config({})
46
- Authentication.config(nil)
44
+ BackendConnection.setup do |config|
45
+ config.host = 'localhost'
46
+ config.port = 6379
47
+ end
48
+
49
+ Authorization.setup({})
50
+ Authentication.setup(nil)
47
51
 
data/lib/redis_monitor.rb CHANGED
@@ -14,7 +14,6 @@ module RedisMonitor
14
14
  args = parse_arguments
15
15
  store_arguments(args)
16
16
 
17
- system('lib/engine/bin/rails', 's', '-p', args[:http_port].to_s)
18
- #system('lib/engine/bin/rails', 's', '-e', 'production')
17
+ system('lib/engine/bin/rails', 's', '-p', args[:http_port].to_s, '-e', 'production')
19
18
  end
20
19
  end
data/lib/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module RedisMonitor
2
- VERSION = '0.2'
2
+ VERSION = '0.2.1'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redis_monitor
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.2'
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Javier Jimenez
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-11 00:00:00.000000000 Z
11
+ date: 2014-01-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: redis
@@ -209,7 +209,12 @@ files:
209
209
  - lib/engine/app/helpers/database_helper.rb
210
210
  - lib/engine/app/helpers/pagination_helper.rb
211
211
  - lib/engine/app/lib/backend.rb
212
- - lib/engine/app/lib/performance_stats.rb
212
+ - lib/engine/app/lib/backend_connection.rb
213
+ - lib/engine/app/lib/commands/change_database.rb
214
+ - lib/engine/app/lib/commands/database_list.rb
215
+ - lib/engine/app/lib/commands/performance_stats.rb
216
+ - lib/engine/app/lib/commands/remove_key.rb
217
+ - lib/engine/app/lib/commands/search_key.rb
213
218
  - lib/engine/app/lib/security/authentication.rb
214
219
  - lib/engine/app/lib/security/authorization.rb
215
220
  - lib/engine/app/mailers/.keep
@@ -266,7 +271,11 @@ files:
266
271
  - lib/engine/spec/controllers/info_controller_spec.rb
267
272
  - lib/engine/spec/controllers/performance_controller_spec.rb
268
273
  - lib/engine/spec/lib/backend_spec.rb
269
- - lib/engine/spec/lib/performance_stats_spec.rb
274
+ - lib/engine/spec/lib/commands/change_database_spec.rb
275
+ - lib/engine/spec/lib/commands/database_list_spec.rb
276
+ - lib/engine/spec/lib/commands/performance_stats_spec.rb
277
+ - lib/engine/spec/lib/commands/remove_key_spec.rb
278
+ - lib/engine/spec/lib/commands/search_key_spec.rb
270
279
  - lib/engine/spec/lib/security/authentication_spec.rb
271
280
  - lib/engine/spec/lib/security/authorization_spec.rb
272
281
  - lib/engine/spec/spec_helper.rb