jubilee 2.1.0.beta-java → 2.1.0.rc1-java
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/Gemfile.lock +13 -1
- data/README.md +65 -54
- data/Rakefile +23 -21
- data/examples/chatapp/Gemfile +1 -2
- data/examples/chatapp/Gemfile.lock +2 -2
- data/examples/chatapp/README.md +14 -2
- data/examples/chatapp/app.rb +1 -0
- data/examples/chatapp/config.json +4 -0
- data/examples/chatapp/config.ru +0 -2
- data/jars/annotations-1.3.2.jar +0 -0
- data/jars/lang-jruby-2.1.0-final.jar +0 -0
- data/jars/log4j-1.2.16.jar +0 -0
- data/jars/slf4j-api-1.6.2.jar +0 -0
- data/jars/vertx-core-2.1.2.jar +0 -0
- data/jars/{vertx-hazelcast-2.1.1.jar → vertx-hazelcast-2.1.2.jar} +0 -0
- data/jars/{vertx-platform-2.1.1.jar → vertx-platform-2.1.2.jar} +0 -0
- data/lib/container.rb +117 -0
- data/lib/{vertx → core}/buffer.rb +1 -1
- data/lib/core/datagram.rb +280 -0
- data/lib/core/dns.rb +143 -0
- data/lib/{vertx → core}/event_bus.rb +79 -8
- data/lib/core/file_system.rb +479 -0
- data/lib/{vertx → core}/http.rb +635 -5
- data/lib/core/net.rb +251 -0
- data/lib/core/network_support.rb +77 -0
- data/lib/core/parsetools.rb +105 -0
- data/lib/{vertx → core}/shared_data.rb +2 -2
- data/lib/core/sock_js.rb +116 -0
- data/lib/{vertx → core}/ssl_support.rb +21 -1
- data/lib/{vertx → core}/streams.rb +32 -21
- data/lib/{vertx → core}/tcp_support.rb +22 -36
- data/lib/core/timers.rb +73 -0
- data/lib/core/vertx_require.rb +25 -0
- data/lib/{vertx → core}/wrapped_handler.rb +0 -0
- data/lib/jubilee.rb +5 -8
- data/lib/jubilee/cli.rb +1 -1
- data/lib/jubilee/jubilee.jar +0 -0
- data/lib/jubilee/jubilee_require.rb +24 -0
- data/lib/jubilee/version.rb +1 -1
- data/lib/test_utils.rb +66 -0
- data/lib/vertx.rb +13 -10
- data/lib/vertx_tests.rb +8 -0
- data/pom.xml +351 -0
- data/src/main/assembly/mod.xml +21 -0
- data/{java/src → src/main/java}/jubilee/JubileeService.java +0 -0
- data/{java/src → src/main/java}/org/jruby/jubilee/Const.java +0 -0
- data/{java/src → src/main/java}/org/jruby/jubilee/JubileeVerticle.java +12 -2
- data/src/main/java/org/jruby/jubilee/JubileeVerticleFactory.java +258 -0
- data/{java/src → src/main/java}/org/jruby/jubilee/RackApplication.java +3 -1
- data/{java/src → src/main/java}/org/jruby/jubilee/RackEnvironment.java +2 -2
- data/{java/src → src/main/java}/org/jruby/jubilee/RackEnvironmentHash.java +0 -0
- data/{java/src → src/main/java}/org/jruby/jubilee/RackInput.java +0 -0
- data/{java/src → src/main/java}/org/jruby/jubilee/RackResponse.java +0 -0
- data/{java/src → src/main/java}/org/jruby/jubilee/RubyCallable.java +0 -0
- data/{java/src → src/main/java}/org/jruby/jubilee/RubyHttpServerResponse.java +0 -0
- data/{java/src → src/main/java}/org/jruby/jubilee/RubyNetSocket.java +0 -0
- data/{java/src → src/main/java}/org/jruby/jubilee/RubyPlatformManager.java +0 -0
- data/{java/src → src/main/java}/org/jruby/jubilee/impl/RubyIORackInput.java +0 -0
- data/{java/src → src/main/java}/org/jruby/jubilee/impl/RubyNullIO.java +0 -0
- data/{java/src → src/main/java}/org/jruby/jubilee/utils/RubyHelper.java +0 -0
- data/{java/src → src/main/java}/org/jruby/jubilee/vertx/JubileeVertx.java +0 -0
- data/{java → src/main}/resources/META-INF/services/org.vertx.java.core.spi.cluster.ClusterManagerFactory +0 -0
- data/src/main/resources/META-INF/services/org.vertx.java.deploy.impl.jruby.JubileeVerticleFactory +1 -0
- data/{java → src/main}/resources/default-cluster.xml +0 -0
- data/src/main/resources/mod.json +11 -0
- data/test/jubilee/test_upload.rb +3 -1
- data/vertx_classpath.txt +12 -0
- metadata +69 -47
- data/Guardfile +0 -24
- data/jars/vertx-core-2.1.1.jar +0 -0
- data/java/src/org/jruby/jubilee/RubyChannel.java +0 -89
- data/lib/vertx/README.md +0 -7
data/lib/core/sock_js.rb
ADDED
@@ -0,0 +1,116 @@
|
|
1
|
+
# Copyright 2011 the original author or authors.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
require 'core/streams'
|
16
|
+
require 'core/ssl_support'
|
17
|
+
module Vertx
|
18
|
+
|
19
|
+
# This is an implementation of the server side part of {"https://github.com/sockjs"}
|
20
|
+
#
|
21
|
+
# SockJS enables browsers to communicate with the server using a simple WebSocket-like api for sending
|
22
|
+
# and receiving messages. Under the bonnet SockJS chooses to use one of several protocols depending on browser
|
23
|
+
# capabilities and what appears to be working across the network.
|
24
|
+
#
|
25
|
+
# Available protocols include:
|
26
|
+
#
|
27
|
+
# WebSockets
|
28
|
+
# xhr-polling
|
29
|
+
# xhr-streaming
|
30
|
+
# json-polling
|
31
|
+
# event-source
|
32
|
+
# html-file
|
33
|
+
#
|
34
|
+
# This means, it should just work irrespective of what browser is being used, and whether there are nasty
|
35
|
+
# things like proxies and load balancers between the client and the server.
|
36
|
+
#
|
37
|
+
# For more detailed information on SockJS, see their website.
|
38
|
+
#
|
39
|
+
# On the server side, you interact using instances of {SockJSSocket} - this allows you to send data to the
|
40
|
+
# client or receive data via the {ReadStream#data_handler}.
|
41
|
+
#
|
42
|
+
# You can register multiple applications with the same SockJSServer, each using different path prefixes, each
|
43
|
+
# application will have its own handler, and configuration is described in a Hash.
|
44
|
+
#
|
45
|
+
# @author {http://tfox.org Tim Fox}
|
46
|
+
class SockJSServer
|
47
|
+
|
48
|
+
# Create a new SockJSServer
|
49
|
+
# @param http_server [HttpServer] You must pass in an instance of {HttpServer}
|
50
|
+
def initialize(http_server)
|
51
|
+
@j_server = org.vertx.java.platform.impl.JRubyVerticleFactory.vertx.createSockJSServer(http_server._to_java_server)
|
52
|
+
end
|
53
|
+
|
54
|
+
# Install an application
|
55
|
+
# @param config [Hash] Configuration for the application
|
56
|
+
# @param proc [Proc] Proc representing the handler
|
57
|
+
# @param hndlr [Block] Handler to call when a new {SockJSSocket is created}
|
58
|
+
def install_app(config, proc = nil, &hndlr)
|
59
|
+
hndlr = proc if proc
|
60
|
+
j_config = org.vertx.java.core.json.JsonObject.new(config)
|
61
|
+
@j_server.installApp(j_config) { |j_sock|
|
62
|
+
hndlr.call(SockJSSocket.new(j_sock))
|
63
|
+
}
|
64
|
+
self
|
65
|
+
end
|
66
|
+
|
67
|
+
def bridge(config, inbound_permitted, outbound_permitted, auth_timeout = 5 * 60 * 1000, auth_address = nil)
|
68
|
+
j_inbound_permitted = org.vertx.java.core.json.JsonArray.new(inbound_permitted)
|
69
|
+
j_outbound_permitted = org.vertx.java.core.json.JsonArray.new(outbound_permitted)
|
70
|
+
@j_server.bridge(org.vertx.java.core.json.JsonObject.new(config), j_inbound_permitted,
|
71
|
+
j_outbound_permitted, auth_timeout, auth_address)
|
72
|
+
self
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|
76
|
+
|
77
|
+
# You interact with SockJS clients through instances of SockJS socket.
|
78
|
+
# The API is very similar to {WebSocket}. It implements both
|
79
|
+
# {ReadStream} and {WriteStream} so it can be used with {Pump} to enable
|
80
|
+
# flow control.
|
81
|
+
#
|
82
|
+
# @author {http://tfox.org Tim Fox}
|
83
|
+
class SockJSSocket
|
84
|
+
|
85
|
+
include ReadStream, WriteStream
|
86
|
+
|
87
|
+
# @private
|
88
|
+
def initialize(j_sock)
|
89
|
+
@j_del = j_sock
|
90
|
+
@handler_id = EventBus.register_simple_handler { |msg|
|
91
|
+
write(msg.body)
|
92
|
+
}
|
93
|
+
end
|
94
|
+
|
95
|
+
# Close the socket
|
96
|
+
def close
|
97
|
+
EventBus.unregister_handler(@handler_id)
|
98
|
+
@j_del.close
|
99
|
+
end
|
100
|
+
|
101
|
+
# When a SockJSSocket is created it automatically registers an event handler with the system, the ID of that
|
102
|
+
# handler is given by {#handler_id}.
|
103
|
+
# Given this ID, a different event loop can send a buffer to that event handler using the event bus. This
|
104
|
+
# allows you to write data to other SockJSSockets which are owned by different event loops.
|
105
|
+
def handler_id
|
106
|
+
@handler_id
|
107
|
+
end
|
108
|
+
|
109
|
+
# @private
|
110
|
+
def _to_java_socket
|
111
|
+
@j_del
|
112
|
+
end
|
113
|
+
|
114
|
+
end
|
115
|
+
|
116
|
+
end
|
@@ -121,6 +121,26 @@ module Vertx
|
|
121
121
|
|
122
122
|
end
|
123
123
|
|
124
|
+
# A mixin module allowing Server SSL attributes to be set on classes
|
125
|
+
#
|
126
|
+
# @author {http://tfox.org Tim Fox}
|
127
|
+
module ServerSSLSupport
|
128
|
+
|
129
|
+
def client_auth_required=(val)
|
130
|
+
@j_del.setClientAuthRequired(val)
|
131
|
+
self
|
132
|
+
end
|
133
|
+
|
134
|
+
def client_auth_required(val = nil)
|
135
|
+
if val
|
136
|
+
@j_del.setClientAuthRequired(val)
|
137
|
+
self
|
138
|
+
else
|
139
|
+
@j_del.isClientAuthRequired
|
140
|
+
end
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
124
144
|
# A mixin module allowing Client SSL attributes to be set on classes
|
125
145
|
#
|
126
146
|
# @author {http://tfox.org Tim Fox}
|
@@ -140,4 +160,4 @@ module Vertx
|
|
140
160
|
end
|
141
161
|
end
|
142
162
|
end
|
143
|
-
end
|
163
|
+
end
|
@@ -14,21 +14,7 @@
|
|
14
14
|
|
15
15
|
module Vertx
|
16
16
|
|
17
|
-
|
18
|
-
#
|
19
|
-
# Any class that mixes in this module can be used by a {Pump} to pump data from a {ReadStream} to it.
|
20
|
-
#
|
21
|
-
# @author {http://tfox.org Tim Fox}
|
22
|
-
module WriteStream
|
23
|
-
|
24
|
-
# Write some data to the stream. The data is put on an internal write queue, and the write actually happens
|
25
|
-
# asynchronously. To avoid running out of memory by putting too much on the write queue,
|
26
|
-
# check the {#write_queue_full?} method before writing. This is done automatically if using a {Pump}.
|
27
|
-
# @param [Buffer]. The buffer to write.
|
28
|
-
def write(buff)
|
29
|
-
@j_del.write(buff._to_java_buffer)
|
30
|
-
self
|
31
|
-
end
|
17
|
+
module DrainSupport
|
32
18
|
|
33
19
|
# Set the maximum size of the write queue. You will still be able to write to the stream even
|
34
20
|
# if there is more data than this in the write queue. This is used as an indicator by classes such as
|
@@ -64,6 +50,25 @@ module Vertx
|
|
64
50
|
@j_del.exceptionHandler(hndlr)
|
65
51
|
self
|
66
52
|
end
|
53
|
+
end
|
54
|
+
|
55
|
+
# A mixin module which represents a stream of data that can be written to.
|
56
|
+
#
|
57
|
+
# Any class that mixes in this module can be used by a {Pump} to pump data from a {ReadStream} to it.
|
58
|
+
#
|
59
|
+
# @author {http://tfox.org Tim Fox}
|
60
|
+
module WriteStream
|
61
|
+
|
62
|
+
include DrainSupport
|
63
|
+
|
64
|
+
# Write some data to the stream. The data is put on an internal write queue, and the write actually happens
|
65
|
+
# asynchronously. To avoid running out of memory by putting too much on the write queue,
|
66
|
+
# check the {#write_queue_full?} method before writing. This is done automatically if using a {Pump}.
|
67
|
+
# @param [Buffer]. The buffer to write.
|
68
|
+
def write(buff)
|
69
|
+
@j_del.write(buff._to_java_buffer)
|
70
|
+
self
|
71
|
+
end
|
67
72
|
|
68
73
|
# @private
|
69
74
|
def _to_write_stream
|
@@ -72,12 +77,8 @@ module Vertx
|
|
72
77
|
|
73
78
|
end
|
74
79
|
|
75
|
-
|
76
|
-
|
77
|
-
# Any class that mixes in this module can be used by a {Pump} to pump data from a {ReadStream} to it.
|
78
|
-
#
|
79
|
-
# @author {http://tfox.org Tim Fox}
|
80
|
-
module ReadStream
|
80
|
+
|
81
|
+
module ReadSupport
|
81
82
|
|
82
83
|
# Set a data handler. As data is read, the handler will be called with the data.
|
83
84
|
# @param [Block] hndlr. The data handler
|
@@ -106,6 +107,16 @@ module Vertx
|
|
106
107
|
@j_del.exceptionHandler(hndlr)
|
107
108
|
self
|
108
109
|
end
|
110
|
+
end
|
111
|
+
|
112
|
+
# A mixin module which represents a stream of data that can be read from.
|
113
|
+
#
|
114
|
+
# Any class that mixes in this module can be used by a {Pump} to pump data from a {ReadStream} to it.
|
115
|
+
#
|
116
|
+
# @author {http://tfox.org Tim Fox}
|
117
|
+
module ReadStream
|
118
|
+
|
119
|
+
include ReadSupport
|
109
120
|
|
110
121
|
# Set an end handler on the stream. Once the stream has ended, and there is no more data to be read, this handler will be called.
|
111
122
|
# @param [Block] hndlr. The exception handler
|
@@ -13,47 +13,14 @@
|
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
15
|
module Vertx
|
16
|
+
require 'core/network_support'
|
16
17
|
|
17
18
|
# Mixin module that provides all the common TCP params that can be set.
|
18
19
|
#
|
19
20
|
# @author {http://tfox.org Tim Fox}
|
20
21
|
module TCPSupport
|
21
22
|
|
22
|
-
|
23
|
-
# @param [FixNum] val. The size in bytes.
|
24
|
-
# @return [] A reference to self so invocations can be chained
|
25
|
-
def send_buffer_size=(val)
|
26
|
-
@j_del.setSendBufferSize(val)
|
27
|
-
self
|
28
|
-
end
|
29
|
-
|
30
|
-
# Set or get send buffer size for fluent API
|
31
|
-
def send_buffer_size(val = nil)
|
32
|
-
if val
|
33
|
-
@j_del.setSendBufferSize(val)
|
34
|
-
self
|
35
|
-
else
|
36
|
-
@j_del.getSendBufferSize
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
# Set the TCP receive buffer size.
|
41
|
-
# @param [FixNum] val. The size in bytes.
|
42
|
-
# @return [] A reference to self so invocations can be chained
|
43
|
-
def receive_buffer_size=(val)
|
44
|
-
@j_del.setReceiveBufferSize(val)
|
45
|
-
self
|
46
|
-
end
|
47
|
-
|
48
|
-
# Set or get send buffer size for fluent API
|
49
|
-
def send_receive_size(val = nil)
|
50
|
-
if val
|
51
|
-
@j_del.setReceiveBufferSize(val)
|
52
|
-
self
|
53
|
-
else
|
54
|
-
@j_del.getReceiveBufferSize
|
55
|
-
end
|
56
|
-
end
|
23
|
+
include NetworkSupport
|
57
24
|
|
58
25
|
# Set the TCP keep alive setting.
|
59
26
|
# @param [Boolean] val. If true, then TCP keep alive will be enabled.
|
@@ -147,4 +114,23 @@ module Vertx
|
|
147
114
|
|
148
115
|
end
|
149
116
|
|
150
|
-
|
117
|
+
module ServerTCPSupport
|
118
|
+
# Set the accept backlog
|
119
|
+
# @param [FixNum] val.
|
120
|
+
# @return [] A reference to self so invocations can be chained
|
121
|
+
def accept_backlog=(val)
|
122
|
+
@j_del.setAcceptBacklog(val)
|
123
|
+
self
|
124
|
+
end
|
125
|
+
|
126
|
+
# Set or get the accept backlog for fluent API
|
127
|
+
def accept_backlog(val = nil)
|
128
|
+
if val
|
129
|
+
@j_del.setAcceptBacklog(val)
|
130
|
+
self
|
131
|
+
else
|
132
|
+
@j_del.getAcceptBacklog
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
136
|
+
end
|
data/lib/core/timers.rb
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
# Copyright 2011 the original author or authors.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
module Vertx
|
16
|
+
|
17
|
+
@@j_vertx = org.vertx.java.platform.impl.JRubyVerticleFactory.vertx()
|
18
|
+
|
19
|
+
# Sets a one-shot timer that will fire after a certain delay.
|
20
|
+
# This method will accept either a Proc or a block.
|
21
|
+
# @param [FixNum] delay the delay, in milliseconds
|
22
|
+
# @param [Proc] proc a proc representing the code that will be run after the delay
|
23
|
+
# @param [Block] hndlr a block representing the code that will be run after the delay
|
24
|
+
# @return [FixNum] the unique id of the timer
|
25
|
+
def Vertx.set_timer(delay, proc = nil, &hndlr)
|
26
|
+
hndlr = proc if proc
|
27
|
+
@@j_vertx.setTimer(delay, hndlr)
|
28
|
+
end
|
29
|
+
|
30
|
+
# Sets a periodic timer.
|
31
|
+
# This method will accept either a Proc or a block.
|
32
|
+
# @param [FixNum] delay the period of the timer, in milliseconds
|
33
|
+
# @param [Proc] proc a proc representing the code that will be run when the timer fires
|
34
|
+
# @param [Block] hndlr a block representing the code that will be when the timer fires
|
35
|
+
# @return [FixNum] the unique id of the timer
|
36
|
+
def Vertx.set_periodic(delay, proc = nil, &hndlr)
|
37
|
+
hndlr = proc if proc
|
38
|
+
@@j_vertx.setPeriodic(delay, hndlr)
|
39
|
+
end
|
40
|
+
|
41
|
+
# Cancels a timer.
|
42
|
+
# @param [FixNum] id the id of the timer, as returned from {Vertx.set_timer} or {Vertx.set_periodic}
|
43
|
+
# @return [Boolean] true if the timer was cancelled, false if it wasn't found.
|
44
|
+
def Vertx.cancel_timer(id)
|
45
|
+
@@j_vertx.cancelTimer(id)
|
46
|
+
end
|
47
|
+
|
48
|
+
# Put the handler on the event queue for this loop so it will be run asynchronously
|
49
|
+
# ASAP after this event has been processed
|
50
|
+
# @param [Proc] proc a proc representing the code that will be run ASAP
|
51
|
+
# @param [Block] hndlr a block representing the code that will be run ASAP
|
52
|
+
def Vertx.run_on_context(proc = nil, &hndlr)
|
53
|
+
hndlr = proc if proc
|
54
|
+
@@j_vertx.runOnContext(hndlr)
|
55
|
+
end
|
56
|
+
|
57
|
+
# Get a reference to the current context
|
58
|
+
def Vertx.current_context
|
59
|
+
Context.new(@@j_vertx.currentContext())
|
60
|
+
end
|
61
|
+
|
62
|
+
class Context
|
63
|
+
# @private
|
64
|
+
def initialize(j_del)
|
65
|
+
@j_del = j_del
|
66
|
+
end
|
67
|
+
|
68
|
+
def run_on_context(&hndlr)
|
69
|
+
@j_del.runOnContext(hndlr)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# Redefine the require and load methods so we can make them synchronized
|
2
|
+
|
3
|
+
require 'jruby/synchronized'
|
4
|
+
|
5
|
+
module Kernel
|
6
|
+
# make an alias of the original require
|
7
|
+
alias_method :original_require, :require
|
8
|
+
alias_method :original_load, :load
|
9
|
+
|
10
|
+
def require name
|
11
|
+
org.vertx.java.platform.impl.JRubyVerticleFactory.requireCallback do
|
12
|
+
#puts "in require callback"
|
13
|
+
original_require name
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def load name
|
18
|
+
org.vertx.java.platform.impl.JRubyVerticleFactory.requireCallback do
|
19
|
+
#puts "in require callback"
|
20
|
+
original_load name
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
|
File without changes
|
data/lib/jubilee.rb
CHANGED
@@ -1,11 +1,5 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require File.join(File.dirname(__FILE__), "../jars/jackson-annotations-2.2.2.jar")
|
4
|
-
require File.join(File.dirname(__FILE__), "../jars/hazelcast-3.2.3.jar")
|
5
|
-
require File.join(File.dirname(__FILE__), "../jars/vertx-core-2.1.1.jar")
|
6
|
-
require File.join(File.dirname(__FILE__), "../jars/vertx-hazelcast-2.1.1.jar")
|
7
|
-
require File.join(File.dirname(__FILE__), "../jars/vertx-platform-2.1.1.jar")
|
8
|
-
require File.join(File.dirname(__FILE__), "../jars/netty-all-4.0.20.Final.jar")
|
1
|
+
# this is only used when it's running as a rubygem
|
2
|
+
Dir[File.expand_path("../../jars/*.jar", __FILE__)].each{|jar| require jar}
|
9
3
|
|
10
4
|
require 'jubilee/jubilee.jar'
|
11
5
|
require 'rack'
|
@@ -16,3 +10,6 @@ require 'jubilee/application'
|
|
16
10
|
require 'jubilee/configuration'
|
17
11
|
require 'jubilee/response'
|
18
12
|
require 'rack/handler/jubilee'
|
13
|
+
|
14
|
+
module Jubilee
|
15
|
+
end
|
data/lib/jubilee/cli.rb
CHANGED
@@ -129,7 +129,7 @@ module Jubilee
|
|
129
129
|
end
|
130
130
|
|
131
131
|
o.on "-v", "--version", "Print the version information" do
|
132
|
-
puts "jubilee version #{Jubilee::Version::STRING} on Vert.x 2.1.
|
132
|
+
puts "jubilee version #{Jubilee::Version::STRING} on Vert.x 2.1.2"
|
133
133
|
exit 0
|
134
134
|
end
|
135
135
|
end
|
Binary file
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# Redefine the require and load methods so we can make them synchronized
|
2
|
+
|
3
|
+
require 'jruby/synchronized'
|
4
|
+
|
5
|
+
module Kernel
|
6
|
+
# make an alias of the original require
|
7
|
+
alias_method :original_require, :require
|
8
|
+
alias_method :original_load, :load
|
9
|
+
|
10
|
+
def require(*params)
|
11
|
+
org.vertx.java.platform.impl.JRubyVerticleFactory.requireCallback do
|
12
|
+
#puts "in require callback"
|
13
|
+
original_require(*params)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def load(*params)
|
18
|
+
org.vertx.java.platform.impl.JRubyVerticleFactory.requireCallback do
|
19
|
+
#puts "in require callback"
|
20
|
+
original_load(*params)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|