cache_manager 0.0.1 → 0.0.2
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.
- checksums.yaml +4 -4
- data/Readme.md +50 -0
- data/app/assets/javascripts/cm.js +0 -0
- data/app/assets/stylesheets/cm.css +0 -0
- data/app/controllers/cache_manager/keys_controller.rb +7 -0
- data/app/models/cache_manager/key.rb +43 -2
- data/app/models/cache_manager/stats.rb +14 -1
- data/app/views/cache_manager/keys/index.html.erb +26 -9
- data/app/views/cache_manager/keys/show.html.erb +1 -3
- data/app/views/cache_manager/stats/index.html.erb +17 -9
- data/app/views/layouts/cache_manager/application.html.erb +4 -1
- data/config/routes.rb +3 -1
- data/lib/cache_manager/engine.rb +14 -0
- data/lib/cache_manager/version.rb +1 -1
- metadata +5 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 451ca392db1b5c3a6106d4e110f6e955ca10b4c9
|
4
|
+
data.tar.gz: 1fbed941c63e5e13c6c638a60bbab208fc810b92
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: acfc8cdddf41c9f29c9c56d9df261895835d746b0c79f0b99c6097b760289517c380e9cbc7d44bc4b70943752efefadebac4390320ceb47c5a41a2275204fdb7
|
7
|
+
data.tar.gz: c79ea664a6bd8b074ceca5ae4bbf5ae8b8e04f03333753597668ab67ea3dfa0b51605d4b7f23f30c7f0fecea9c88c8194367a0474bc83c05eb3a5ca9b5047469
|
data/Readme.md
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
Cache Manager
|
2
|
+
-----
|
3
|
+
|
4
|
+
Mountable Rails engine to view your cache and manage the keys / cleanup cache.
|
5
|
+
|
6
|
+
**Note:** Currently tested with Filestore and Redis Cache store.
|
7
|
+
|
8
|
+
Installation
|
9
|
+
-----
|
10
|
+
|
11
|
+
Add the Gem in your Gemfile
|
12
|
+
|
13
|
+
```ruby
|
14
|
+
gem 'cache_manager'
|
15
|
+
```
|
16
|
+
|
17
|
+
And bundle
|
18
|
+
```ruby
|
19
|
+
$ bundle install
|
20
|
+
```
|
21
|
+
|
22
|
+
Once installed, Mount the engine to your routes.rb
|
23
|
+
|
24
|
+
```ruby
|
25
|
+
# routes.rb
|
26
|
+
|
27
|
+
Rails.application.routes.draw do
|
28
|
+
# your other routes
|
29
|
+
# snipped for brevity
|
30
|
+
mount CacheManager::Engine => "/cache_manager"
|
31
|
+
end
|
32
|
+
```
|
33
|
+
|
34
|
+
Usage
|
35
|
+
------
|
36
|
+
|
37
|
+
Once it's mounted you can access it via browser
|
38
|
+
|
39
|
+
<a href='http://localhost:3000/cache_manager'>http://localhost:3000/cache_manager</a>
|
40
|
+
|
41
|
+
This brings you to the Landing page of cache manager. This Gives information about your Cache Stats
|
42
|
+
|
43
|
+

|
44
|
+
|
45
|
+
|
46
|
+
<a href='http://localhost:3000/cache_manager/keys'>http://localhost:3000/cache_manager/keys</a>
|
47
|
+
|
48
|
+
This Brings you to the page which lists all your Keys and you can delete them . Clicking on individual links will take you to the page which displays the Cache information.
|
49
|
+
|
50
|
+

|
File without changes
|
File without changes
|
@@ -9,5 +9,12 @@ module CacheManager
|
|
9
9
|
def show
|
10
10
|
@key = Key.find(params[:id])
|
11
11
|
end
|
12
|
+
|
13
|
+
def flush
|
14
|
+
@key = Key.flush(params[:key])
|
15
|
+
respond_to do |format|
|
16
|
+
format.html { redirect_to keys_url, notice: 'Keys were successfully flushed.' }
|
17
|
+
end
|
18
|
+
end
|
12
19
|
end
|
13
20
|
end
|
@@ -1,15 +1,56 @@
|
|
1
1
|
module CacheManager
|
2
2
|
class Key
|
3
|
+
EXCLUDED_DIRS = ['.', '..', 'assets'].freeze
|
3
4
|
|
4
|
-
|
5
|
+
attr_reader :klass
|
6
|
+
|
7
|
+
def initialize
|
8
|
+
@klass = Rails.cache.class.to_s
|
9
|
+
end
|
10
|
+
|
11
|
+
# Rails.cache.instance_variable_get(:@data).keys
|
5
12
|
class << self
|
6
13
|
def all
|
7
|
-
|
14
|
+
new.all
|
15
|
+
end
|
16
|
+
|
17
|
+
def flush(id)
|
18
|
+
if id == 'all'
|
19
|
+
Rails.cache.clear
|
20
|
+
else
|
21
|
+
Rails.cache.delete(id)
|
22
|
+
end
|
8
23
|
end
|
9
24
|
|
10
25
|
def find(id)
|
11
26
|
Rails.cache.read(id)
|
12
27
|
end
|
28
|
+
|
29
|
+
def destroy(id)
|
30
|
+
Rails.cache.delete(id)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def all
|
35
|
+
case @klass
|
36
|
+
when 'ActiveSupport::Cache::FileStore'
|
37
|
+
keys_for_file_store
|
38
|
+
else
|
39
|
+
keys_for_memory_store
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def keys_for_memory_store
|
44
|
+
Rails.cache.instance_variable_get(:@data).keys
|
45
|
+
end
|
46
|
+
|
47
|
+
def keys_for_file_store
|
48
|
+
cache_path = Rails.cache.instance_variable_get(:'@cache_path')
|
49
|
+
root_dirs = Dir.entries(cache_path).reject { |f| (EXCLUDED_DIRS + ['.gitkeep']).include?(f) }
|
50
|
+
full_paths = root_dirs.collect { |i| cache_path + "#{i}" }
|
51
|
+
full_paths.collect do |dir|
|
52
|
+
File.basename(Dir["#{dir}/*/*"][0]) if Dir["#{dir}/*/*"][0]
|
53
|
+
end
|
13
54
|
end
|
14
55
|
end
|
15
56
|
end
|
@@ -1,9 +1,22 @@
|
|
1
1
|
module CacheManager
|
2
2
|
class Stats
|
3
|
+
attr_reader :klass
|
4
|
+
|
5
|
+
def initialize
|
6
|
+
@klass = Rails.cache.class.to_s
|
7
|
+
end
|
3
8
|
|
4
|
-
#Rails.cache.instance_variable_get(:@data).keys
|
5
9
|
class << self
|
6
10
|
def all
|
11
|
+
new.all
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def all
|
16
|
+
case @klass
|
17
|
+
when 'ActiveSupport::Cache::FileStore'
|
18
|
+
{}
|
19
|
+
else
|
7
20
|
Rails.cache.stats
|
8
21
|
end
|
9
22
|
end
|
@@ -1,4 +1,17 @@
|
|
1
|
-
<
|
1
|
+
<div class="row">
|
2
|
+
<div class="col-md-8">
|
3
|
+
<h1>
|
4
|
+
<%= pluralize(@keys.count, 'key') %>
|
5
|
+
</h1>
|
6
|
+
</div>
|
7
|
+
<div class="col-md-4">
|
8
|
+
<%= form_tag({controller: :keys, action: :flush}, method: "put") do %>
|
9
|
+
<%= hidden_field_tag :key, 'all' %>
|
10
|
+
<%= submit_tag "Flush All Keys" ,class: 'btn btn-block btn-danger' %>
|
11
|
+
<% end %>
|
12
|
+
</div>
|
13
|
+
</div>
|
14
|
+
|
2
15
|
<table class="table">
|
3
16
|
<thead>
|
4
17
|
<th>
|
@@ -10,14 +23,18 @@
|
|
10
23
|
</thead>
|
11
24
|
<tbody>
|
12
25
|
<% @keys.each do |key| %>
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
26
|
+
<tr>
|
27
|
+
<td>
|
28
|
+
<%= link_to key, key_url(id: key) %>
|
29
|
+
</td>
|
30
|
+
<td>
|
31
|
+
<%#= link_to 'Delete', '#',class: 'btn btn-danger btn-xs' %>
|
32
|
+
<%= form_tag({controller: :keys, action: :flush}, method: "put") do %>
|
33
|
+
<%= hidden_field_tag :key, key %>
|
34
|
+
<%= submit_tag "Flush" ,class: 'btn btn-danger btn-xs' %>
|
35
|
+
<% end %>
|
36
|
+
</td>
|
37
|
+
</tr>
|
21
38
|
<% end %>
|
22
39
|
</tbody>
|
23
40
|
</table>
|
@@ -1,3 +1,10 @@
|
|
1
|
+
<div class="jumbotron">
|
2
|
+
<h2>Environment: <%= Rails.env.humanize %></h2>
|
3
|
+
<h2>Cache Store: <%= Rails.cache.class %></h2>
|
4
|
+
</div>
|
5
|
+
|
6
|
+
|
7
|
+
<% if @stats.present? %>
|
1
8
|
<table class="table">
|
2
9
|
<thead>
|
3
10
|
<tr>
|
@@ -7,14 +14,15 @@
|
|
7
14
|
</thead>
|
8
15
|
<tbody>
|
9
16
|
<% @stats.each_pair do |key, value| %>
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
17
|
+
<tr>
|
18
|
+
<td>
|
19
|
+
<%= key.humanize %>
|
20
|
+
</td>
|
21
|
+
<td>
|
22
|
+
<%= value %>
|
23
|
+
</td>
|
24
|
+
</tr>
|
18
25
|
<% end %>
|
19
26
|
</tbody>
|
20
|
-
</table>
|
27
|
+
</table>
|
28
|
+
<% end %>
|
@@ -12,8 +12,11 @@
|
|
12
12
|
<%= render partial: 'shared/navbar' %>
|
13
13
|
<div class="container">
|
14
14
|
<div class="row">
|
15
|
+
<% if notice.present? %>
|
16
|
+
<div class="alert alert-success" role="alert"><%= notice %></div>
|
17
|
+
<% end %>
|
15
18
|
<%= yield %>
|
16
19
|
</div>
|
17
20
|
</div>
|
18
21
|
</body>
|
19
|
-
</html>
|
22
|
+
</html>
|
data/config/routes.rb
CHANGED
data/lib/cache_manager/engine.rb
CHANGED
@@ -1,5 +1,19 @@
|
|
1
1
|
module CacheManager
|
2
2
|
class Engine < ::Rails::Engine
|
3
3
|
isolate_namespace CacheManager
|
4
|
+
|
5
|
+
initializer :assets do |app|
|
6
|
+
Rails.application.config.assets.precompile += %w( cm.css )
|
7
|
+
Rails.application.config.assets.precompile += %w( cm.js )
|
8
|
+
|
9
|
+
# number of complex assets.
|
10
|
+
Rails.application.config.assets.debug = true
|
11
|
+
Rails.application.config.assets.raise_runtime_errors = true
|
12
|
+
|
13
|
+
# Asset digests allow you to set far-future HTTP expiration dates on all assets,
|
14
|
+
# yet still be able to expire them through the digest params.
|
15
|
+
Rails.application.config.assets.digest = true
|
16
|
+
|
17
|
+
end
|
4
18
|
end
|
5
19
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cache_manager
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ankit Gupta
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-08-
|
11
|
+
date: 2015-08-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -24,20 +24,6 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 4.2.3
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: sqlite3
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
34
|
-
type: :development
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ">="
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
41
27
|
description: Cache manager helps in managing your cache and it's keys
|
42
28
|
email:
|
43
29
|
- ankit.gupta8898@gmail.com
|
@@ -47,8 +33,11 @@ extra_rdoc_files: []
|
|
47
33
|
files:
|
48
34
|
- MIT-LICENSE
|
49
35
|
- Rakefile
|
36
|
+
- Readme.md
|
50
37
|
- app/assets/javascripts/cache_manager/application.js
|
38
|
+
- app/assets/javascripts/cm.js
|
51
39
|
- app/assets/stylesheets/cache_manager/application.css
|
40
|
+
- app/assets/stylesheets/cm.css
|
52
41
|
- app/controllers/cache_manager/application_controller.rb
|
53
42
|
- app/controllers/cache_manager/keys_controller.rb
|
54
43
|
- app/controllers/cache_manager/stats_controller.rb
|