liquid-ext 3.2.0 → 3.3.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.
- checksums.yaml +4 -4
- data/.rspec +2 -0
- data/Gemfile.lock +4 -4
- data/lib/liquid/boot.rb +7 -8
- data/lib/liquid/code_reloader.rb +28 -0
- data/lib/liquid/commons-codec-1.9.jar +0 -0
- data/lib/liquid/commons-io-2.4.jar +0 -0
- data/lib/liquid/curator-client-2.4.1.jar +0 -0
- data/lib/liquid/curator-framework-2.4.1.jar +0 -0
- data/lib/liquid/curator-recipes-2.4.1.jar +0 -0
- data/lib/liquid/ext/socket.rb +10 -0
- data/lib/liquid/ext/string.rb +13 -0
- data/lib/liquid/health_checks.rb +41 -9
- data/lib/liquid/logger.rb +14 -8
- data/lib/liquid/mapdb-0.9.3.jar +0 -0
- data/lib/liquid/metrics.rb +0 -3
- data/lib/liquid/server.rb +8 -0
- data/lib/liquid/tracker/kafka_tracker.rb +0 -6
- data/lib/liquid/trove.rb +71 -0
- data/lib/liquid/zmq.rb +22 -5
- data/lib/liquid/zookeeper-3.4.6.jar +0 -0
- data/liquid-ext.gemspec +2 -2
- data/spec/spec_helper.rb +15 -5
- metadata +16 -11
- data/lib/liquid/metrics-healthchecks-3.0.1.jar +0 -0
- data/lib/liquid/router.rb +0 -45
- data/lib/liquid/tasks/router.rake +0 -17
- data/lib/liquid/tasks/yard.rake +0 -8
- data/spec/lib/liquid/router_spec.rb +0 -75
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d1323dc768902ea05e69c01cb8548540daca2cb3
|
4
|
+
data.tar.gz: f36b10320132fb182ed9233f6eeb1b28c909a78e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1e6182e393fabdd026dc5447b29e6999cc2857ee82cd71c6c9532a77f6e00ad874f63c5954e93718e71ffffea22d9005429786d813968167a1ec1186d964c1cb
|
7
|
+
data.tar.gz: dd79fbd7bfb4d2f507b711174326a094833042e86b506fe4b715248ad0a73310d99a9f9e4121130c34f59c9e38579e548170d3c570f7fc623c52b82604fea014
|
data/.rspec
ADDED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
liquid-ext (3.
|
4
|
+
liquid-ext (3.3.0)
|
5
5
|
activesupport
|
6
6
|
erubis
|
7
7
|
jmx4r
|
@@ -11,8 +11,8 @@ PATH
|
|
11
11
|
GEM
|
12
12
|
remote: http://rubygems.org/
|
13
13
|
specs:
|
14
|
-
activesupport (4.0.
|
15
|
-
i18n (~> 0.6, >= 0.6.
|
14
|
+
activesupport (4.0.4)
|
15
|
+
i18n (~> 0.6, >= 0.6.9)
|
16
16
|
minitest (~> 4.2)
|
17
17
|
multi_json (~> 1.3)
|
18
18
|
thread_safe (~> 0.1)
|
@@ -110,7 +110,7 @@ GEM
|
|
110
110
|
atomic (>= 1.1.7, < 2)
|
111
111
|
timecop (0.7.1)
|
112
112
|
tins (1.0.0)
|
113
|
-
tzinfo (0.3.
|
113
|
+
tzinfo (0.3.39)
|
114
114
|
yard (0.8.7.3)
|
115
115
|
|
116
116
|
PLATFORMS
|
data/lib/liquid/boot.rb
CHANGED
@@ -24,14 +24,6 @@ if RUBY_PLATFORM == 'java'
|
|
24
24
|
Dir[File.join(File.dirname(__FILE__), '*.jar')].each do |f|
|
25
25
|
require f
|
26
26
|
end
|
27
|
-
|
28
|
-
# some java libraries cannot be found on maven central, so we load all bundled
|
29
|
-
# jar files here for convenience
|
30
|
-
if defined?(ROOT)
|
31
|
-
Dir[File.join(ROOT, 'jars', '*.jar')].each do |f|
|
32
|
-
require f
|
33
|
-
end
|
34
|
-
end
|
35
27
|
end
|
36
28
|
|
37
29
|
# load a bunch of common classes here, so we don't have to track and repeat it
|
@@ -53,11 +45,13 @@ require 'liquid/cli'
|
|
53
45
|
require 'liquid/environment'
|
54
46
|
require 'liquid/from_file'
|
55
47
|
require 'liquid/hash_helper'
|
48
|
+
require 'liquid/health_checks'
|
56
49
|
require 'liquid/metrics'
|
57
50
|
require 'liquid/server'
|
58
51
|
require 'liquid/timing'
|
59
52
|
require 'liquid/tracker'
|
60
53
|
require 'liquid/transaction_id'
|
54
|
+
require 'liquid/trove'
|
61
55
|
require 'liquid/zmq'
|
62
56
|
|
63
57
|
# configuration callbacks
|
@@ -119,3 +113,8 @@ $conf.mixin({
|
|
119
113
|
$conf.callback(&reload_mixins)
|
120
114
|
$conf.callback(&reload_logger)
|
121
115
|
$conf.reload!
|
116
|
+
|
117
|
+
if defined?(ROOT) && $conf.code_reloader
|
118
|
+
require 'liquid/code_reloader'
|
119
|
+
CodeReloader.new(ROOT)
|
120
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'listen'
|
2
|
+
|
3
|
+
class CodeReloader
|
4
|
+
|
5
|
+
def initialize(path)
|
6
|
+
$log.warn("code.reloader", active: true, path: path)
|
7
|
+
Listen.to(path) do |m, a, r|
|
8
|
+
Thread.name = "Code Reloader (#{path})"
|
9
|
+
(m + a).uniq.each do |file|
|
10
|
+
reload(file)
|
11
|
+
end
|
12
|
+
end.start
|
13
|
+
end
|
14
|
+
|
15
|
+
def reload(file)
|
16
|
+
if file =~ /\.rb$/
|
17
|
+
$log.info("code.reloader", reload: file)
|
18
|
+
begin
|
19
|
+
load(file)
|
20
|
+
rescue SyntaxError => e
|
21
|
+
$log.exception(e)
|
22
|
+
rescue => e
|
23
|
+
$log.exception(e)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/lib/liquid/ext/string.rb
CHANGED
@@ -8,4 +8,17 @@ class String
|
|
8
8
|
self
|
9
9
|
end
|
10
10
|
end
|
11
|
+
|
12
|
+
# from: http://rubydoc.info/gems/extlib/0.9.15/String#camel_case-instance_method
|
13
|
+
def camel_case
|
14
|
+
return self if self !~ /_/ && self =~ /[A-Z]+.*/
|
15
|
+
split('_').map{|e| e.capitalize}.join
|
16
|
+
end
|
17
|
+
|
18
|
+
def snake_case
|
19
|
+
return downcase if match(/\A[A-Z]+\z/)
|
20
|
+
gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2').
|
21
|
+
gsub(/([a-z])([A-Z])/, '\1_\2').
|
22
|
+
downcase
|
23
|
+
end
|
11
24
|
end
|
data/lib/liquid/health_checks.rb
CHANGED
@@ -1,20 +1,52 @@
|
|
1
1
|
require 'liquid/logger'
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
class HealthCheck
|
4
|
+
class Result
|
5
|
+
attr_reader :message
|
6
|
+
attr_reader :exception
|
5
7
|
|
6
|
-
|
7
|
-
|
8
|
+
def initialize(healthy, message, exception)
|
9
|
+
@healthy = healthy
|
10
|
+
@message = message
|
11
|
+
@exception = exception
|
12
|
+
end
|
8
13
|
|
9
|
-
|
10
|
-
|
14
|
+
def healthy?
|
15
|
+
@healthy
|
16
|
+
end
|
17
|
+
|
18
|
+
def to_s
|
19
|
+
"Result{isHealthy=#{healthy?},message=#{message.inspect},exception=#{exception.inspect}}"
|
20
|
+
end
|
11
21
|
end
|
12
22
|
|
13
|
-
|
14
|
-
|
23
|
+
@@checks = {}
|
24
|
+
|
25
|
+
def self.inherited(child)
|
26
|
+
@@checks[child.name.demodulize] = child
|
15
27
|
end
|
16
28
|
|
17
29
|
def self.run
|
18
|
-
|
30
|
+
@@checks.inject({}) do |result, (name, handler)|
|
31
|
+
result[name] = handler.new.execute
|
32
|
+
result
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.poll(interval = 5)
|
37
|
+
loop do
|
38
|
+
@healthy = run.values.all?(&:healthy?)
|
39
|
+
sleep(interval)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def self.healthy?
|
44
|
+
@healthy.nil? ? run.values.all?(&:healthy?) : @healthy
|
45
|
+
end
|
46
|
+
|
47
|
+
def execute
|
48
|
+
check
|
49
|
+
rescue => e
|
50
|
+
Result.new(false, "failed to execute check", e)
|
19
51
|
end
|
20
52
|
end
|
data/lib/liquid/logger.rb
CHANGED
@@ -1,27 +1,23 @@
|
|
1
|
-
require 'liquid/ext/string'
|
2
|
-
|
3
|
-
require_relative './slf4j-api-1.7.6.jar'
|
4
|
-
require_relative './slf4j-log4j12-1.7.6.jar'
|
5
|
-
require_relative './log4j-1.2.17.jar'
|
6
1
|
java_import 'org.slf4j.LoggerFactory'
|
7
2
|
|
8
3
|
module Liquid
|
9
4
|
class Logger
|
10
5
|
|
11
6
|
attr_accessor :progname
|
7
|
+
attr_accessor :appender
|
12
8
|
|
13
9
|
def initialize(name, progname = nil)
|
14
10
|
@progname = progname || File.basename($0)
|
15
11
|
@logger = LoggerFactory.getLogger(name)
|
16
12
|
@exceptions = {}
|
17
13
|
@exception_handlers = [method(:_log_error_exception)]
|
18
|
-
|
14
|
+
unmute!
|
19
15
|
end
|
20
16
|
|
21
17
|
def reload!
|
22
18
|
root = org.apache.log4j.Logger.getRootLogger
|
23
|
-
appender =
|
24
|
-
appender.name = "
|
19
|
+
appender = @appender.new
|
20
|
+
appender.name = "default"
|
25
21
|
appender.layout = org.apache.log4j.PatternLayout.new($conf.log.format)
|
26
22
|
appender.threshold = org.apache.log4j.Level.toLevel($conf.log.level.to_s)
|
27
23
|
appender.activateOptions
|
@@ -29,6 +25,16 @@ module Liquid
|
|
29
25
|
root.addAppender(appender)
|
30
26
|
end
|
31
27
|
|
28
|
+
def mute!
|
29
|
+
@appender = org.apache.log4j.varia.NullAppender
|
30
|
+
reload!
|
31
|
+
end
|
32
|
+
|
33
|
+
def unmute!
|
34
|
+
@appender = org.apache.log4j.ConsoleAppender
|
35
|
+
reload!
|
36
|
+
end
|
37
|
+
|
32
38
|
def trace?
|
33
39
|
@logger.trace_enabled?
|
34
40
|
end
|
Binary file
|
data/lib/liquid/metrics.rb
CHANGED
data/lib/liquid/server.rb
CHANGED
@@ -9,6 +9,7 @@ module Liquid
|
|
9
9
|
initialize_raven
|
10
10
|
initialize_tracker
|
11
11
|
initialize_metrics
|
12
|
+
initialize_health_checks
|
12
13
|
end
|
13
14
|
|
14
15
|
def initialize_raven
|
@@ -43,6 +44,13 @@ module Liquid
|
|
43
44
|
Signal.register_shutdown_handler { ::Metrics.stop }
|
44
45
|
end
|
45
46
|
|
47
|
+
def initialize_health_checks
|
48
|
+
Thread.new do
|
49
|
+
Thread.name = "Health Check"
|
50
|
+
HealthCheck.poll
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
46
54
|
def initialize_zmachine
|
47
55
|
require 'zmachine'
|
48
56
|
ZMachine.logger = $log
|
@@ -1,11 +1,5 @@
|
|
1
1
|
require 'liquid/tracker/base'
|
2
2
|
|
3
|
-
require_relative '../scala-library-2.10.3.jar'
|
4
|
-
require_relative '../metrics-core-2.2.0.jar'
|
5
|
-
require_relative '../metrics-annotation-2.2.0.jar'
|
6
|
-
require_relative '../kafka_2.10-0.8.0.jar'
|
7
|
-
require_relative '../snappy-java-1.1.1-M1.jar'
|
8
|
-
|
9
3
|
module Tracker
|
10
4
|
class KafkaTracker < Base
|
11
5
|
|
data/lib/liquid/trove.rb
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
java_import 'gnu.trove.TIntCollection'
|
2
|
+
java_import 'gnu.trove.set.hash.TIntHashSet'
|
3
|
+
java_import 'gnu.trove.set.hash.TLongHashSet'
|
4
|
+
java_import 'gnu.trove.map.hash.TIntObjectHashMap'
|
5
|
+
java_import 'gnu.trove.map.hash.TLongObjectHashMap'
|
6
|
+
|
7
|
+
module TMap
|
8
|
+
def each
|
9
|
+
it = iterator
|
10
|
+
while it.has_next
|
11
|
+
it.advance
|
12
|
+
yield it.key, it.value
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
module TSet
|
18
|
+
def each
|
19
|
+
it = iterator
|
20
|
+
while it.has_next
|
21
|
+
yield it.next
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def inspect
|
26
|
+
if size > 1000
|
27
|
+
"#{self.class.name}{too large to display,l=#{size}}"
|
28
|
+
else
|
29
|
+
to_string
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
class TLongObjectHashMap
|
35
|
+
include TMap
|
36
|
+
alias :has_key? :containsKey
|
37
|
+
alias :[] :get
|
38
|
+
alias :[]= :put
|
39
|
+
alias :length :size
|
40
|
+
alias :delete :remove
|
41
|
+
end
|
42
|
+
|
43
|
+
class TIntObjectHashMap
|
44
|
+
include TMap
|
45
|
+
alias :has_key? :containsKey
|
46
|
+
alias :[] :get
|
47
|
+
alias :[]= :put
|
48
|
+
alias :length :size
|
49
|
+
alias :delete :remove
|
50
|
+
end
|
51
|
+
|
52
|
+
class TLongHashSet
|
53
|
+
include TSet
|
54
|
+
alias :include? :contains
|
55
|
+
alias :length :size
|
56
|
+
alias :delete :remove
|
57
|
+
end
|
58
|
+
|
59
|
+
class TIntHashSet
|
60
|
+
include TSet
|
61
|
+
alias :include? :contains
|
62
|
+
alias :length :size
|
63
|
+
alias :delete :remove
|
64
|
+
|
65
|
+
java_alias :concat_ints, :addAll, [TIntCollection.java_class]
|
66
|
+
|
67
|
+
def concat(list)
|
68
|
+
return if !list
|
69
|
+
concat_ints list
|
70
|
+
end
|
71
|
+
end
|
data/lib/liquid/zmq.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
require_relative "./jeromq-0.3.3.jar"
|
2
1
|
java_import "org.zeromq.ZContext"
|
3
2
|
java_import "org.zeromq.ZFrame"
|
4
3
|
java_import "org.zeromq.ZLoop"
|
@@ -8,11 +7,8 @@ java_import "org.zeromq.ZMQQueue"
|
|
8
7
|
java_import "org.zeromq.ZMsg"
|
9
8
|
java_import "org.zeromq.ZThread"
|
10
9
|
|
11
|
-
java_import "java.nio.channels.AsynchronousCloseException"
|
12
|
-
java_import "java.nio.channels.ClosedChannelException"
|
13
|
-
java_import "java.nio.channels.ClosedSelectorException"
|
14
|
-
|
15
10
|
class ZContext
|
11
|
+
|
16
12
|
def create_socket_with_opts(type, opts = {})
|
17
13
|
socket = create_socket(type)
|
18
14
|
opts.each do |key, value|
|
@@ -62,12 +58,33 @@ class ZContext
|
|
62
58
|
instance.destroy_socket(socket)
|
63
59
|
end
|
64
60
|
|
61
|
+
# really incredible how many exceptions a simple shutdown can throw all over
|
62
|
+
# the place. if it's one thing ZMQ did never get right it is the shutdown
|
63
|
+
# logic ...
|
65
64
|
def self.destroy
|
66
65
|
instance.destroy
|
67
66
|
rescue Java::JavaLang::IllegalStateException
|
68
67
|
# ignore broken shutdown in zeromq
|
69
68
|
end
|
70
69
|
|
70
|
+
DestroyExceptions = [
|
71
|
+
Java::JavaNioChannels::AsynchronousCloseException,
|
72
|
+
Java::JavaNioChannels::ClosedChannelException,
|
73
|
+
Java::JavaNioChannels::ClosedSelectorException,
|
74
|
+
]
|
75
|
+
|
76
|
+
Exceptions = DestroyExceptions + [
|
77
|
+
Java::OrgZeromq::ZMQException,
|
78
|
+
Java::Zmq::ZError::IOException,
|
79
|
+
]
|
80
|
+
|
81
|
+
def self.destroy_exception?(e)
|
82
|
+
return true if e.is_a?(Java::OrgZeromq::ZMQException) && ZMQ::Error::ETERM.getCode == e.getErrorCode
|
83
|
+
return true if e.is_a?(Java::Zmq::ZError::IOException) && DestroyExceptions.include?(e.cause.class)
|
84
|
+
return true if DestroyExceptions.include?(e.class)
|
85
|
+
return false
|
86
|
+
end
|
87
|
+
|
71
88
|
def self.router(opts = {})
|
72
89
|
instance.router(opts)
|
73
90
|
end
|
Binary file
|
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 = "3.
|
5
|
+
spec.version = "3.3.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,7 +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 "jmx4r"
|
20
21
|
spec.add_dependency "mixlib-cli"
|
21
22
|
spec.add_dependency "terminal-table"
|
22
|
-
spec.add_dependency "jmx4r"
|
23
23
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,10 +1,20 @@
|
|
1
|
-
|
2
|
-
require 'rspec'
|
1
|
+
ROOT = File.expand_path('../..', __FILE__)
|
3
2
|
|
4
|
-
require '
|
5
|
-
|
3
|
+
require 'bundler/setup'
|
4
|
+
require 'liquid/boot'
|
6
5
|
|
7
|
-
|
6
|
+
require 'rspec'
|
8
7
|
|
9
8
|
RSpec.configure do |config|
|
9
|
+
# Run specs in random order to surface order dependencies. If you find an
|
10
|
+
# order dependency and want to debug it, you can fix the order by providing
|
11
|
+
# the seed, which is printed after each run.
|
12
|
+
# --seed 1234
|
13
|
+
config.order = 'random'
|
10
14
|
end
|
15
|
+
|
16
|
+
# load helper classes & functions from files in spec/support/
|
17
|
+
Dir[File.join(ROOT, "spec/support/**/*.rb")].each { |f| require f }
|
18
|
+
|
19
|
+
# be silent
|
20
|
+
$log.mute!
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: liquid-ext
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- LiquidM, Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-03-
|
11
|
+
date: 2014-03-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -39,7 +39,7 @@ dependencies:
|
|
39
39
|
prerelease: false
|
40
40
|
type: :runtime
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: jmx4r
|
43
43
|
version_requirements: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - '>='
|
@@ -53,7 +53,7 @@ dependencies:
|
|
53
53
|
prerelease: false
|
54
54
|
type: :runtime
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: mixlib-cli
|
57
57
|
version_requirements: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - '>='
|
@@ -67,7 +67,7 @@ dependencies:
|
|
67
67
|
prerelease: false
|
68
68
|
type: :runtime
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: terminal-table
|
71
71
|
version_requirements: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - '>='
|
@@ -89,6 +89,7 @@ extensions: []
|
|
89
89
|
extra_rdoc_files: []
|
90
90
|
files:
|
91
91
|
- .gitignore
|
92
|
+
- .rspec
|
92
93
|
- .ruby-version
|
93
94
|
- .travis.yml
|
94
95
|
- .yardopts
|
@@ -101,8 +102,14 @@ files:
|
|
101
102
|
- lib/liquid/benchmark.rb
|
102
103
|
- lib/liquid/boot.rb
|
103
104
|
- lib/liquid/cli.rb
|
105
|
+
- lib/liquid/code_reloader.rb
|
106
|
+
- lib/liquid/commons-codec-1.9.jar
|
107
|
+
- lib/liquid/commons-io-2.4.jar
|
104
108
|
- lib/liquid/configuration.rb
|
105
109
|
- lib/liquid/console.rb
|
110
|
+
- lib/liquid/curator-client-2.4.1.jar
|
111
|
+
- lib/liquid/curator-framework-2.4.1.jar
|
112
|
+
- lib/liquid/curator-recipes-2.4.1.jar
|
106
113
|
- lib/liquid/environment.rb
|
107
114
|
- lib/liquid/ext/array.rb
|
108
115
|
- lib/liquid/ext/enumerable.rb
|
@@ -112,6 +119,7 @@ files:
|
|
112
119
|
- lib/liquid/ext/nil.rb
|
113
120
|
- lib/liquid/ext/ordered_set.rb
|
114
121
|
- lib/liquid/ext/signal.rb
|
122
|
+
- lib/liquid/ext/socket.rb
|
115
123
|
- lib/liquid/ext/string.rb
|
116
124
|
- lib/liquid/ext/thread.rb
|
117
125
|
- lib/liquid/from_file.rb
|
@@ -122,16 +130,15 @@ files:
|
|
122
130
|
- lib/liquid/kafka_2.10-0.8.0.jar
|
123
131
|
- lib/liquid/log4j-1.2.17.jar
|
124
132
|
- lib/liquid/logger.rb
|
133
|
+
- lib/liquid/mapdb-0.9.3.jar
|
125
134
|
- lib/liquid/metrics-annotation-2.2.0.jar
|
126
135
|
- lib/liquid/metrics-core-2.2.0.jar
|
127
136
|
- lib/liquid/metrics-core-3.0.1.jar
|
128
|
-
- lib/liquid/metrics-healthchecks-3.0.1.jar
|
129
137
|
- lib/liquid/metrics.rb
|
130
138
|
- lib/liquid/metrics/logger_reporter.rb
|
131
139
|
- lib/liquid/metrics/reporter.rb
|
132
140
|
- lib/liquid/metrics/tracker_reporter.rb
|
133
141
|
- lib/liquid/priority_selector.rb
|
134
|
-
- lib/liquid/router.rb
|
135
142
|
- lib/liquid/scala-library-2.10.3.jar
|
136
143
|
- lib/liquid/server.rb
|
137
144
|
- lib/liquid/slf4j-api-1.7.6.jar
|
@@ -140,9 +147,7 @@ files:
|
|
140
147
|
- lib/liquid/tasks.rb
|
141
148
|
- lib/liquid/tasks/protoc.rake
|
142
149
|
- lib/liquid/tasks/reek.rake
|
143
|
-
- lib/liquid/tasks/router.rake
|
144
150
|
- lib/liquid/tasks/rspec.rake
|
145
|
-
- lib/liquid/tasks/yard.rake
|
146
151
|
- lib/liquid/templates/Gemfile.tt
|
147
152
|
- lib/liquid/templates/LICENSE.txt.tt
|
148
153
|
- lib/liquid/templates/README.md.tt
|
@@ -162,11 +167,12 @@ files:
|
|
162
167
|
- lib/liquid/tracker/logger_tracker.rb
|
163
168
|
- lib/liquid/transaction_id.rb
|
164
169
|
- lib/liquid/trove-3.0.3.jar
|
170
|
+
- lib/liquid/trove.rb
|
165
171
|
- lib/liquid/weighted_selector.rb
|
166
172
|
- lib/liquid/zmq.rb
|
173
|
+
- lib/liquid/zookeeper-3.4.6.jar
|
167
174
|
- liquid-ext.gemspec
|
168
175
|
- spec/lib/liquid/ext/enumerable_spec.rb
|
169
|
-
- spec/lib/liquid/router_spec.rb
|
170
176
|
- spec/lib/liquid/weighted_selector_spec.rb
|
171
177
|
- spec/spec_helper.rb
|
172
178
|
homepage: https://github.com/liquidm/ext
|
@@ -195,7 +201,6 @@ specification_version: 4
|
|
195
201
|
summary: Ruby core extensions and helper libraries
|
196
202
|
test_files:
|
197
203
|
- spec/lib/liquid/ext/enumerable_spec.rb
|
198
|
-
- spec/lib/liquid/router_spec.rb
|
199
204
|
- spec/lib/liquid/weighted_selector_spec.rb
|
200
205
|
- spec/spec_helper.rb
|
201
206
|
has_rdoc:
|
Binary file
|
data/lib/liquid/router.rb
DELETED
@@ -1,45 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require 'liquid/from_file'
|
4
|
-
|
5
|
-
class Router
|
6
|
-
include FromFile
|
7
|
-
|
8
|
-
attr_accessor :routes
|
9
|
-
|
10
|
-
def initialize(request_handler)
|
11
|
-
@request_handler = request_handler
|
12
|
-
@routes = []
|
13
|
-
|
14
|
-
@cache = Hash.new do |hash, path|
|
15
|
-
hash[path] = nil
|
16
|
-
@routes.each do |regex, block, args|
|
17
|
-
match = path.match(regex)
|
18
|
-
hash[path] = block.curry[match] if match
|
19
|
-
end
|
20
|
-
hash[path]
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
def add(regexp, args, &block)
|
25
|
-
@routes << [regexp, block, args]
|
26
|
-
end
|
27
|
-
|
28
|
-
# route %r(/foo/(.+)/(\w+)/(\d+)), AnyParser, :matches, :in, :order
|
29
|
-
def route(regexp, parser, *args, &block)
|
30
|
-
block = lambda do |match, env|
|
31
|
-
params = args.each_with_index.inject({}) do |hash, (name, index)|
|
32
|
-
hash[name] = match[index+1]
|
33
|
-
hash
|
34
|
-
end
|
35
|
-
|
36
|
-
return @request_handler.handle(parser, env, params)
|
37
|
-
end
|
38
|
-
|
39
|
-
add(regexp, args, &block)
|
40
|
-
end
|
41
|
-
|
42
|
-
def handle(path, request)
|
43
|
-
@cache[path].call(request) if @cache[path]
|
44
|
-
end
|
45
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require 'liquid/router'
|
4
|
-
require 'terminal-table'
|
5
|
-
|
6
|
-
desc "Show all ed routes"
|
7
|
-
task :routes do
|
8
|
-
root = File.expand_path(File.dirname(__FILE__))
|
9
|
-
router = Router.new(lambda{})
|
10
|
-
router.from_file(File.join(root, "../../../config/routes.rb"))
|
11
|
-
routes = router.routes.map {|r| [r[0].inspect, r[1], r[2] ] }
|
12
|
-
puts Terminal::Table.new({
|
13
|
-
rows: routes.sort_by { |route| route[0] },
|
14
|
-
headings: ['regex', 'handler', 'parameters'],
|
15
|
-
})
|
16
|
-
end
|
17
|
-
|
data/lib/liquid/tasks/yard.rake
DELETED
@@ -1,75 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require 'liquid/router'
|
4
|
-
|
5
|
-
class GeneralRequestHandler; end
|
6
|
-
|
7
|
-
describe Router do
|
8
|
-
let(:regex) { %r(foo(.*)bar) }
|
9
|
-
let(:block) { Proc.new { 1+1 } }
|
10
|
-
let(:router) { Router.new(GeneralRequestHandler) }
|
11
|
-
|
12
|
-
describe '.add' do
|
13
|
-
context 'add route' do
|
14
|
-
|
15
|
-
before { router.add(regex, [:args], &block) }
|
16
|
-
|
17
|
-
context 'regex' do
|
18
|
-
subject { router.routes.last[0] }
|
19
|
-
it { should eql regex }
|
20
|
-
end
|
21
|
-
|
22
|
-
context 'block' do
|
23
|
-
subject { router.routes.last[1] }
|
24
|
-
its(:call) { should eql block.call }
|
25
|
-
end
|
26
|
-
|
27
|
-
context 'args' do
|
28
|
-
subject { router.routes.last[2] }
|
29
|
-
it { should eql [:args] }
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
describe '.route' do
|
35
|
-
let(:regex) { %r(/bar/) }
|
36
|
-
|
37
|
-
let(:parser) { double('CustomRequestParser') }
|
38
|
-
let(:env) { "env" }
|
39
|
-
|
40
|
-
before { router.route(regex, parser, :foo, :bar) }
|
41
|
-
|
42
|
-
subject { router.routes.last[0] }
|
43
|
-
|
44
|
-
it { should be_a Regexp }
|
45
|
-
it { should eql regex }
|
46
|
-
it 'builds correct block' do
|
47
|
-
GeneralRequestHandler.should_receive(:handle).with(parser, env, {foo: 1, bar: 2})
|
48
|
-
|
49
|
-
_, block = router.routes.last
|
50
|
-
block.call([0,1,2], env)
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
describe '.handle' do
|
55
|
-
let(:handler) { double('MockHandler') }
|
56
|
-
let(:request) { double('request') }
|
57
|
-
let(:url_re_1) { 'http://ad.madvertise.de/muchte/(.*?)' }
|
58
|
-
let(:block) { Proc.new { |match, env| handler.handle(match, env) } }
|
59
|
-
|
60
|
-
before do
|
61
|
-
router.add url_re_1, [:foo], &block
|
62
|
-
router.route %r(/new_adx_bidrequest/([\w.-]+)), GeneralRequestHandler, :site_token
|
63
|
-
end
|
64
|
-
|
65
|
-
it 'is not matching' do
|
66
|
-
router.handle("http://ad.madvertise.de/muchtel", request).should == nil
|
67
|
-
end
|
68
|
-
|
69
|
-
it 'is matching' do
|
70
|
-
handler.should_receive(:handle).and_return("bar")
|
71
|
-
router.handle("http://ad.madvertise.de/muchte/foo", request).should == "bar"
|
72
|
-
end
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|