redis_wrapper_rails 0.1.0
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.
- data/README.md +0 -0
- data/Rakefile +19 -0
- data/lib/redis_wrapper_rails/rails/log_subscriber.rb +29 -0
- data/lib/redis_wrapper_rails/rails/railtie.rb +22 -0
- data/lib/redis_wrapper_rails/rails/railties/controller_runtime.rb +35 -0
- data/lib/redis_wrapper_rails/rails/redis_instrumentation.rb +21 -0
- data/lib/redis_wrapper_rails/rails/tasks.rb +0 -0
- data/lib/redis_wrapper_rails/rails.rb +8 -0
- data/lib/redis_wrapper_rails.rb +2 -0
- data/redis_wrapper_rails.gemspec +44 -0
- metadata +79 -0
data/README.md
ADDED
File without changes
|
data/Rakefile
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
if File.exist?(redis_wrapper_lib = File.expand_path(File.join(File.dirname(__FILE__), '..', 'redis_wrapper', 'lib')))
|
4
|
+
STDERR.puts("Using redis_wrapper lib at #{redis_wrapper_lib}")
|
5
|
+
$: << redis_wrapper_lib
|
6
|
+
end
|
7
|
+
|
8
|
+
desc "Run all tests"
|
9
|
+
RSpec::Core::RakeTask.new(:spec) do |t|
|
10
|
+
t.rspec_opts = '--format documentation'
|
11
|
+
t.ruby_opts = "-W1"
|
12
|
+
end
|
13
|
+
|
14
|
+
task :default => :spec
|
15
|
+
|
16
|
+
task :environment do
|
17
|
+
end
|
18
|
+
|
19
|
+
FileList['lib/redis_wrapper_rails/rails/tasks.rb'].each { |file| load(file) }
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module RedisWrapper
|
2
|
+
module Rails
|
3
|
+
class LogSubscriber < ActiveSupport::LogSubscriber
|
4
|
+
def self.runtime=(value)
|
5
|
+
Thread.current["redis_runtime"] = value
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.runtime
|
9
|
+
Thread.current["redis_runtime"] ||= 0
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.reset_runtime
|
13
|
+
rt, self.runtime = runtime, 0
|
14
|
+
rt
|
15
|
+
end
|
16
|
+
|
17
|
+
def request(event)
|
18
|
+
self.class.runtime += event.duration
|
19
|
+
return unless logger.debug?
|
20
|
+
|
21
|
+
name = '%s (%.1fms)' % ["Redis Request", event.duration]
|
22
|
+
|
23
|
+
debug " #{color(name, RED, true)} [ method: #{event.payload[:method]} #{"| key: " + event.payload[:key] if event.payload[:key].present?}]"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
RedisWrapper::Rails::LogSubscriber.attach_to :redis
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module RedisWrapper
|
2
|
+
module Rails
|
3
|
+
class Railtie < ::Rails::Railtie
|
4
|
+
initializer 'redis_wrapper.init' do
|
5
|
+
require 'redis_wrapper_rails/rails/log_subscriber'
|
6
|
+
RedisWrapper.module_eval{ include Rails::RedisInstrumentation }
|
7
|
+
end
|
8
|
+
|
9
|
+
# Expose redis runtime to controller for logging.
|
10
|
+
initializer "redis_wrapper_rails.log_runtime" do |app|
|
11
|
+
require "redis_wrapper_rails/rails/railties/controller_runtime"
|
12
|
+
ActiveSupport.on_load(:action_controller) do
|
13
|
+
include Rails::Railties::ControllerRuntime
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
rake_tasks do
|
18
|
+
load 'redis_wrapper_rails/rails/tasks.rb'
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module RedisWrapper
|
2
|
+
module Rails
|
3
|
+
module Railties
|
4
|
+
module ControllerRuntime
|
5
|
+
extend ActiveSupport::Concern
|
6
|
+
|
7
|
+
protected
|
8
|
+
|
9
|
+
attr_internal :redis_runtime
|
10
|
+
|
11
|
+
def cleanup_view_runtime
|
12
|
+
#TODO: Call only if redis is connected
|
13
|
+
redis_rt_before_render = Rails::LogSubscriber.reset_runtime
|
14
|
+
runtime = super
|
15
|
+
redis_rt_after_render = Rails::LogSubscriber.reset_runtime
|
16
|
+
self.redis_runtime = redis_rt_before_render + redis_rt_after_render
|
17
|
+
runtime - redis_rt_after_render
|
18
|
+
end
|
19
|
+
|
20
|
+
def append_info_to_payload(payload)
|
21
|
+
super
|
22
|
+
payload[:redis_runtime] = redis_runtime
|
23
|
+
end
|
24
|
+
|
25
|
+
module ClassMethods
|
26
|
+
def log_process_action(payload)
|
27
|
+
messages, redis_runtime = super, payload[:redis_runtime]
|
28
|
+
messages << ("Redis: %.1fms" % redis_runtime.to_f) if redis_runtime
|
29
|
+
messages
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module RedisWrapper
|
2
|
+
module Rails
|
3
|
+
module RedisInstrumentation
|
4
|
+
extend ActiveSupport::Concern
|
5
|
+
|
6
|
+
included do
|
7
|
+
alias_method_chain :method_missing, :as_instrumentation
|
8
|
+
end
|
9
|
+
|
10
|
+
module InstanceMethods
|
11
|
+
def method_missing_with_as_instrumentation(method, *args, &block)
|
12
|
+
key = args.first.kind_of?(String) ? args.first : ""
|
13
|
+
ActiveSupport::Notifications.instrument("request.redis",
|
14
|
+
{:method => method, :key=>key}) do
|
15
|
+
method_missing_without_as_instrumentation(method, *args, &block)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
File without changes
|
@@ -0,0 +1,44 @@
|
|
1
|
+
lib = File.expand_path('../../redis_wrapper/lib/', __FILE__)
|
2
|
+
|
3
|
+
$:.unshift(lib) unless $:.include?(lib)
|
4
|
+
|
5
|
+
require 'redis_wrapper/version'
|
6
|
+
|
7
|
+
Gem::Specification.new do |s|
|
8
|
+
s.name = "redis_wrapper_rails"
|
9
|
+
s.version = RedisWrapper::VERSION
|
10
|
+
|
11
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
|
+
s.authors = ["wakemaster39"]
|
13
|
+
s.date = "2012-01-17"
|
14
|
+
s.description = "Provides rails specific functionality for redis-wrapper. Display's key and method calls to redis along with overall access times in the controller logs.'"
|
15
|
+
s.email = "wakemaster39@gmail.com"
|
16
|
+
s.extra_rdoc_files = [
|
17
|
+
"README.md"
|
18
|
+
]
|
19
|
+
|
20
|
+
s.files = `git ls-files`.split("\n")
|
21
|
+
s.test_files = `git ls-files -- {spec,spec,features}/*`.split("\n")
|
22
|
+
s.require_paths = ["lib"]
|
23
|
+
|
24
|
+
s.homepage = "http://github.com/wakemaster39/redis-wrapper"
|
25
|
+
s.licenses = ["MIT"]
|
26
|
+
s.rubygems_version = "1.8.10"
|
27
|
+
s.summary = "Rails specific bindings for redis_wrapper"
|
28
|
+
|
29
|
+
if s.respond_to? :specification_version then
|
30
|
+
s.specification_version = 3
|
31
|
+
|
32
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
33
|
+
s.add_runtime_dependency(%q<redis_wrapper>, RedisWrapper::VERSION)
|
34
|
+
s.add_development_dependency(%q<rspec>, [">= 0"])
|
35
|
+
else
|
36
|
+
s.add_dependency(%q<redis_wrapper>, RedisWrapper::VERSION)
|
37
|
+
s.add_dependency(%q<rspec>, [">= 0"])
|
38
|
+
end
|
39
|
+
else
|
40
|
+
s.add_dependency(%q<redis_wrapper>, RedisWrapper::VERSION)
|
41
|
+
s.add_dependency(%q<rspec>, [">= 0"])
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
metadata
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: redis_wrapper_rails
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- wakemaster39
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-01-17 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: redis_wrapper
|
16
|
+
requirement: &19103260 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - =
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 0.1.0
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *19103260
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rspec
|
27
|
+
requirement: &19102720 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :development
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *19102720
|
36
|
+
description: Provides rails specific functionality for redis-wrapper. Display's key
|
37
|
+
and method calls to redis along with overall access times in the controller logs.'
|
38
|
+
email: wakemaster39@gmail.com
|
39
|
+
executables: []
|
40
|
+
extensions: []
|
41
|
+
extra_rdoc_files:
|
42
|
+
- README.md
|
43
|
+
files:
|
44
|
+
- README.md
|
45
|
+
- Rakefile
|
46
|
+
- lib/redis_wrapper_rails.rb
|
47
|
+
- lib/redis_wrapper_rails/rails.rb
|
48
|
+
- lib/redis_wrapper_rails/rails/log_subscriber.rb
|
49
|
+
- lib/redis_wrapper_rails/rails/railtie.rb
|
50
|
+
- lib/redis_wrapper_rails/rails/railties/controller_runtime.rb
|
51
|
+
- lib/redis_wrapper_rails/rails/redis_instrumentation.rb
|
52
|
+
- lib/redis_wrapper_rails/rails/tasks.rb
|
53
|
+
- redis_wrapper_rails.gemspec
|
54
|
+
homepage: http://github.com/wakemaster39/redis-wrapper
|
55
|
+
licenses:
|
56
|
+
- MIT
|
57
|
+
post_install_message:
|
58
|
+
rdoc_options: []
|
59
|
+
require_paths:
|
60
|
+
- lib
|
61
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
62
|
+
none: false
|
63
|
+
requirements:
|
64
|
+
- - ! '>='
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: '0'
|
67
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
68
|
+
none: false
|
69
|
+
requirements:
|
70
|
+
- - ! '>='
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: '0'
|
73
|
+
requirements: []
|
74
|
+
rubyforge_project:
|
75
|
+
rubygems_version: 1.8.10
|
76
|
+
signing_key:
|
77
|
+
specification_version: 3
|
78
|
+
summary: Rails specific bindings for redis_wrapper
|
79
|
+
test_files: []
|