statify 0.1.0 → 0.1.1

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 2aaaa4b73b1745e8e89525bac18f9bddd12b6cea
4
+ data.tar.gz: 0e659c97cb0c2f5cfbf06e045ada161dcac8e759
5
+ SHA512:
6
+ metadata.gz: 7f270745229a128bc248898a33b01b2bfa0e36c4dcefc9e5b7efa2324cb4e66f05306b46e70acf6613c6e968f33be753aa29adf542a8b4ba9ed2278e0c35f022
7
+ data.tar.gz: 9549f3b21247da82c4b202870f02f3f2f61a48a0aa4df46d521ea83432c9112c078cf60f6d1bdad932a64263fbcbc4b28e531c600a3c5ecb045a67889f3025c2
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.0.0
4
+ - 1.9.3
@@ -1,6 +1,9 @@
1
1
  === Changelog
2
2
 
3
- === 0.0.2
3
+ === 0.1.1
4
+ - People are having problems saying that statsd isn't a dependency. So I added it to the Gemfile (Issue #1)
5
+
6
+ === 0.1.0
4
7
  - Adding statsd and statsd-ruby as actual dependencies
5
8
  - Adding changelog
6
9
 
data/Gemfile CHANGED
@@ -2,13 +2,12 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in statify.gemspec
4
4
  gemspec
5
+ gem 'statsd', '~> 0.5.4'
6
+ gem "statsd-ruby", '~> 1.2.0'#, :require => "statsd"
5
7
 
6
- gem "statsd-ruby", :require => "statsd"
7
8
  # We need atleast activesupport
8
9
  gem 'rails', '~> 3.0'
9
10
 
10
- gem 'debugger'
11
-
12
11
  group :deveopment, :test do
13
12
  gem 'rspec-rails'
14
13
  end
data/README.md CHANGED
@@ -1,10 +1,12 @@
1
1
  # Statify
2
2
 
3
- Pop this gem in your rails >= 3 application. This gem will utilize a statsd instance and easily track basic performance stats for your application. This gem can track the following:
3
+ [![Build Status](https://travis-ci.org/Spokeo/statify.png?branch=master)](https://travis-ci.org/Spokeo/statify)
4
4
 
5
- - Performance stats broken down by controller and action and further broken down by view rendering times and SQL duration times.
6
- - SQL calls durations
7
- - Ruby garbage collection stats (this will run after every controller response)
5
+ Pop this gem in your rails >= 3 application. Simply give this gem the location of your statsd instance and it can seamlessly track the following:
6
+
7
+ - Performance stats broken down by controller and action and further broken down by view, database, and overall runtimes
8
+ - Overall SQL calls durations
9
+ - Ruby garbage collection stats (this will run after every controller response cycle)
8
10
  - Cache hit and miss rates
9
11
 
10
12
  ## Installation
@@ -34,10 +36,16 @@ In your Rails App put these following lines in your config/application.rb:
34
36
 
35
37
  Obviously put in the address of your own statsD ip address and port into the statsd.new call. The categories are opt-in, so put in what you want to use.
36
38
 
39
+ ### Ruby Notes
40
+
41
+ Ruby 1.8.7: 1.8.7 has a different call for GC stats that I haven't looked into it yet. You can install this gem on your 1.8.7 codebase for now just omit the garbage_collection category.
42
+
43
+
44
+
37
45
 
38
46
  ### Supported categories
39
47
 
40
- - garbage_collection
48
+ - garbage_collection
41
49
  - controller
42
50
  - cache
43
51
  - sql
data/Rakefile CHANGED
@@ -19,6 +19,6 @@ require 'rspec/core'
19
19
  require 'rspec/core/rake_task'
20
20
 
21
21
  desc "Run all specs in spec directory (excluding plugin specs)"
22
- RSpec::Core::RakeTask.new(:spec => 'app:db:test:prepare')
22
+ RSpec::Core::RakeTask.new(:spec => 'app:db:migrate')
23
23
 
24
24
  task :default => :spec
@@ -22,64 +22,72 @@ module Statify
22
22
 
23
23
  def self.categories=(categories)
24
24
  @@categories = categories
25
+
26
+ # If you're running ruby-1.8.7 and your trying to get GC stats
27
+ if @@categories.include?(:garbage_collection)
28
+ if RUBY_VERSION < '1.9'
29
+ # Fail and tell the user to remove the GC stats
30
+ fail "The GC stats don't work in Ruby 1.8.7. Please remove the :grabage_collection from the categories"
31
+ @@stats.delete(:grabage_collection)
32
+ end
33
+ end
25
34
  end
26
35
 
27
36
  def self.categories
28
37
  @@categories
29
38
  end
30
39
 
31
-
32
40
  def self.subscribe
33
41
  if Statify.categories.include?(:sql)
34
- # This should give us reports on response times to queries
35
- ActiveSupport::Notifications.subscribe "sql.active_record" do |*args|
36
- event = ActiveSupport::Notifications::Event.new(*args)
37
- # Don't include explains or schema DB calls
38
- unless ["EXPLAIN", "SCHEMA"].include?(event.payload[:name])
39
- # # We are hoping this gives us basic metris for query durations for us to track.
40
- @@statsd.timing "#{event.name}", event.duration
41
- end
42
+ # This should give us reports on response times to queries
43
+ ActiveSupport::Notifications.subscribe "sql.active_record" do |*args|
44
+ event = ActiveSupport::Notifications::Event.new(*args)
45
+ # Don't include explains or schema DB calls
46
+ unless ["EXPLAIN", "SCHEMA"].include?(event.payload[:name])
47
+ # # We are hoping this gives us basic metris for query durations for us to track.
48
+ @@statsd.timing "#{event.name}", event.duration
42
49
  end
43
50
  end
51
+ end
44
52
 
45
- if Statify.categories.include?(:garbage_collection) || Statify.categories.include?(:controller)
46
- # This should give us reports on average response times by controller and action
47
- ActiveSupport::Notifications.subscribe "process_action.action_controller" do |*args|
48
- event = ActiveSupport::Notifications::Event.new(*args)
49
-
50
- if Statify.categories.include?(:garbage_collection)
51
- # Let's log the GC
52
- gc_stats = GC::stat
53
- @@statsd.count('gc_count', gc_stats[:count])
54
- @@statsd.count('gc_heap_used', gc_stats[:heap_used])
55
- @@statsd.count('gc_heap_length', gc_stats[:heap_length])
56
- @@statsd.count('gc_heap_increment', gc_stats[:heap_increment])
57
- @@statsd.count('gc_heap_live_num', gc_stats[:heap_live_num])
58
- @@statsd.count('gc_heap_free_num', gc_stats[:heap_live_num])
59
- @@statsd.count('gc_heap_final_num', gc_stats[:heap_live_num])
60
- end
53
+ if Statify.categories.include?(:garbage_collection) || Statify.categories.include?(:controller)
54
+ # This should give us reports on average response times by controller and action
55
+ ActiveSupport::Notifications.subscribe "process_action.action_controller" do |*args|
56
+ event = ActiveSupport::Notifications::Event.new(*args)
57
+
58
+ if Statify.categories.include?(:garbage_collection)
59
+ # Let's log the GC
60
+ gc_stats = GC::stat
61
+ @@statsd.count('gc_count', gc_stats[:count])
62
+ @@statsd.count('gc_heap_used', gc_stats[:heap_used])
63
+ @@statsd.count('gc_heap_length', gc_stats[:heap_length])
64
+ @@statsd.count('gc_heap_increment', gc_stats[:heap_increment])
65
+ @@statsd.count('gc_heap_live_num', gc_stats[:heap_live_num])
66
+ @@statsd.count('gc_heap_free_num', gc_stats[:heap_live_num])
67
+ @@statsd.count('gc_heap_final_num', gc_stats[:heap_live_num])
68
+ end
61
69
 
62
- if Statify.categories.include?(:controller)
63
- # Track overall, db and view durations
64
- @@statsd.timing "overall_duration|#{event.payload[:controller]}/#{event.payload[:action]}", event.duration
65
- @@statsd.timing "db_runtime|#{event.payload[:controller]}/#{event.payload[:action]}", event.payload[:db_runtime]
66
- @@statsd.timing "view_runtime|#{event.payload[:controller]}/#{event.payload[:action]}", event.payload[:view_runtime]
67
- end
70
+ if Statify.categories.include?(:controller)
71
+ # Track overall, db and view durations
72
+ @@statsd.timing "overall_duration|#{event.payload[:controller]}/#{event.payload[:action]}", event.duration
73
+ @@statsd.timing "db_runtime|#{event.payload[:controller]}/#{event.payload[:action]}", event.payload[:db_runtime]
74
+ @@statsd.timing "view_runtime|#{event.payload[:controller]}/#{event.payload[:action]}", event.payload[:view_runtime]
68
75
  end
69
76
  end
77
+ end
70
78
 
71
- if Statify.categories.include?(:cache)
72
- # I want to keep track of how many cache hits we get as opposed to cache misses
73
- ActiveSupport::Notifications.subscribe "cache_fetch_hit.active_support" do |*args|
74
- event = ActiveSupport::Notifications::Event.new(*args)
75
- @@statsd.increment('cache_hit', 1)
76
- end
79
+ if Statify.categories.include?(:cache)
80
+ # I want to keep track of how many cache hits we get as opposed to cache misses
81
+ ActiveSupport::Notifications.subscribe "cache_fetch_hit.active_support" do |*args|
82
+ event = ActiveSupport::Notifications::Event.new(*args)
83
+ @@statsd.increment('cache_hit', 1)
84
+ end
77
85
 
78
- # I want to keep track of how many cache misses we get as opposed to cache hits
79
- ActiveSupport::Notifications.subscribe "cache_write.active_support" do |*args|
80
- event = ActiveSupport::Notifications::Event.new(*args)
81
- @@statsd.increment('cache_miss', 1)
82
- end
86
+ # I want to keep track of how many cache misses we get as opposed to cache hits
87
+ ActiveSupport::Notifications.subscribe "cache_write.active_support" do |*args|
88
+ event = ActiveSupport::Notifications::Event.new(*args)
89
+ @@statsd.increment('cache_miss', 1)
83
90
  end
91
+ end
84
92
  end
85
93
  end
@@ -1,3 +1,3 @@
1
1
  module Statify
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -10,7 +10,7 @@ Gem::Specification.new do |gem|
10
10
  gem.email = ["austin@spokeo.com"]
11
11
  gem.description = "Pop this gem in your rails >= 3 application. This gem will utilize statsd and easily track basic performance stats for your application."
12
12
  gem.summary = "Pop this gem in your rails >= 3 application. This gem will utilize statsd and easily track basic performance stats for your application."
13
- gem.homepage = "http://www.spokeo.com"
13
+ gem.homepage = "https://github.com/spokeo/statify"
14
14
 
15
15
  gem.files = `git ls-files`.split($/)
16
16
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
@@ -23,6 +23,6 @@ Gem::Specification.new do |gem|
23
23
  gem.add_development_dependency 'rails'
24
24
  gem.add_development_dependency 'statsd'
25
25
 
26
- gem.add_dependency 'statsd'
27
- gem.add_dependency 'statsd-ruby'
26
+ gem.add_dependency 'statsd', '~> 0.5.4'
27
+ gem.add_dependency 'statsd-ruby', '~> 1.2.0'
28
28
  end
metadata CHANGED
@@ -1,128 +1,113 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: statify
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
5
- prerelease:
4
+ version: 0.1.1
6
5
  platform: ruby
7
6
  authors:
8
7
  - Austin Fonacier
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-02-25 00:00:00.000000000 Z
11
+ date: 2013-03-14 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rake
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :development
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - '>='
28
25
  - !ruby/object:Gem::Version
29
26
  version: '0'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: rspec
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - '>='
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - '>='
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: sqlite3
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - '>='
52
46
  - !ruby/object:Gem::Version
53
47
  version: '0'
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - '>='
60
53
  - !ruby/object:Gem::Version
61
54
  version: '0'
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: rails
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
- - - ! '>='
59
+ - - '>='
68
60
  - !ruby/object:Gem::Version
69
61
  version: '0'
70
62
  type: :development
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
- - - ! '>='
66
+ - - '>='
76
67
  - !ruby/object:Gem::Version
77
68
  version: '0'
78
69
  - !ruby/object:Gem::Dependency
79
70
  name: statsd
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
- - - ! '>='
73
+ - - '>='
84
74
  - !ruby/object:Gem::Version
85
75
  version: '0'
86
76
  type: :development
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
- - - ! '>='
80
+ - - '>='
92
81
  - !ruby/object:Gem::Version
93
82
  version: '0'
94
83
  - !ruby/object:Gem::Dependency
95
84
  name: statsd
96
85
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
86
  requirements:
99
- - - ! '>='
87
+ - - ~>
100
88
  - !ruby/object:Gem::Version
101
- version: '0'
89
+ version: 0.5.4
102
90
  type: :runtime
103
91
  prerelease: false
104
92
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
93
  requirements:
107
- - - ! '>='
94
+ - - ~>
108
95
  - !ruby/object:Gem::Version
109
- version: '0'
96
+ version: 0.5.4
110
97
  - !ruby/object:Gem::Dependency
111
98
  name: statsd-ruby
112
99
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
100
  requirements:
115
- - - ! '>='
101
+ - - ~>
116
102
  - !ruby/object:Gem::Version
117
- version: '0'
103
+ version: 1.2.0
118
104
  type: :runtime
119
105
  prerelease: false
120
106
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
107
  requirements:
123
- - - ! '>='
108
+ - - ~>
124
109
  - !ruby/object:Gem::Version
125
- version: '0'
110
+ version: 1.2.0
126
111
  description: Pop this gem in your rails >= 3 application. This gem will utilize statsd
127
112
  and easily track basic performance stats for your application.
128
113
  email:
@@ -133,6 +118,7 @@ extra_rdoc_files: []
133
118
  files:
134
119
  - .gitignore
135
120
  - .rspec
121
+ - .travis.yml
136
122
  - CHANGELOG.rdoc
137
123
  - Gemfile
138
124
  - LICENSE.txt
@@ -207,35 +193,28 @@ files:
207
193
  - spec/spec_helper.rb
208
194
  - spec/sql_notification_spec.rb
209
195
  - statify.gemspec
210
- homepage: http://www.spokeo.com
196
+ homepage: https://github.com/spokeo/statify
211
197
  licenses: []
198
+ metadata: {}
212
199
  post_install_message:
213
200
  rdoc_options: []
214
201
  require_paths:
215
202
  - lib
216
203
  required_ruby_version: !ruby/object:Gem::Requirement
217
- none: false
218
204
  requirements:
219
- - - ! '>='
205
+ - - '>='
220
206
  - !ruby/object:Gem::Version
221
207
  version: '0'
222
- segments:
223
- - 0
224
- hash: 3261311351692405632
225
208
  required_rubygems_version: !ruby/object:Gem::Requirement
226
- none: false
227
209
  requirements:
228
- - - ! '>='
210
+ - - '>='
229
211
  - !ruby/object:Gem::Version
230
212
  version: '0'
231
- segments:
232
- - 0
233
- hash: 3261311351692405632
234
213
  requirements: []
235
214
  rubyforge_project:
236
- rubygems_version: 1.8.25
215
+ rubygems_version: 2.0.0
237
216
  signing_key:
238
- specification_version: 3
217
+ specification_version: 4
239
218
  summary: Pop this gem in your rails >= 3 application. This gem will utilize statsd
240
219
  and easily track basic performance stats for your application.
241
220
  test_files: