redis_code_cov 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: dbf830f7068c2feeb7a459001b848f76c412cfe2
4
- data.tar.gz: 57353c390b935cc3c71bd681be371a82a824b8de
3
+ metadata.gz: 9bafd4bef8600c1c81dac3d67786651f3a7c18aa
4
+ data.tar.gz: f178a593a202deecc8a9d55e07a7b987ed8d01af
5
5
  SHA512:
6
- metadata.gz: 474ccd951655cc932dc6c2c0426050a2c1559953314d38e86e810d3ab027c6b121695bcb609073024efdda2034ff02537def5337b00457426cc1d815f6b0b453
7
- data.tar.gz: 99c379eeffefc11f74c68888ed7a52387f7e8246d8ef14241062ef4b37ce078ebc9dc433265c3bb616aaf455d9358b571ebe54084463d95092890c62b4976bd9
6
+ metadata.gz: def78688ebceb1d918e03fad02cb51fd339cffc6df1c8cafff424b0fcb91f4614cfca08f918e2487ec97c30d718af1510fe75f4c69d997e3a163d29eb6c1437a
7
+ data.tar.gz: eead1bfd7808e1406f7d365721e34db3a9c2b641f93e78863e6130304890492eb7078c6dc983944cdd3177e7641a3c579080eef7ab1c01bb9ec364536ee21724
data/README.md CHANGED
@@ -6,8 +6,6 @@ This can be a great tool to see which parts of your code are used often and perh
6
6
 
7
7
  Warning - this is ALPHA quality software, be careful before running it in production. It will increment a Redis counter for EACH method call. Depeneding on your traffic it could slow down your application.
8
8
 
9
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/redis_code_cov`. To experiment with that code, run `bin/console` for an interactive prompt.
10
-
11
9
  ## Installation
12
10
 
13
11
  Add this line to your application's Gemfile:
@@ -26,18 +24,34 @@ Or install it yourself as:
26
24
 
27
25
  ## Usage
28
26
 
29
- Create config/initializers/redis_code_cov.rb:
27
+ After install run `rails g redis_code_cov:install`. Configure the gem in `config/initializers/redis_code_cov.rb`
28
+
29
+ In ApplicationController (or another controller) add:
30
30
  ```ruby
31
- redis_conn = Redis.new(host: 'localhost', port: 6379, db: 0)
32
- REDIS_CODE_COV = Redis::Namespace.new('codecov', redis: redis_conn)
31
+ include RedisCodeCov::Controller
33
32
  ```
34
33
 
35
- In your ApplicationController (or another controller) add
34
+ In ApplicationJob add:
36
35
  ```ruby
37
- include RedisCodeCov::Controller
36
+ include RedisCodeCov::Job
38
37
  ```
39
38
 
40
- TODO - add ability to track method calls in models, views, jobs, etc.
39
+ Data will be stored in Redis DB and namespace configured in the initializer.
40
+
41
+ TODO:
42
+
43
+ write more tests
44
+
45
+ Track method calls in:
46
+ helpers
47
+ mailers
48
+ models
49
+ views
50
+
51
+ For other gems:
52
+ active model serializers
53
+ draper decorators
54
+ pundit policies
41
55
 
42
56
  ## Development
43
57
 
@@ -0,0 +1,2 @@
1
+ Description:
2
+ Generates an initializer file for gem config
@@ -0,0 +1,11 @@
1
+ module RedisCodeCov
2
+ module Generators
3
+ class InstallGenerator < ::Rails::Generators::Base
4
+ source_root File.expand_path(File.join(File.dirname(__FILE__), 'templates'))
5
+
6
+ def copy_initializer
7
+ template 'redis_code_cov.rb', 'config/initializers/redis_code_cov.rb'
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,12 @@
1
+ # => specify host connection here or in environment specific file.
2
+ # => you can choose NOT to use namespaces or specify different driver (like :hiredis)
3
+ if Rails.env.test?
4
+ REDIS_CODE_COV = Redis::Namespace.new(:codecov, redis: MockRedis.new )
5
+ else
6
+ redis_conn = Redis.new(host: 'localhost', port: 6379, db: 0)
7
+ REDIS_CODE_COV = Redis::Namespace.new(:codecov, redis: redis_conn)
8
+ end
9
+
10
+ # => optional exclusion list of which methods NOT to record
11
+ # => EXCLUDE_REDIS_CODE_COV = ['MyController.index', 'MyModel.method_name']
12
+ EXCLUDE_REDIS_CODE_COV = []
@@ -3,18 +3,53 @@ require "active_support/concern"
3
3
  require "redis"
4
4
  require "redis-namespace"
5
5
  require "readthis"
6
+ #require "after_do"
6
7
 
7
8
  module RedisCodeCov
8
9
 
10
+ # common code for various classes (controller, models, etc)
11
+ module Base
12
+ def redis_code_cov key
13
+ # => increment the counter unless ClassName.method_name is specifically excluded in initializer
14
+ REDIS_CODE_COV.incr key unless EXCLUDE_REDIS_CODE_COV.include? key
15
+ rescue Exception => e
16
+ # => TODO - for now just doing nothing
17
+ end
18
+ end
19
+
20
+ # controller specific code
9
21
  module Controller
22
+ include Base
10
23
  extend ActiveSupport::Concern
11
24
  included do
12
- before_action :redis_code_cov
25
+ before_action do
26
+ key = [self.class.name, params[:action]].join('.')
27
+ redis_code_cov key
28
+ end
13
29
  end
14
- def redis_code_cov
15
- key = [self.class.name, params[:action]].join('.')
16
- REDIS_CODE_COV.incr key
30
+ end
31
+
32
+ # active job code
33
+ module Job
34
+ include Base
35
+ extend ActiveSupport::Concern
36
+ included do
37
+ before_perform do |job|
38
+ # => TODO - figure out how to call it before other methods in the job class
39
+ key = [self.class.name, 'perform'].join('.')
40
+ redis_code_cov key
41
+ end
17
42
  end
18
43
  end
19
44
 
45
+ # # TODO
46
+ # module View
47
+ # end
48
+ # module Model
49
+ # end
50
+ # module Helper
51
+ # end
52
+ # module Mailer
53
+ # end
54
+
20
55
  end
@@ -1,3 +1,3 @@
1
1
  module RedisCodeCov
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -31,11 +31,13 @@ Gem::Specification.new do |spec|
31
31
  spec.add_development_dependency "bundler", "~> 1.12"
32
32
  spec.add_development_dependency "rake", "~> 10.0"
33
33
  spec.add_development_dependency "rspec", "~> 3.0"
34
-
35
34
  # =>
36
- spec.add_runtime_dependency 'activesupport'
35
+ spec.add_development_dependency 'mock_redis', '~> 0.17', '>= 0.17.0'
36
+ # =>
37
+ spec.add_runtime_dependency 'activesupport', '~> 4.2', '>= 4.2.7'
37
38
  spec.add_runtime_dependency 'redis', '~> 3.3'
38
39
  spec.add_runtime_dependency 'redis-namespace', '~> 1.5'
39
- spec.add_runtime_dependency 'readthis'
40
+ spec.add_runtime_dependency 'readthis', '~> 1.3', '>= 1.3.0'
40
41
  #spec.add_runtime_dependency 'hiredis', '~> 0.6'
42
+ #spec.add_runtime_dependency 'after_do', '~> 0.4', '>= 0.4.0'
41
43
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redis_code_cov
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dmitry Polyakovsky
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-10-06 00:00:00.000000000 Z
11
+ date: 2016-10-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,20 +52,46 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: mock_redis
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '0.17'
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ version: 0.17.0
65
+ type: :development
66
+ prerelease: false
67
+ version_requirements: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - "~>"
70
+ - !ruby/object:Gem::Version
71
+ version: '0.17'
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: 0.17.0
55
75
  - !ruby/object:Gem::Dependency
56
76
  name: activesupport
57
77
  requirement: !ruby/object:Gem::Requirement
58
78
  requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '4.2'
59
82
  - - ">="
60
83
  - !ruby/object:Gem::Version
61
- version: '0'
84
+ version: 4.2.7
62
85
  type: :runtime
63
86
  prerelease: false
64
87
  version_requirements: !ruby/object:Gem::Requirement
65
88
  requirements:
89
+ - - "~>"
90
+ - !ruby/object:Gem::Version
91
+ version: '4.2'
66
92
  - - ">="
67
93
  - !ruby/object:Gem::Version
68
- version: '0'
94
+ version: 4.2.7
69
95
  - !ruby/object:Gem::Dependency
70
96
  name: redis
71
97
  requirement: !ruby/object:Gem::Requirement
@@ -98,16 +124,22 @@ dependencies:
98
124
  name: readthis
99
125
  requirement: !ruby/object:Gem::Requirement
100
126
  requirements:
127
+ - - "~>"
128
+ - !ruby/object:Gem::Version
129
+ version: '1.3'
101
130
  - - ">="
102
131
  - !ruby/object:Gem::Version
103
- version: '0'
132
+ version: 1.3.0
104
133
  type: :runtime
105
134
  prerelease: false
106
135
  version_requirements: !ruby/object:Gem::Requirement
107
136
  requirements:
137
+ - - "~>"
138
+ - !ruby/object:Gem::Version
139
+ version: '1.3'
108
140
  - - ">="
109
141
  - !ruby/object:Gem::Version
110
- version: '0'
142
+ version: 1.3.0
111
143
  description: For every method call in prod it will increment a Redis counter ClassName.method_name. Be
112
144
  careful about performance impact
113
145
  email:
@@ -127,6 +159,9 @@ files:
127
159
  - Rakefile
128
160
  - bin/console
129
161
  - bin/setup
162
+ - lib/generators/redis_code_cov/install/USAGE
163
+ - lib/generators/redis_code_cov/install/install_generator.rb
164
+ - lib/generators/redis_code_cov/install/templates/redis_code_cov.rb
130
165
  - lib/redis_code_cov.rb
131
166
  - lib/redis_code_cov/version.rb
132
167
  - redis_code_cov.gemspec