redis_web_manager 0.2.0 → 0.3.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (30) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +47 -5
  3. data/app/controllers/redis_web_manager/application_controller.rb +24 -4
  4. data/app/views/redis_web_manager/shared/_header.html.erb +15 -2
  5. data/config/routes.rb +22 -16
  6. data/lib/redis_web_manager.rb +10 -5
  7. data/lib/redis_web_manager/base.rb +11 -1
  8. data/lib/redis_web_manager/data.rb +2 -2
  9. data/lib/redis_web_manager/info.rb +1 -1
  10. data/lib/redis_web_manager/version.rb +1 -1
  11. data/redis_web_manager.gemspec +2 -2
  12. data/spec/controllers/redis_web_manager/actions_controller_spec.rb +7 -3
  13. data/spec/controllers/redis_web_manager/clients_controller_spec.rb +5 -1
  14. data/spec/controllers/redis_web_manager/configuration_controller_spec.rb +5 -1
  15. data/spec/controllers/redis_web_manager/dashboard_controller_spec.rb +5 -1
  16. data/spec/controllers/redis_web_manager/information_controller_spec.rb +5 -1
  17. data/spec/controllers/redis_web_manager/keys_controller_spec.rb +14 -10
  18. data/spec/redis_web_manager_action_spec.rb +1 -1
  19. data/spec/redis_web_manager_connection_spec.rb +1 -1
  20. data/spec/redis_web_manager_data_spec.rb +1 -1
  21. data/spec/redis_web_manager_info_spec.rb +1 -1
  22. data/spec/redis_web_manager_spec.rb +15 -10
  23. data/spec/routing/actions_controller_spec.rb +10 -6
  24. data/spec/routing/clients_controller_spec.rb +6 -2
  25. data/spec/routing/configuration_controller_spec.rb +6 -2
  26. data/spec/routing/dashboard_controller_spec.rb +6 -2
  27. data/spec/routing/keys_controller_spec.rb +14 -10
  28. data/spec/spec_helper.rb +1 -1
  29. metadata +8 -9
  30. data/Gemfile.lock +0 -184
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 625fca933d689410a7db50bb4108654ad7953f055825b46a13f8fd40e8833660
4
- data.tar.gz: 280d3f28e6d82c33dff79a28190c878eefed38d939ce9ad9a2b3da634241085f
3
+ metadata.gz: 87282a19ada15764441008d37f194bff06f282a71b8d2e62760ec03af4aeb071
4
+ data.tar.gz: 728d6078be9216f01b53d4cf8dfeb3eb6ab4ef82dfd9f2f3bee9a47e666a688a
5
5
  SHA512:
6
- metadata.gz: b70d680f8dd17128e020fc872717077012bb8fc1f13be495b4c2b5baa2b81f76ee76b624647fa74356325fcc25cf49ca78c2b2a107d9951acf7d9dbbc646dc54
7
- data.tar.gz: f138a669c0d71f1afbba53db6c2a3657f30f756e0a3100a2926f851b39b204be0f62c654560cd4c3b2d7a973ee92bcc8bd573ca231364e0601d6b16d5d236dda
6
+ metadata.gz: 2daea2f01fa82df07a3830d346222df004f9150f02b1ef92988537dd63242000c1093be2d4b4150093c1f32331fec2d6c688eb65660296b60c4b93b8d44d65a1
7
+ data.tar.gz: 8a599b60c3324e1d5ce01c7fb2fc183d144c436ca9aa509ffb38ba4b83a5ff73da5dd3d41bd4113b5da06716e743a9a32eeb08a10eaf75f28f400730a2e861be
data/README.md CHANGED
@@ -56,7 +56,10 @@ You can configure RedisWebManager:
56
56
  # initializers/redis_web_manager.rb
57
57
 
58
58
  RedisWebManager.configure do |config|
59
- config.redis = Redis.new(db: 1) # Default Redis.new (Instance of Redis)
59
+ config.redises = {
60
+ default: Redis.new(db: 1),
61
+ production: Redis.new(url: 'XXX')
62
+ } # Default { default: Redis.new } (Hash with instance(s) of Redis)
60
63
  config.lifespan = 2.days # Default 15.days (Lifespan of each keys for dashboard)
61
64
  config.authenticate = proc {
62
65
  authenticate_or_request_with_http_basic do |username, password|
@@ -70,10 +73,19 @@ end
70
73
 
71
74
  In order to have data on your dashboard you must collect the data like this:
72
75
  ```ruby
73
- data = RedisWebManager::Data.new
76
+ data = RedisWebManager::Data.new(:default)
74
77
  data.perform
75
78
  ```
76
79
 
80
+ or
81
+
82
+ ```ruby
83
+ RedisWebManager.redises.keys.each do |instance|
84
+ data = RedisWebManager::Data.new(instance)
85
+ data.perform
86
+ end
87
+ ```
88
+
77
89
  If you are using a system to run background tasks in your application (like Sidekiq, Sucker Punch or ActiveJob), you can write your own background task to update the dashboard statistics.
78
90
 
79
91
  Sidekiq exemple:
@@ -82,29 +94,59 @@ class DashboardWorker
82
94
  include Sidekiq::Worker
83
95
 
84
96
  def perform
85
- data = RedisWebManager::Data.new
97
+ data = RedisWebManager::Data.new(:default)
86
98
  data.perform
87
99
  end
88
100
  end
89
101
  ```
90
102
 
103
+ or
104
+
105
+ ```ruby
106
+ class DashboardWorker
107
+ include Sidekiq::Worker
108
+
109
+ def perform
110
+ RedisWebManager.redises.keys.each do |instance|
111
+ data = RedisWebManager::Data.new(instance)
112
+ data.perform
113
+ end
114
+ end
115
+ end
116
+ ```
117
+
91
118
  Sucker Punch exemple:
92
119
  ```ruby
93
120
  class DashboardJob
94
121
  include SuckerPunch::Job
95
122
 
96
123
  def perform
97
- data = RedisWebManager::Data.new
124
+ data = RedisWebManager::Data.new(:default)
98
125
  data.perform
99
126
  end
100
127
  end
101
128
  ```
102
129
 
130
+ or
131
+
132
+ ```ruby
133
+ class DashboardJob
134
+ include SuckerPunch::Job
135
+
136
+ def perform
137
+ RedisWebManager.redises.keys.each do |instance|
138
+ data = RedisWebManager::Data.new(instance)
139
+ data.perform
140
+ end
141
+ end
142
+ end
143
+ ```
144
+
145
+
103
146
 
104
147
 
105
148
  ## Todo
106
149
  * [ ] Add graph for most used commands
107
- * [ ] Manage multiple redis instances
108
150
  * [ ] Real time chart update
109
151
  * [ ] Alert system (ex: triggered when memory is peaking)
110
152
  * [ ] Command line interface to manage your redis database
@@ -5,6 +5,9 @@ module RedisWebManager
5
5
  protect_from_forgery with: :exception
6
6
 
7
7
  before_action :authenticated?, if: :authenticate
8
+ before_action :valid_instance?
9
+ helper_method :redises
10
+ helper_method :instance
8
11
 
9
12
  private
10
13
 
@@ -17,19 +20,36 @@ module RedisWebManager
17
20
  end
18
21
 
19
22
  def info
20
- @info ||= RedisWebManager::Info.new
23
+ @info ||= RedisWebManager::Info.new(instance)
21
24
  end
22
25
 
23
26
  def connection
24
- @connection ||= RedisWebManager::Connection.new
27
+ @connection ||= RedisWebManager::Connection.new(instance)
25
28
  end
26
29
 
27
30
  def action
28
- @action ||= RedisWebManager::Action.new
31
+ @action ||= RedisWebManager::Action.new(instance)
29
32
  end
30
33
 
31
34
  def data
32
- @data ||= RedisWebManager::Data.new
35
+ @data ||= RedisWebManager::Data.new(instance)
36
+ end
37
+
38
+ def default_url_options(options = {})
39
+ options.merge(instance: instance)
40
+ end
41
+
42
+ def valid_instance?
43
+ default_instance = redises.keys[0]
44
+ redirect_to dashboard_url(instance: default_instance) if instance.nil?
45
+ end
46
+
47
+ def instance
48
+ @instance ||= params[:instance].presence
49
+ end
50
+
51
+ def redises
52
+ @redises ||= RedisWebManager.redises
33
53
  end
34
54
  end
35
55
  end
@@ -1,13 +1,26 @@
1
1
  <nav class="navbar navbar-expand-lg navbar-light bg-light shadow-sm">
2
2
  <div class="container">
3
- <%= link_to 'Redis Web Manager', root_path, title: 'Redis Web Manager', class: 'navbar-brand' %>
3
+ <%= link_to 'Redis Web Manager', dashboard_path, title: 'Redis Web Manager', class: 'navbar-brand' %>
4
4
  <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Redis Web Manager">
5
5
  <span class="navbar-toggler-icon"></span>
6
6
  </button>
7
7
  <div class="collapse navbar-collapse" id="navbarSupportedContent">
8
8
  <ul class="navbar-nav mr-auto">
9
+ <li class="nav-item dropdown mr-3">
10
+ <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
11
+ <%= instance.humanize.capitalize %>
12
+ </a>
13
+ <div class="dropdown-menu" aria-labelledby="navbarDropdown">
14
+ <% redises.each do |k, v| %>
15
+ <%= link_to v.connection[:id],
16
+ dashboard_path(instance: k),
17
+ title: k,
18
+ class: instance == k.to_s ? 'dropdown-item active' : 'dropdown-item' %>
19
+ <% end %>
20
+ </div>
21
+ </li>
9
22
  <li class="nav-item">
10
- <%= link_to 'Dashboard', root_path, title: 'Dashboard', class: 'nav-link' %>
23
+ <%= link_to 'Dashboard', dashboard_path, title: 'Dashboard', class: 'nav-link' %>
11
24
  </li>
12
25
  <li class="nav-item">
13
26
  <%= link_to 'Clients', clients_path, title: 'Clients', class: 'nav-link' %>
@@ -1,26 +1,32 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  RedisWebManager::Engine.routes.draw do
4
- # Configuration
5
- get :configuration, to: 'configuration#index'
4
+ redises_keys = RedisWebManager.redises.keys
5
+ scope ':instance', instance: /#{redises_keys.join('|')}/ do
6
+ # Configuration
7
+ get :configuration, to: 'configuration#index'
6
8
 
7
- # Information
8
- get :information, to: 'information#index'
9
+ # Information
10
+ get :information, to: 'information#index'
9
11
 
10
- # Keys
11
- get 'keys' => 'keys#index'
12
- get 'key' => 'keys#show'
13
- get 'key/edit' => 'keys#edit', as: :edit_key
14
- put 'keys' => 'keys#update', as: :update_key
15
- delete 'keys' => 'keys#destroy', as: :destroy_key
12
+ # Dashboard
13
+ get :dashboard, to: 'dashboard#index'
16
14
 
17
- # Clients
18
- get :clients, to: 'clients#index'
15
+ # Keys
16
+ get 'keys' => 'keys#index'
17
+ get 'key' => 'keys#show'
18
+ get 'key/edit' => 'keys#edit', as: :edit_key
19
+ put 'keys' => 'keys#update', as: :update_key
20
+ delete 'keys' => 'keys#destroy', as: :destroy_key
19
21
 
20
- # Actions
21
- delete :reset, to: 'actions#reset'
22
- delete :flushdb, to: 'actions#flushdb'
23
- delete :flushall, to: 'actions#flushall'
22
+ # Clients
23
+ get :clients, to: 'clients#index'
24
+
25
+ # Actions
26
+ delete :reset, to: 'actions#reset'
27
+ delete :flushdb, to: 'actions#flushdb'
28
+ delete :flushall, to: 'actions#flushall'
29
+ end
24
30
 
25
31
  # Root
26
32
  root 'dashboard#index'
@@ -9,7 +9,7 @@ require 'redis_web_manager/data'
9
9
  require 'redis'
10
10
 
11
11
  module RedisWebManager
12
- mattr_accessor :redis, default: ::Redis.new
12
+ mattr_accessor :redises, default: { default: ::Redis.new }
13
13
  mattr_accessor :lifespan, default: 15.days
14
14
  mattr_accessor :authenticate, default: nil
15
15
 
@@ -22,14 +22,19 @@ module RedisWebManager
22
22
  private
23
23
 
24
24
  def check_attrs
25
- unless redis.is_a?(::Redis)
26
- raise ArgumentError, 'Invalid Redis instance, use like that Redis.new'
25
+ unless redises.is_a?(::Hash)
26
+ raise(ArgumentError, 'Invalid redises hash, use like that { test: Redis.new }')
27
+ end
28
+ redises.each do |k, v|
29
+ unless v.is_a?(::Redis)
30
+ raise(ArgumentError, "Invalid Redis instance for #{k}, use like that Redis.new")
31
+ end
27
32
  end
28
33
  unless lifespan.is_a?(::ActiveSupport::Duration)
29
- raise ArgumentError, 'Invalid lifespan, use like that 15.days, 15.minutes etc'
34
+ raise(ArgumentError, 'Invalid lifespan, use like that 15.days, 15.minutes etc')
30
35
  end
31
36
  valid = lifespan.to_i.positive?
32
- raise ArgumentError, 'Invalid lifespan, value must be greater than 0' unless valid
37
+ raise(ArgumentError, 'Invalid lifespan, value must be greater than 0') unless valid
33
38
  end
34
39
  end
35
40
  end
@@ -2,10 +2,20 @@
2
2
 
3
3
  module RedisWebManager
4
4
  class Base
5
+ attr_accessor :instance
6
+
7
+ def initialize(instance)
8
+ @instance = instance || redises.keys[0]
9
+ end
10
+
5
11
  private
6
12
 
7
13
  def redis
8
- @redis ||= RedisWebManager.redis
14
+ @redis ||= redises[instance.to_sym]
15
+ end
16
+
17
+ def redises
18
+ @redises ||= RedisWebManager.redises
9
19
  end
10
20
  end
11
21
  end
@@ -11,7 +11,7 @@ module RedisWebManager
11
11
  def perform
12
12
  now = Time.now.to_i
13
13
  seconds = (now + lifespan.to_i) - now
14
- redis.setex("#{BASE}_#{now}", seconds, serialize.to_json)
14
+ redis.setex("#{BASE}_#{instance}_#{now}", seconds, serialize.to_json)
15
15
  end
16
16
 
17
17
  def flush
@@ -21,7 +21,7 @@ module RedisWebManager
21
21
  private
22
22
 
23
23
  def data
24
- @data ||= redis.scan_each(match: "#{BASE}_*").to_a
24
+ @data ||= redis.scan_each(match: "#{BASE}_#{instance}_*").to_a
25
25
  end
26
26
 
27
27
  def lifespan
@@ -11,7 +11,7 @@ module RedisWebManager
11
11
  end
12
12
 
13
13
  def search(query)
14
- redis.scan_each(match: "*#{query.try(:downcase)}*").to_a
14
+ redis.scan_each(match: "*#{query}*").to_a
15
15
  end
16
16
 
17
17
  def type(key)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RedisWebManager
4
- VERSION = '0.2.0'
4
+ VERSION = '0.3.3'
5
5
  end
@@ -35,10 +35,10 @@ Gem::Specification.new do |spec|
35
35
  spec.test_files = Dir['spec/**/*']
36
36
 
37
37
  spec.add_development_dependency 'coveralls', '~> 0.8'
38
- spec.add_development_dependency 'rspec-rails', '= 4.0.0.beta3'
38
+ spec.add_development_dependency 'rspec-rails', '~> 4.0.0'
39
39
  spec.add_development_dependency 'simplecov', '~> 0.16'
40
40
 
41
- spec.add_dependency 'pagy', '~> 3.7'
41
+ spec.add_dependency 'pagy', '~> 3.8'
42
42
  spec.add_dependency 'rails', '>= 5.2', '< 7'
43
43
  spec.add_dependency 'redis', '~> 4.1.0'
44
44
  end
@@ -5,23 +5,27 @@ require 'rails_helper'
5
5
  RSpec.describe RedisWebManager::ActionsController, type: :controller do
6
6
  routes { RedisWebManager::Engine.routes }
7
7
 
8
+ let(:default) do
9
+ RedisWebManager.redises.keys[0]
10
+ end
11
+
8
12
  describe 'DELETE #reset' do
9
13
  it 'returns a success response' do
10
- delete :reset
14
+ delete :reset, params: { instance: default.to_s }
11
15
  expect(response).to be_redirect
12
16
  end
13
17
  end
14
18
 
15
19
  describe 'DELETE #flushdb' do
16
20
  it 'returns a success response' do
17
- delete :flushdb
21
+ delete :flushdb, params: { instance: default.to_s }
18
22
  expect(response).to be_redirect
19
23
  end
20
24
  end
21
25
 
22
26
  describe 'DELETE #flushall' do
23
27
  it 'returns a success response' do
24
- delete :flushall
28
+ delete :flushall, params: { instance: default.to_s }
25
29
  expect(response).to be_redirect
26
30
  end
27
31
  end
@@ -5,9 +5,13 @@ require 'rails_helper'
5
5
  RSpec.describe RedisWebManager::ClientsController, type: :controller do
6
6
  routes { RedisWebManager::Engine.routes }
7
7
 
8
+ let(:default) do
9
+ RedisWebManager.redises.keys[0]
10
+ end
11
+
8
12
  describe 'GET #index' do
9
13
  it 'returns a success response' do
10
- get :index
14
+ get :index, params: { instance: default.to_s }
11
15
  expect(response).to be_successful
12
16
  end
13
17
  end
@@ -5,9 +5,13 @@ require 'rails_helper'
5
5
  RSpec.describe RedisWebManager::ConfigurationController, type: :controller do
6
6
  routes { RedisWebManager::Engine.routes }
7
7
 
8
+ let(:default) do
9
+ RedisWebManager.redises.keys[0]
10
+ end
11
+
8
12
  describe 'GET #index' do
9
13
  it 'returns a success response' do
10
- get :index
14
+ get :index, params: { instance: default.to_s }
11
15
  expect(response).to be_successful
12
16
  end
13
17
  end
@@ -5,9 +5,13 @@ require 'rails_helper'
5
5
  RSpec.describe RedisWebManager::DashboardController, type: :controller do
6
6
  routes { RedisWebManager::Engine.routes }
7
7
 
8
+ let(:default) do
9
+ RedisWebManager.redises.keys[0]
10
+ end
11
+
8
12
  describe 'GET #index' do
9
13
  it 'returns a success response' do
10
- get :index
14
+ get :index, params: { instance: default.to_s }
11
15
  expect(response).to be_successful
12
16
  end
13
17
  end
@@ -5,9 +5,13 @@ require 'rails_helper'
5
5
  RSpec.describe RedisWebManager::InformationController, type: :controller do
6
6
  routes { RedisWebManager::Engine.routes }
7
7
 
8
+ let(:default) do
9
+ RedisWebManager.redises.keys[0]
10
+ end
11
+
8
12
  describe 'GET #index' do
9
13
  it 'returns a success response' do
10
- get :index
14
+ get :index, params: { instance: default.to_s }
11
15
  expect(response).to be_successful
12
16
  end
13
17
  end
@@ -8,19 +8,23 @@ RSpec.describe RedisWebManager::KeysController, type: :controller do
8
8
  ::Redis.new
9
9
  end
10
10
 
11
+ let(:default) do
12
+ RedisWebManager.redises.keys[0]
13
+ end
14
+
11
15
  describe 'GET #index' do
12
16
  it 'returns a success response' do
13
- get :index
17
+ get :index, params: { instance: default.to_s }
14
18
  expect(response).to be_successful
15
- get :index, params: { query: 'test' }
19
+ get :index, params: { query: 'test', instance: default.to_s }
16
20
  expect(response).to be_successful
17
- get :index, params: { type: 'string' }
21
+ get :index, params: { type: 'string', instance: default.to_s }
18
22
  expect(response).to be_successful
19
- get :index, params: { expiry: '-1' }
23
+ get :index, params: { expiry: '-1', instance: default.to_s }
20
24
  expect(response).to be_successful
21
- get :index, params: { expiry: '3600' }
25
+ get :index, params: { expiry: '3600', instance: default.to_s }
22
26
  expect(response).to be_successful
23
- get :index, params: { memory: '1000' }
27
+ get :index, params: { memory: '1000', instance: default.to_s }
24
28
  expect(response).to be_successful
25
29
  end
26
30
  end
@@ -28,7 +32,7 @@ RSpec.describe RedisWebManager::KeysController, type: :controller do
28
32
  describe 'GET #show' do
29
33
  it 'returns a success response' do
30
34
  redis.set('test', 'test')
31
- get :show, params: { key: 'test' }
35
+ get :show, params: { key: 'test', instance: default.to_s }
32
36
  expect(response).to be_successful
33
37
  end
34
38
  end
@@ -36,7 +40,7 @@ RSpec.describe RedisWebManager::KeysController, type: :controller do
36
40
  describe 'GET #edit' do
37
41
  it 'returns a success response' do
38
42
  redis.set('test', 'test')
39
- get :edit, params: { key: 'test' }
43
+ get :edit, params: { key: 'test', instance: default.to_s }
40
44
  expect(response).to be_successful
41
45
  end
42
46
  end
@@ -44,7 +48,7 @@ RSpec.describe RedisWebManager::KeysController, type: :controller do
44
48
  describe 'GET #update' do
45
49
  it 'returns a success response' do
46
50
  redis.set('test', 'test')
47
- put :update, params: { old_name: 'test', new_name: 'testtest' }
51
+ put :update, params: { old_name: 'test', new_name: 'testtest', instance: default.to_s }
48
52
  expect(response).to be_redirect
49
53
  end
50
54
  end
@@ -52,7 +56,7 @@ RSpec.describe RedisWebManager::KeysController, type: :controller do
52
56
  describe 'GET #destroy' do
53
57
  it 'returns a success response' do
54
58
  redis.set('test', 'test')
55
- delete :destroy, params: { key: 'test' }
59
+ delete :destroy, params: { key: 'test', instance: default.to_s }
56
60
  expect(response).to be_redirect
57
61
  end
58
62
  end
@@ -4,7 +4,7 @@ require 'rails_helper'
4
4
 
5
5
  RSpec.describe RedisWebManager::Action do
6
6
  let(:action) do
7
- RedisWebManager::Action.new
7
+ RedisWebManager::Action.new(RedisWebManager.redises.keys[0])
8
8
  end
9
9
 
10
10
  let(:redis) do
@@ -4,7 +4,7 @@ require 'rails_helper'
4
4
 
5
5
  RSpec.describe RedisWebManager::Connection do
6
6
  let(:connection) do
7
- RedisWebManager::Connection.new
7
+ RedisWebManager::Connection.new(RedisWebManager.redises.keys[0])
8
8
  end
9
9
 
10
10
  describe 'connection' do
@@ -4,7 +4,7 @@ require 'rails_helper'
4
4
 
5
5
  RSpec.describe RedisWebManager::Data do
6
6
  let(:data) do
7
- RedisWebManager::Data.new
7
+ RedisWebManager::Data.new(RedisWebManager.redises.keys[0])
8
8
  end
9
9
 
10
10
  describe 'data' do
@@ -4,7 +4,7 @@ require 'rails_helper'
4
4
 
5
5
  RSpec.describe RedisWebManager::Info do
6
6
  let(:info) do
7
- RedisWebManager::Info.new
7
+ RedisWebManager::Info.new(RedisWebManager.redises.keys[0])
8
8
  end
9
9
 
10
10
  let(:redis) do
@@ -5,7 +5,7 @@ require 'rails_helper'
5
5
  RSpec.describe RedisWebManager do
6
6
  describe 'Test default configuration' do
7
7
  it 'returns a Redis class' do
8
- expect(RedisWebManager.redis).to be_a_kind_of(Redis)
8
+ expect(RedisWebManager.redises).to be_a_kind_of(Hash)
9
9
  end
10
10
 
11
11
  it 'returns a nil class' do
@@ -18,27 +18,30 @@ RSpec.describe RedisWebManager do
18
18
  end
19
19
 
20
20
  describe 'Test configuration' do
21
- it 'returns a raise error' do
21
+ it 'returns a raise error (redises)' do
22
22
  expect do
23
23
  RedisWebManager.configure do |c|
24
- c.redis = 1
25
- c.lifespan = 1
24
+ c.redises = 1
26
25
  end
27
- end.to raise_error(ArgumentError, 'Invalid Redis instance, use like that Redis.new')
26
+ end.to raise_error(ArgumentError, 'Invalid redises hash, use like that { test: Redis.new }')
28
27
  end
29
28
 
30
- it 'returns a raise error (redis)' do
29
+ it 'returns a raise error (value of redises)' do
31
30
  expect do
32
31
  RedisWebManager.configure do |c|
33
- c.redis = 1
32
+ c.redises = {
33
+ default: 1
34
+ }
34
35
  end
35
- end.to raise_error(ArgumentError, 'Invalid Redis instance, use like that Redis.new')
36
+ end.to raise_error(ArgumentError, 'Invalid Redis instance for default, use like that Redis.new')
36
37
  end
37
38
 
38
39
  it 'returns a raise error (lifespan)' do
39
40
  expect do
40
41
  RedisWebManager.configure do |c|
41
- c.redis = ::Redis.new
42
+ c.redises = {
43
+ default: ::Redis.new
44
+ }
42
45
  c.lifespan = 1
43
46
  end
44
47
  end.to raise_error(ArgumentError, 'Invalid lifespan, use like that 15.days, 15.minutes etc')
@@ -47,7 +50,9 @@ RSpec.describe RedisWebManager do
47
50
  it 'returns a raise error (lifespan)' do
48
51
  expect do
49
52
  RedisWebManager.configure do |c|
50
- c.redis = ::Redis.new
53
+ c.redises = {
54
+ default: ::Redis.new
55
+ }
51
56
  c.lifespan = -1.days
52
57
  end
53
58
  end.to raise_error(ArgumentError, 'Invalid lifespan, value must be greater than 0')
@@ -5,22 +5,26 @@ require 'rails_helper'
5
5
  RSpec.describe RedisWebManager::ActionsController, type: :routing do
6
6
  routes { RedisWebManager::Engine.routes }
7
7
 
8
+ let(:default) do
9
+ RedisWebManager.redises.keys[0]
10
+ end
11
+
8
12
  describe 'routing' do
9
13
  it 'routes to #reset' do
10
- expect(delete: '/reset').to(
11
- route_to('redis_web_manager/actions#reset')
14
+ expect(delete: "/#{default}/reset").to(
15
+ route_to('redis_web_manager/actions#reset', instance: default.to_s)
12
16
  )
13
17
  end
14
18
 
15
19
  it 'routes to #flushdb' do
16
- expect(delete: '/flushdb').to(
17
- route_to('redis_web_manager/actions#flushdb')
20
+ expect(delete: "/#{default}/flushdb").to(
21
+ route_to('redis_web_manager/actions#flushdb', instance: default.to_s)
18
22
  )
19
23
  end
20
24
 
21
25
  it 'routes to #flushall' do
22
- expect(delete: '/flushall').to(
23
- route_to('redis_web_manager/actions#flushall')
26
+ expect(delete: "/#{default}/flushall").to(
27
+ route_to('redis_web_manager/actions#flushall', instance: default.to_s)
24
28
  )
25
29
  end
26
30
  end
@@ -5,10 +5,14 @@ require 'rails_helper'
5
5
  RSpec.describe RedisWebManager::ClientsController, type: :routing do
6
6
  routes { RedisWebManager::Engine.routes }
7
7
 
8
+ let(:default) do
9
+ RedisWebManager.redises.keys[0]
10
+ end
11
+
8
12
  describe 'routing' do
9
13
  it 'routes to #index' do
10
- expect(get: '/clients').to(
11
- route_to('redis_web_manager/clients#index')
14
+ expect(get: "/#{default}/clients").to(
15
+ route_to('redis_web_manager/clients#index', instance: default.to_s)
12
16
  )
13
17
  end
14
18
  end
@@ -5,10 +5,14 @@ require 'rails_helper'
5
5
  RSpec.describe RedisWebManager::ConfigurationController, type: :routing do
6
6
  routes { RedisWebManager::Engine.routes }
7
7
 
8
+ let(:default) do
9
+ RedisWebManager.redises.keys[0]
10
+ end
11
+
8
12
  describe 'routing' do
9
13
  it 'routes to #index' do
10
- expect(get: '/configuration').to(
11
- route_to('redis_web_manager/configuration#index')
14
+ expect(get: "/#{default}/configuration").to(
15
+ route_to('redis_web_manager/configuration#index', instance: default.to_s)
12
16
  )
13
17
  end
14
18
  end
@@ -5,10 +5,14 @@ require 'rails_helper'
5
5
  RSpec.describe RedisWebManager::DashboardController, type: :routing do
6
6
  routes { RedisWebManager::Engine.routes }
7
7
 
8
+ let(:default) do
9
+ RedisWebManager.redises.keys[0]
10
+ end
11
+
8
12
  describe 'routing' do
9
13
  it 'routes to #index' do
10
- expect(get: '/').to(
11
- route_to('redis_web_manager/dashboard#index')
14
+ expect(get: "/#{default}/dashboard").to(
15
+ route_to('redis_web_manager/dashboard#index', instance: default.to_s)
12
16
  )
13
17
  end
14
18
  end
@@ -5,34 +5,38 @@ require 'rails_helper'
5
5
  RSpec.describe RedisWebManager::KeysController, type: :routing do
6
6
  routes { RedisWebManager::Engine.routes }
7
7
 
8
+ let(:default) do
9
+ RedisWebManager.redises.keys[0]
10
+ end
11
+
8
12
  describe 'routing' do
9
13
  it 'routes to #index' do
10
- expect(get: '/keys').to(
11
- route_to('redis_web_manager/keys#index')
14
+ expect(get: "/#{default}/keys").to(
15
+ route_to('redis_web_manager/keys#index', instance: default.to_s)
12
16
  )
13
17
  end
14
18
 
15
19
  it 'routes to #show' do
16
- expect(get: '/key').to(
17
- route_to('redis_web_manager/keys#show')
20
+ expect(get: "/#{default}/key").to(
21
+ route_to('redis_web_manager/keys#show', instance: default.to_s)
18
22
  )
19
23
  end
20
24
 
21
25
  it 'routes to #edit' do
22
- expect(get: '/key/edit').to(
23
- route_to('redis_web_manager/keys#edit')
26
+ expect(get: "/#{default}/key/edit").to(
27
+ route_to('redis_web_manager/keys#edit', instance: default.to_s)
24
28
  )
25
29
  end
26
30
 
27
31
  it 'routes to #update' do
28
- expect(put: '/keys').to(
29
- route_to('redis_web_manager/keys#update')
32
+ expect(put: "/#{default}/keys").to(
33
+ route_to('redis_web_manager/keys#update', instance: default.to_s)
30
34
  )
31
35
  end
32
36
 
33
37
  it 'routes to #destroy' do
34
- expect(delete: '/keys').to(
35
- route_to('redis_web_manager/keys#destroy')
38
+ expect(delete: "/#{default}/keys").to(
39
+ route_to('redis_web_manager/keys#destroy', instance: default.to_s)
36
40
  )
37
41
  end
38
42
  end
@@ -10,7 +10,7 @@ require 'simplecov'
10
10
  require 'coveralls'
11
11
 
12
12
  SimpleCov.start
13
- Coveralls.wear!
13
+ #Coveralls.wear!
14
14
 
15
15
  # Given that it is always loaded, you are encouraged to keep this file as
16
16
  # light-weight as possible. Requiring heavyweight dependencies from this file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redis_web_manager
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Boris BRESCIANI
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2020-02-18 00:00:00.000000000 Z
13
+ date: 2020-05-31 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: coveralls
@@ -30,16 +30,16 @@ dependencies:
30
30
  name: rspec-rails
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
- - - '='
33
+ - - "~>"
34
34
  - !ruby/object:Gem::Version
35
- version: 4.0.0.beta3
35
+ version: 4.0.0
36
36
  type: :development
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
- - - '='
40
+ - - "~>"
41
41
  - !ruby/object:Gem::Version
42
- version: 4.0.0.beta3
42
+ version: 4.0.0
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: simplecov
45
45
  requirement: !ruby/object:Gem::Requirement
@@ -60,14 +60,14 @@ dependencies:
60
60
  requirements:
61
61
  - - "~>"
62
62
  - !ruby/object:Gem::Version
63
- version: '3.7'
63
+ version: '3.8'
64
64
  type: :runtime
65
65
  prerelease: false
66
66
  version_requirements: !ruby/object:Gem::Requirement
67
67
  requirements:
68
68
  - - "~>"
69
69
  - !ruby/object:Gem::Version
70
- version: '3.7'
70
+ version: '3.8'
71
71
  - !ruby/object:Gem::Dependency
72
72
  name: rails
73
73
  requirement: !ruby/object:Gem::Requirement
@@ -118,7 +118,6 @@ files:
118
118
  - ".rubocop.yml"
119
119
  - ".travis.yml"
120
120
  - Gemfile
121
- - Gemfile.lock
122
121
  - MIT-LICENSE
123
122
  - README.md
124
123
  - Rakefile
@@ -1,184 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- redis_web_manager (0.1.9)
5
- pagy (~> 3.7)
6
- rails (>= 5.2, < 7)
7
- redis (~> 4.1.0)
8
-
9
- GEM
10
- remote: https://rubygems.org/
11
- specs:
12
- actioncable (6.0.2.1)
13
- actionpack (= 6.0.2.1)
14
- nio4r (~> 2.0)
15
- websocket-driver (>= 0.6.1)
16
- actionmailbox (6.0.2.1)
17
- actionpack (= 6.0.2.1)
18
- activejob (= 6.0.2.1)
19
- activerecord (= 6.0.2.1)
20
- activestorage (= 6.0.2.1)
21
- activesupport (= 6.0.2.1)
22
- mail (>= 2.7.1)
23
- actionmailer (6.0.2.1)
24
- actionpack (= 6.0.2.1)
25
- actionview (= 6.0.2.1)
26
- activejob (= 6.0.2.1)
27
- mail (~> 2.5, >= 2.5.4)
28
- rails-dom-testing (~> 2.0)
29
- actionpack (6.0.2.1)
30
- actionview (= 6.0.2.1)
31
- activesupport (= 6.0.2.1)
32
- rack (~> 2.0, >= 2.0.8)
33
- rack-test (>= 0.6.3)
34
- rails-dom-testing (~> 2.0)
35
- rails-html-sanitizer (~> 1.0, >= 1.2.0)
36
- actiontext (6.0.2.1)
37
- actionpack (= 6.0.2.1)
38
- activerecord (= 6.0.2.1)
39
- activestorage (= 6.0.2.1)
40
- activesupport (= 6.0.2.1)
41
- nokogiri (>= 1.8.5)
42
- actionview (6.0.2.1)
43
- activesupport (= 6.0.2.1)
44
- builder (~> 3.1)
45
- erubi (~> 1.4)
46
- rails-dom-testing (~> 2.0)
47
- rails-html-sanitizer (~> 1.1, >= 1.2.0)
48
- activejob (6.0.2.1)
49
- activesupport (= 6.0.2.1)
50
- globalid (>= 0.3.6)
51
- activemodel (6.0.2.1)
52
- activesupport (= 6.0.2.1)
53
- activerecord (6.0.2.1)
54
- activemodel (= 6.0.2.1)
55
- activesupport (= 6.0.2.1)
56
- activestorage (6.0.2.1)
57
- actionpack (= 6.0.2.1)
58
- activejob (= 6.0.2.1)
59
- activerecord (= 6.0.2.1)
60
- marcel (~> 0.3.1)
61
- activesupport (6.0.2.1)
62
- concurrent-ruby (~> 1.0, >= 1.0.2)
63
- i18n (>= 0.7, < 2)
64
- minitest (~> 5.1)
65
- tzinfo (~> 1.1)
66
- zeitwerk (~> 2.2)
67
- builder (3.2.4)
68
- concurrent-ruby (1.1.6)
69
- coveralls (0.8.23)
70
- json (>= 1.8, < 3)
71
- simplecov (~> 0.16.1)
72
- term-ansicolor (~> 1.3)
73
- thor (>= 0.19.4, < 2.0)
74
- tins (~> 1.6)
75
- crass (1.0.6)
76
- diff-lcs (1.3)
77
- docile (1.3.2)
78
- erubi (1.9.0)
79
- globalid (0.4.2)
80
- activesupport (>= 4.2.0)
81
- i18n (1.8.2)
82
- concurrent-ruby (~> 1.0)
83
- json (2.3.0)
84
- loofah (2.4.0)
85
- crass (~> 1.0.2)
86
- nokogiri (>= 1.5.9)
87
- mail (2.7.1)
88
- mini_mime (>= 0.1.1)
89
- marcel (0.3.3)
90
- mimemagic (~> 0.3.2)
91
- method_source (0.9.2)
92
- mimemagic (0.3.4)
93
- mini_mime (1.0.2)
94
- mini_portile2 (2.4.0)
95
- minitest (5.14.0)
96
- nio4r (2.5.2)
97
- nokogiri (1.10.8)
98
- mini_portile2 (~> 2.4.0)
99
- pagy (3.7.3)
100
- rack (2.2.2)
101
- rack-test (1.1.0)
102
- rack (>= 1.0, < 3)
103
- rails (6.0.2.1)
104
- actioncable (= 6.0.2.1)
105
- actionmailbox (= 6.0.2.1)
106
- actionmailer (= 6.0.2.1)
107
- actionpack (= 6.0.2.1)
108
- actiontext (= 6.0.2.1)
109
- actionview (= 6.0.2.1)
110
- activejob (= 6.0.2.1)
111
- activemodel (= 6.0.2.1)
112
- activerecord (= 6.0.2.1)
113
- activestorage (= 6.0.2.1)
114
- activesupport (= 6.0.2.1)
115
- bundler (>= 1.3.0)
116
- railties (= 6.0.2.1)
117
- sprockets-rails (>= 2.0.0)
118
- rails-dom-testing (2.0.3)
119
- activesupport (>= 4.2.0)
120
- nokogiri (>= 1.6)
121
- rails-html-sanitizer (1.3.0)
122
- loofah (~> 2.3)
123
- railties (6.0.2.1)
124
- actionpack (= 6.0.2.1)
125
- activesupport (= 6.0.2.1)
126
- method_source
127
- rake (>= 0.8.7)
128
- thor (>= 0.20.3, < 2.0)
129
- rake (13.0.1)
130
- redis (4.1.3)
131
- rspec-core (3.9.1)
132
- rspec-support (~> 3.9.1)
133
- rspec-expectations (3.9.0)
134
- diff-lcs (>= 1.2.0, < 2.0)
135
- rspec-support (~> 3.9.0)
136
- rspec-mocks (3.9.1)
137
- diff-lcs (>= 1.2.0, < 2.0)
138
- rspec-support (~> 3.9.0)
139
- rspec-rails (4.0.0.beta3)
140
- actionpack (>= 4.2)
141
- activesupport (>= 4.2)
142
- railties (>= 4.2)
143
- rspec-core (~> 3.8)
144
- rspec-expectations (~> 3.8)
145
- rspec-mocks (~> 3.8)
146
- rspec-support (~> 3.8)
147
- rspec-support (3.9.2)
148
- simplecov (0.16.1)
149
- docile (~> 1.1)
150
- json (>= 1.8, < 3)
151
- simplecov-html (~> 0.10.0)
152
- simplecov-html (0.10.2)
153
- sprockets (4.0.0)
154
- concurrent-ruby (~> 1.0)
155
- rack (> 1, < 3)
156
- sprockets-rails (3.2.1)
157
- actionpack (>= 4.0)
158
- activesupport (>= 4.0)
159
- sprockets (>= 3.0.0)
160
- sync (0.5.0)
161
- term-ansicolor (1.7.1)
162
- tins (~> 1.0)
163
- thor (1.0.1)
164
- thread_safe (0.3.6)
165
- tins (1.24.1)
166
- sync
167
- tzinfo (1.2.6)
168
- thread_safe (~> 0.1)
169
- websocket-driver (0.7.1)
170
- websocket-extensions (>= 0.1.0)
171
- websocket-extensions (0.1.4)
172
- zeitwerk (2.2.2)
173
-
174
- PLATFORMS
175
- ruby
176
-
177
- DEPENDENCIES
178
- coveralls (~> 0.8)
179
- redis_web_manager!
180
- rspec-rails (= 4.0.0.beta3)
181
- simplecov (~> 0.16)
182
-
183
- BUNDLED WITH
184
- 2.1.4