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 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,8 @@
1
+ require 'redis_wrapper'
2
+
3
+ module RedisWrapper
4
+ module Rails
5
+ autoload :RedisInstrumentation, File.join(File.dirname(__FILE__), "rails" ,'redis_instrumentation')
6
+ # Your code goes here...
7
+ end
8
+ end
@@ -0,0 +1,2 @@
1
+ require 'redis_wrapper_rails/rails'
2
+ require 'redis_wrapper_rails/rails/railtie'
@@ -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: []