liquid-ext 1.2.6 → 2.0.0

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: de07920fe9812a1175330442c78423682738194e
4
- data.tar.gz: a85070567b1a1f111c26321b900be5e2279bda6a
3
+ metadata.gz: 0f7d145d1f48227703e304c99775bac339161231
4
+ data.tar.gz: 7f9cb4dc4191cfb32a0f5ee100f2ff53aa6f0a66
5
5
  SHA512:
6
- metadata.gz: f42212fd4f6ddd1baa9d58f5ad288c663cb45eba279a97ce37a74b13eb32186fae19ace1f3a52868b50d973d9069455884d1614b119dc432d9b4ab440aa33529
7
- data.tar.gz: 7a1caac0680abee5784515232eb02ed693083f7b5e4d0710215b52313f158c63f5031f47e440582736ac6491ae0e106a10ad67147c8d37026d818b8b1b71a74e
6
+ metadata.gz: 0bc4029f4c802e501359f96fdb0e1336a4153ef927c8154357dcd00d6ba257a1294ed47c0bd870b9ca429b7ed55ddc9b7f6f5a662687b503a53ad1c09ab8d6e3
7
+ data.tar.gz: e955589d37421c4a257154a617514ceda2b7ff44c06947e78195c072203d52b44a5877e193fcc4dd9132f3d09ab260a5f9eafa451f5928e09f3281a3d4f48aca
data/.gitignore CHANGED
@@ -2,8 +2,8 @@
2
2
  *.rbc
3
3
  .bundle
4
4
  .config
5
+ .jbundler/
5
6
  .yardoc
6
- Gemfile.lock
7
7
  InstalledFiles
8
8
  _yardoc
9
9
  coverage
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ jruby
data/.travis.yml CHANGED
@@ -1,8 +1,13 @@
1
1
  language: ruby
2
2
  rvm:
3
3
  - jruby
4
- - 2.0.0
5
- - 1.9.3
4
+ env:
5
+ - JRUBY_OPTS="--debug -J-Xmx4g -J-XX:MaxPermSize=1g"
6
+ install:
7
+ - bundle install --without development --deployment
8
+ - bundle exec lockjar install
9
+ script:
10
+ - bundle exec rspec --format documentation
6
11
  notifications:
7
12
  email: false
8
13
  hipchat:
data/Gemfile CHANGED
@@ -1,7 +1,6 @@
1
- source 'https://rubygems.org'
1
+ source 'http://rubygems.org'
2
2
 
3
3
  gemspec
4
4
 
5
- group :development, :test do
6
- gem "liquid-development"
7
- end
5
+ gem 'lock_jar'
6
+ gem 'liquid-development'
data/Gemfile.lock ADDED
@@ -0,0 +1,133 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ liquid-ext (2.0.0)
5
+ activesupport
6
+ erubis
7
+ liquid-logging (>= 2.0.0)
8
+ mixlib-cli
9
+ terminal-table
10
+
11
+ GEM
12
+ remote: http://rubygems.org/
13
+ specs:
14
+ activesupport (4.0.2)
15
+ i18n (~> 0.6, >= 0.6.4)
16
+ minitest (~> 4.2)
17
+ multi_json (~> 1.3)
18
+ thread_safe (~> 0.1)
19
+ tzinfo (~> 0.3.37)
20
+ atomic (1.1.14-java)
21
+ awesome_print (1.2.0)
22
+ bond (0.4.3-java)
23
+ brice (0.2.9)
24
+ ruby-nuggets (>= 0.5.2)
25
+ cane (2.6.1)
26
+ parallel
27
+ coderay (1.1.0)
28
+ columnize (0.3.6)
29
+ diff-lcs (1.2.5)
30
+ docile (1.1.2)
31
+ erubis (2.7.0)
32
+ ffi (1.9.3-java)
33
+ fuubar (1.3.2)
34
+ rspec (>= 2.14.0, < 3.1.0)
35
+ ruby-progressbar (~> 1.3)
36
+ i18n (0.6.9)
37
+ liquid-development (0.1.2)
38
+ awesome_print
39
+ brice
40
+ cane
41
+ fuubar
42
+ pry
43
+ rake
44
+ reek
45
+ ripl
46
+ rspec
47
+ ruby-debug
48
+ simplecov
49
+ tailor
50
+ timecop
51
+ yard
52
+ liquid-logging (2.0.1-java)
53
+ log4jruby (~> 1.0.0.rc1)
54
+ slyphon-log4j (~> 1.2.15)
55
+ lock_jar (0.7.5)
56
+ naether (~> 0.10.1)
57
+ thor (~> 0.18.1)
58
+ log4jruby (1.0.0.rc1-java)
59
+ log_switch (0.4.0)
60
+ method_source (0.8.2)
61
+ mini_portile (0.5.2)
62
+ minitest (4.7.5)
63
+ mixlib-cli (1.4.0)
64
+ multi_json (1.8.4)
65
+ naether (0.10.1-java)
66
+ nokogiri (1.6.1-java)
67
+ mini_portile (~> 0.5.0)
68
+ parallel (0.9.2)
69
+ pry (0.9.12.6-java)
70
+ coderay (~> 1.0)
71
+ method_source (~> 0.8)
72
+ slop (~> 3.4)
73
+ spoon (~> 0.0)
74
+ rake (10.1.1)
75
+ reek (1.3.6)
76
+ ruby2ruby (~> 2.0.7)
77
+ ruby_parser (~> 3.2)
78
+ sexp_processor
79
+ ripl (0.7.0)
80
+ bond (~> 0.4.2)
81
+ rspec (2.14.1)
82
+ rspec-core (~> 2.14.0)
83
+ rspec-expectations (~> 2.14.0)
84
+ rspec-mocks (~> 2.14.0)
85
+ rspec-core (2.14.7)
86
+ rspec-expectations (2.14.4)
87
+ diff-lcs (>= 1.1.3, < 2.0)
88
+ rspec-mocks (2.14.4)
89
+ ruby-debug (0.10.4)
90
+ columnize (>= 0.1)
91
+ ruby-debug-base (~> 0.10.4.0)
92
+ ruby-debug-base (0.10.4-java)
93
+ ruby-nuggets (0.9.6)
94
+ ruby-progressbar (1.4.1)
95
+ ruby2ruby (2.0.7)
96
+ ruby_parser (~> 3.1)
97
+ sexp_processor (~> 4.0)
98
+ ruby_parser (3.3.0)
99
+ sexp_processor (~> 4.1)
100
+ sexp_processor (4.4.1)
101
+ simplecov (0.8.2)
102
+ docile (~> 1.1.0)
103
+ multi_json
104
+ simplecov-html (~> 0.8.0)
105
+ simplecov-html (0.8.0)
106
+ slop (3.4.7)
107
+ slyphon-log4j (1.2.15)
108
+ spoon (0.0.4)
109
+ ffi
110
+ tailor (1.4.0)
111
+ log_switch (>= 0.3.0)
112
+ nokogiri (>= 1.6.0)
113
+ term-ansicolor (>= 1.0.5)
114
+ text-table (>= 1.2.2)
115
+ term-ansicolor (1.2.2)
116
+ tins (~> 0.8)
117
+ terminal-table (1.4.5)
118
+ text-table (1.2.3)
119
+ thor (0.18.1)
120
+ thread_safe (0.1.3-java)
121
+ atomic
122
+ timecop (0.7.1)
123
+ tins (0.13.1)
124
+ tzinfo (0.3.38)
125
+ yard (0.8.7.3)
126
+
127
+ PLATFORMS
128
+ java
129
+
130
+ DEPENDENCIES
131
+ liquid-development
132
+ liquid-ext!
133
+ lock_jar
data/Jarfile ADDED
@@ -0,0 +1,2 @@
1
+ jar 'com.codahale.metrics:metrics-core:3.0.1'
2
+ jar 'com.codahale.metrics:metrics-healthchecks:3.0.1'
data/Jarfile.lock ADDED
@@ -0,0 +1,14 @@
1
+ ---
2
+ version: 0.7.5
3
+ groups:
4
+ default:
5
+ dependencies:
6
+ - com.codahale.metrics:metrics-core:jar:3.0.1
7
+ - com.codahale.metrics:metrics-healthchecks:jar:3.0.1
8
+ - org.slf4j:slf4j-api:jar:1.7.5
9
+ artifacts:
10
+ - jar:com.codahale.metrics:metrics-core:jar:3.0.1:
11
+ transitive: {}
12
+ - jar:com.codahale.metrics:metrics-healthchecks:jar:3.0.1:
13
+ transitive:
14
+ org.slf4j:slf4j-api:jar:1.7.5: {}
data/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # Liquid Extensions
2
2
 
3
- The liquid-ext gem provides a bunch of ruby extensions and common startup/runtime code.
3
+ The liquid-ext gem provides a bunch of ruby extensions and common
4
+ startup/runtime code. Only JRuby 1.7 is currently supported.
4
5
 
5
6
  [![Gem Version](https://badge.fury.io/rb/liquid-ext.png)](http://badge.fury.io/rb/liquid-ext)
6
7
  [![Build Status](https://secure.travis-ci.org/liquidm/ext.png)](http://travis-ci.org/liquidm/ext)
@@ -0,0 +1,26 @@
1
+ require 'singleton'
2
+
3
+ java_import 'com.codahale.metrics.health.HealthCheckRegistry'
4
+
5
+ class HealthChecks
6
+ include Singleton
7
+
8
+ attr_reader :registry
9
+
10
+ def initialize
11
+ @registry = HealthCheckRegistry.new
12
+ end
13
+
14
+ def self.registry
15
+ instance.registry
16
+ end
17
+
18
+ def self.register(name, handler)
19
+ registry.register(name, handler)
20
+ end
21
+
22
+ def self.run
23
+ registry.run_health_checks
24
+ end
25
+
26
+ end
@@ -0,0 +1,36 @@
1
+ require 'liquid/metrics/reporter'
2
+
3
+ module Metrics
4
+ class LoggerReporter < Reporter
5
+
6
+ attr_accessor :logger
7
+ attr_accessor :marker
8
+
9
+ def initialize(registry)
10
+ super
11
+ @logger = $log
12
+ @marker = "metriks:"
13
+ end
14
+
15
+ def report_gauge(name, gauge)
16
+ @logger.info(@marker, super)
17
+ end
18
+
19
+ def report_counter(name, counter)
20
+ @logger.info(@marker, super)
21
+ end
22
+
23
+ def report_histogram(name, histogram)
24
+ @logger.info(@marker, super)
25
+ end
26
+
27
+ def report_meter(name, meter)
28
+ @logger.info(@marker, super)
29
+ end
30
+
31
+ def report_timer(name, timer)
32
+ @logger.info(@marker, super)
33
+ end
34
+
35
+ end
36
+ end
@@ -0,0 +1,153 @@
1
+ require 'liquid/metrics'
2
+
3
+ java_import 'com.codahale.metrics.MetricFilter'
4
+ java_import 'java.util.concurrent.Executors'
5
+ java_import 'java.util.concurrent.TimeUnit'
6
+
7
+ module Metrics
8
+ class Reporter
9
+
10
+ attr_accessor :filter
11
+ attr_accessor :rate_unit
12
+ attr_accessor :duration_unit
13
+
14
+ def initialize(registry)
15
+ @registry = registry
16
+ @filter = MetricFilter::ALL
17
+ @executor = Executors.newSingleThreadScheduledExecutor
18
+ self.rate_unit = TimeUnit::SECONDS
19
+ self.duration_unit = TimeUnit::MILLISECONDS
20
+ end
21
+
22
+ def rate_unit=(value)
23
+ @rate_unit = value
24
+ @rate_factor = value.to_seconds(1)
25
+ end
26
+
27
+ def duration_unit=(value)
28
+ @duration_unit = value
29
+ @duration_factor = 1.0 / value.to_nanos(1)
30
+ end
31
+
32
+ def run
33
+ report_gauges
34
+ report_counters
35
+ report_histograms
36
+ report_meters
37
+ report_timers
38
+ rescue => e
39
+ $log.exception(e)
40
+ end
41
+
42
+ def start(period = nil, unit = nil)
43
+ period ||= 10
44
+ unit ||= TimeUnit::SECONDS
45
+ @executor.scheduleAtFixedRate(self, period, period, unit)
46
+ end
47
+
48
+ def stop
49
+ @executor.shutdown
50
+ @executor.awaitTermination(1, TimeUnit::SECONDS) rescue nil
51
+ end
52
+
53
+ def report_gauges
54
+ @registry.gauges.each do |name, gauge|
55
+ report_gauge(name, gauge)
56
+ end
57
+ end
58
+
59
+ def report_counters
60
+ @registry.counters.each do |name, counter|
61
+ report_counter(name, counter)
62
+ end
63
+ end
64
+
65
+ def report_histograms
66
+ @registry.histograms.each do |name, histogram|
67
+ report_histogram(name, histogram)
68
+ end
69
+ end
70
+
71
+ def report_meters
72
+ @registry.meters.each do |name, meter|
73
+ report_meter(name, meter)
74
+ end
75
+ end
76
+
77
+ def report_timers
78
+ @registry.timers.each do |name, timer|
79
+ report_timer(name, timer)
80
+ end
81
+ end
82
+
83
+ def report_gauge(name, gauge)
84
+ {
85
+ type: :gauge,
86
+ name: name,
87
+ value: gauge.value,
88
+ }
89
+ end
90
+
91
+ def report_counter(name, counter)
92
+ {
93
+ type: :counter,
94
+ name: name,
95
+ count: counter.count,
96
+ }
97
+ end
98
+
99
+ def report_histogram(name, histogram)
100
+ snapshot = histogram.snapshot
101
+ {
102
+ type: :histogram,
103
+ name: name,
104
+ count: histogram.count,
105
+ min: snapshot.getMin,
106
+ max: snapshot.getMax,
107
+ mean: snapshot.getMean,
108
+ stdev: snapshot.getStdDev,
109
+ median: snapshot.getMedian,
110
+ :'95th_percentile' => snapshot.get95thPercentile,
111
+ }
112
+ end
113
+
114
+ def report_meter(name, meter)
115
+ {
116
+ type: :meter,
117
+ name: name,
118
+ count: meter.count,
119
+ mean_rate: convert_rate(meter.getMeanRate),
120
+ one_minute_rate: convert_rate(meter.getOneMinuteRate),
121
+ five_minute_rate: convert_rate(meter.getFiveMinuteRate),
122
+ fifteen_minute_rate: convert_rate(meter.getFifteenMinuteRate),
123
+ }
124
+ end
125
+
126
+ def report_timer(name, timer)
127
+ snapshot = timer.snapshot
128
+ {
129
+ type: :timer,
130
+ name: name,
131
+ min: convert_duration(snapshot.getMin),
132
+ max: convert_duration(snapshot.getMax),
133
+ mean: convert_duration(snapshot.getMean),
134
+ stdev: convert_duration(snapshot.getStdDev),
135
+ median: convert_duration(snapshot.getMedian),
136
+ :'95th_percentile' => convert_duration(snapshot.get95thPercentile),
137
+ mean_rate: convert_rate(timer.getMeanRate),
138
+ one_minute_rate: convert_rate(timer.getOneMinuteRate),
139
+ five_minute_rate: convert_rate(timer.getFiveMinuteRate),
140
+ fifteen_minute_rate: convert_rate(timer.getFifteenMinuteRate),
141
+ }
142
+ end
143
+
144
+ def convert_duration(duration)
145
+ (duration * @duration_factor).round(3)
146
+ end
147
+
148
+ def convert_rate(rate)
149
+ (rate * @rate_factor).round(3)
150
+ end
151
+
152
+ end
153
+ end
@@ -0,0 +1,40 @@
1
+ require 'singleton'
2
+
3
+ java_import 'com.codahale.metrics.MetricRegistry'
4
+ java_import 'com.codahale.metrics.JmxReporter'
5
+
6
+ require 'liquid/metrics/logger_reporter'
7
+
8
+ module Metrics
9
+
10
+ @@registry = MetricRegistry.new
11
+
12
+ def self.start
13
+ reporters = [
14
+ JmxReporter.forRegistry(@@registry).build,
15
+ LoggerReporter.new(@@registry),
16
+ ]
17
+ reporters.each(&:start)
18
+ Signal.register_shutdown_handler { reporters.each(&:stop) }
19
+ end
20
+
21
+ def self.registry
22
+ @@registry
23
+ end
24
+
25
+ def self.counter(name)
26
+ registry.counter(name)
27
+ end
28
+
29
+ def self.meter(name)
30
+ registry.meter(name)
31
+ end
32
+
33
+ def self.histogram(name)
34
+ registry.histogram(name)
35
+ end
36
+
37
+ def self.timer(name)
38
+ registry.timer(name)
39
+ end
40
+ end
data/lib/liquid/timing.rb CHANGED
@@ -1,4 +1,4 @@
1
- java_import 'java.lang.System' if RUBY_PLATFORM == 'java'
1
+ java_import 'java.lang.System'
2
2
 
3
3
  module Timing
4
4
  def self.start
@@ -7,17 +7,16 @@ module Timing
7
7
 
8
8
  class TimingContext
9
9
  def initialize
10
- @jruby = RUBY_PLATFORM == 'java'
11
10
  reset!
12
11
  end
13
12
 
14
13
  def reset!
15
- @start = @last_tick = now
14
+ @start = @last_tick = System.nano_time
16
15
  end
17
16
 
18
17
  def tick
19
18
  rt = runtime_since(@last_tick)
20
- @last_tick = now
19
+ @last_tick = System.nano_time
21
20
  rt
22
21
  end
23
22
 
@@ -29,14 +28,9 @@ module Timing
29
28
 
30
29
  private
31
30
 
32
- def now
33
- return System.nano_time if @jruby
34
- return Time.now.to_f
35
- end
36
-
37
31
  def runtime_since(start)
38
- rt = now - start
39
- rt = rt.to_f / 1_000_000_000 if @jruby
32
+ rt = System.nano_time - start
33
+ rt = rt.to_f / 1_000_000_000
40
34
  rt
41
35
  end
42
36
 
data/liquid-ext.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = "liquid-ext"
5
- spec.version = "1.2.6"
5
+ spec.version = "2.0.0"
6
6
  spec.authors = ["LiquidM, Inc."]
7
7
  spec.email = ["opensource@liquidm.com"]
8
8
  spec.description = %q{Ruby core extensions and helper libraries}
@@ -17,9 +17,7 @@ Gem::Specification.new do |spec|
17
17
 
18
18
  spec.add_dependency "activesupport"
19
19
  spec.add_dependency "erubis"
20
- spec.add_dependency "ffi"
21
20
  spec.add_dependency "liquid-logging", ">= 2.0.0"
22
- spec.add_dependency "metriks"
23
21
  spec.add_dependency "mixlib-cli"
24
22
  spec.add_dependency "terminal-table"
25
23
  end
metadata CHANGED
@@ -1,113 +1,85 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: liquid-ext
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.6
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - LiquidM, Inc.
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-20 00:00:00.000000000 Z
11
+ date: 2014-01-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :runtime
21
- prerelease: false
22
15
  version_requirements: !ruby/object:Gem::Requirement
23
16
  requirements:
24
- - - ">="
17
+ - - '>='
25
18
  - !ruby/object:Gem::Version
26
19
  version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: erubis
29
20
  requirement: !ruby/object:Gem::Requirement
30
21
  requirements:
31
- - - ">="
22
+ - - '>='
32
23
  - !ruby/object:Gem::Version
33
24
  version: '0'
34
- type: :runtime
35
25
  prerelease: false
26
+ type: :runtime
27
+ - !ruby/object:Gem::Dependency
28
+ name: erubis
36
29
  version_requirements: !ruby/object:Gem::Requirement
37
30
  requirements:
38
- - - ">="
31
+ - - '>='
39
32
  - !ruby/object:Gem::Version
40
33
  version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: ffi
43
34
  requirement: !ruby/object:Gem::Requirement
44
35
  requirements:
45
- - - ">="
36
+ - - '>='
46
37
  - !ruby/object:Gem::Version
47
38
  version: '0'
48
- type: :runtime
49
39
  prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
40
+ type: :runtime
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: liquid-logging
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: 2.0.0
62
- type: :runtime
63
- prerelease: false
64
43
  version_requirements: !ruby/object:Gem::Requirement
65
44
  requirements:
66
- - - ">="
45
+ - - '>='
67
46
  - !ruby/object:Gem::Version
68
47
  version: 2.0.0
69
- - !ruby/object:Gem::Dependency
70
- name: metriks
71
48
  requirement: !ruby/object:Gem::Requirement
72
49
  requirements:
73
- - - ">="
50
+ - - '>='
74
51
  - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :runtime
52
+ version: 2.0.0
77
53
  prerelease: false
54
+ type: :runtime
55
+ - !ruby/object:Gem::Dependency
56
+ name: mixlib-cli
78
57
  version_requirements: !ruby/object:Gem::Requirement
79
58
  requirements:
80
- - - ">="
59
+ - - '>='
81
60
  - !ruby/object:Gem::Version
82
61
  version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: mixlib-cli
85
62
  requirement: !ruby/object:Gem::Requirement
86
63
  requirements:
87
- - - ">="
64
+ - - '>='
88
65
  - !ruby/object:Gem::Version
89
66
  version: '0'
90
- type: :runtime
91
67
  prerelease: false
68
+ type: :runtime
69
+ - !ruby/object:Gem::Dependency
70
+ name: terminal-table
92
71
  version_requirements: !ruby/object:Gem::Requirement
93
72
  requirements:
94
- - - ">="
73
+ - - '>='
95
74
  - !ruby/object:Gem::Version
96
75
  version: '0'
97
- - !ruby/object:Gem::Dependency
98
- name: terminal-table
99
76
  requirement: !ruby/object:Gem::Requirement
100
77
  requirements:
101
- - - ">="
78
+ - - '>='
102
79
  - !ruby/object:Gem::Version
103
80
  version: '0'
104
- type: :runtime
105
81
  prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - ">="
109
- - !ruby/object:Gem::Version
110
- version: '0'
82
+ type: :runtime
111
83
  description: Ruby core extensions and helper libraries
112
84
  email:
113
85
  - opensource@liquidm.com
@@ -116,10 +88,14 @@ executables:
116
88
  extensions: []
117
89
  extra_rdoc_files: []
118
90
  files:
119
- - ".gitignore"
120
- - ".travis.yml"
121
- - ".yardopts"
91
+ - .gitignore
92
+ - .ruby-version
93
+ - .travis.yml
94
+ - .yardopts
122
95
  - Gemfile
96
+ - Gemfile.lock
97
+ - Jarfile
98
+ - Jarfile.lock
123
99
  - LICENSE
124
100
  - README.md
125
101
  - Rakefile
@@ -133,20 +109,19 @@ files:
133
109
  - lib/liquid/ext/enumerable.rb
134
110
  - lib/liquid/ext/hash.rb
135
111
  - lib/liquid/ext/nil.rb
136
- - lib/liquid/ext/object_space.rb
137
112
  - lib/liquid/ext/ordered_set.rb
138
113
  - lib/liquid/ext/signal.rb
139
114
  - lib/liquid/ext/string.rb
140
115
  - lib/liquid/ext/thread.rb
141
116
  - lib/liquid/from_file.rb
142
- - lib/liquid/gc_stats.rb
143
117
  - lib/liquid/generator.rb
144
118
  - lib/liquid/hash_helper.rb
119
+ - lib/liquid/health_checks.rb
120
+ - lib/liquid/metrics.rb
121
+ - lib/liquid/metrics/logger_reporter.rb
122
+ - lib/liquid/metrics/reporter.rb
145
123
  - lib/liquid/priority_selector.rb
146
- - lib/liquid/proc_stat.rb
147
124
  - lib/liquid/router.rb
148
- - lib/liquid/statistics.rb
149
- - lib/liquid/sysconf.rb
150
125
  - lib/liquid/tasks.rb
151
126
  - lib/liquid/tasks/protoc.rake
152
127
  - lib/liquid/tasks/reek.rake
@@ -174,24 +149,24 @@ homepage: https://github.com/liquidm/ext
174
149
  licenses:
175
150
  - MIT
176
151
  metadata: {}
177
- post_install_message:
152
+ post_install_message:
178
153
  rdoc_options: []
179
154
  require_paths:
180
155
  - lib
181
156
  required_ruby_version: !ruby/object:Gem::Requirement
182
157
  requirements:
183
- - - ">="
158
+ - - '>='
184
159
  - !ruby/object:Gem::Version
185
160
  version: '0'
186
161
  required_rubygems_version: !ruby/object:Gem::Requirement
187
162
  requirements:
188
- - - ">="
163
+ - - '>='
189
164
  - !ruby/object:Gem::Version
190
165
  version: '0'
191
166
  requirements: []
192
- rubyforge_project:
193
- rubygems_version: 2.2.0
194
- signing_key:
167
+ rubyforge_project:
168
+ rubygems_version: 2.2.1
169
+ signing_key:
195
170
  specification_version: 4
196
171
  summary: Ruby core extensions and helper libraries
197
172
  test_files:
@@ -199,4 +174,4 @@ test_files:
199
174
  - spec/lib/liquid/router_spec.rb
200
175
  - spec/lib/liquid/weighted_selector_spec.rb
201
176
  - spec/spec_helper.rb
202
- has_rdoc:
177
+ has_rdoc:
@@ -1,49 +0,0 @@
1
- module Memory
2
- WORD_SIZE = 8
3
- OBJ_SIZE = 40 # some are smaller
4
- OBJ_OVERHEAD = WORD_SIZE + OBJ_SIZE
5
-
6
- def self.size(obj)
7
- return WORD_SIZE if obj.is_a?(Fixnum)
8
-
9
- case obj
10
- when String
11
- obj.size
12
- when Array
13
- obj.size * WORD_SIZE
14
- when Hash
15
- obj.size * WORD_SIZE * 2
16
- #when Enumerable
17
- # result = 0
18
- # obj.each do |ref|
19
- # result += WORD_SIZE
20
- # end
21
- # result
22
- else
23
- 0
24
- end + OBJ_OVERHEAD
25
- rescue => e
26
- puts "failed to get object size for #{obj.inspect}: #{e}"
27
- return OBJ_OVERHEAD
28
- end
29
- end
30
-
31
- module ObjectSpace
32
- def self.memory_stats(*args)
33
- stats = {}
34
-
35
- self.each_object do |obj|
36
- stats[obj.class] ||= []
37
- stats[obj.class] << Memory.size(obj)
38
- end
39
-
40
- stats.map do |cls, sizes|
41
- cnt = sizes.length
42
- sum = sizes.reduce(:+)
43
- avg = sum / cnt
44
- [cls, [cnt, avg, sum]]
45
- end.sort_by do |cls, sizes|
46
- sizes[2]
47
- end.reverse
48
- end
49
- end
@@ -1,68 +0,0 @@
1
- # encoding: utf-8
2
- require 'metriks'
3
- require 'singleton'
4
-
5
- class GCStats
6
- include Singleton
7
-
8
- # RUBY 1.9.X-Implementation
9
- module Yarv
10
- def enable
11
- GC::Profiler.enable
12
- end
13
-
14
- def clear
15
- GC::Profiler.clear
16
- end
17
-
18
- def gather
19
- count_collections
20
- count_allocations
21
- count_objects
22
- Metriks.timer('gc_stats.total_time').update(GC::Profiler.total_time)
23
- end
24
-
25
- def count_collections
26
- Metriks.histogram('gc_stats.collections').update(GC.count)
27
- end
28
-
29
- def count_allocations
30
- allocated_size = GC.respond_to?(:malloc_allocated_size) ? GC.malloc_allocated_size / 1000.0 : 0
31
- Metriks.histogram('gc_stats.allocated').update(allocated_size)
32
- end
33
-
34
- def count_objects
35
- objects = ObjectSpace.count_objects
36
- objects = objects[:TOTAL] - objects[:FREE]
37
- Metriks.histogram('gc_stats.objects').update(objects)
38
- end
39
- end
40
-
41
- if RUBY_ENGINE == 'ruby' and RUBY_VERSION =~ /^1\.9/
42
- extend Yarv
43
- end
44
-
45
- def self.available?
46
- respond_to?(:gather)
47
- end
48
-
49
- def self.start!
50
- if available?
51
- enable
52
- $log.info("gc:stats", enabled: true)
53
-
54
- EventMachine.next_tick do
55
- EventMachine::PeriodicTimer.new(60*60) do
56
- GC.start
57
- end
58
-
59
- EventMachine::PeriodicTimer.new(60) do
60
- gather
61
- clear
62
- end
63
- end
64
- else
65
- $log.info("gc:stats", enabled: false)
66
- end
67
- end
68
- end
@@ -1,56 +0,0 @@
1
- require 'liquid/sysconf'
2
-
3
- ProcStat = Struct.new(
4
- :ppid,
5
- :pgrp,
6
- :session,
7
- :tty_nr,
8
- :tpgid,
9
- :flags,
10
- :minflt,
11
- :cminflt,
12
- :majflt,
13
- :cmajflt,
14
- :utime,
15
- :stime,
16
- :cutime,
17
- :cstime,
18
- :priority,
19
- :nice,
20
- :num_threads,
21
- :itrealvalue,
22
- :starttime,
23
- :vsize,
24
- :rss,
25
- :rsslim,
26
- :startcode,
27
- :endcode,
28
- :startstack,
29
- :kstkesp,
30
- :kstkeip,
31
- :signal,
32
- :blocked,
33
- :sigignore,
34
- :sigcatch,
35
- :wchan,
36
- :nswap,
37
- :cnswap,
38
- :exit_signal,
39
- :processor,
40
- :rt_priority,
41
- :policy,
42
- :delayacct_blkio_ticks,
43
- :guest_time,
44
- :cguest_time
45
- )
46
-
47
- class ProcStat
48
- def self.read
49
- stat = File.read("/proc/self/stat").chomp.split
50
- new(*stat[3..40].map(&:to_i))
51
- end
52
-
53
- def pagesize
54
- Sysconf.sysconf(:page_size)
55
- end
56
- end
@@ -1,11 +0,0 @@
1
- require 'singleton'
2
- require 'metriks'
3
- require 'metriks/reporter/logger'
4
-
5
- class Statistics
6
- include Singleton
7
-
8
- def initialize
9
- Metriks::Reporter::Logger.new(:logger => $log, :interval => 300).start
10
- end
11
- end
@@ -1,25 +0,0 @@
1
- require 'ffi'
2
- require 'ffi/tools/const_generator'
3
-
4
- module Sysconf
5
- extend FFI::Library
6
- ffi_lib ["c"]
7
-
8
- fcg = FFI::ConstGenerator.new do |gen|
9
- gen.include 'unistd.h'
10
-
11
- %w[
12
- _SC_PAGE_SIZE
13
- _SC_VERSION
14
- ].each do |const|
15
- ruby_name = const.sub(/^_SC_/, '').downcase.to_sym
16
- gen.const(const, "%d", nil, ruby_name, &:to_i)
17
- end
18
- end
19
-
20
- CONF = enum(*fcg.constants.map{|_, const|
21
- [const.ruby_name, const.converted_value]
22
- }.flatten)
23
-
24
- attach_function :sysconf, [CONF], :long
25
- end