rubylet-jetty 0.1.0-java

Sign up to get free protection for your applications and to get access to all the features.
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2012 Common Ground Publishing
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.1.0
@@ -0,0 +1,5 @@
1
+ require 'rack/handler'
2
+ require 'rubylet/jetty'
3
+
4
+ Rack::Handler.register('rubylet/jetty', Rubylet::Jetty)
5
+
@@ -0,0 +1,87 @@
1
+ require 'mini_aether'
2
+ MiniAether.setup do
3
+ jar 'org.eclipse.jetty:jetty-servlet:8.1.7.v20120910'
4
+ end
5
+
6
+ require 'rack/handler'
7
+ require 'rubylet/servlet'
8
+
9
+ module Rubylet
10
+ class Jetty
11
+ Server = Java::OrgEclipseJettyServer::Server
12
+ ServletContextHandler = Java::OrgEclipseJettyServlet::ServletContextHandler
13
+ ServletHolder = Java::OrgEclipseJettyServlet::ServletHolder
14
+ SelectChannelConnector = Java::OrgEclipseJettyServerNio::SelectChannelConnector
15
+ ExecutorThreadPool = Java::OrgEclipseJettyUtilThread::ExecutorThreadPool
16
+ DefaultServlet = Java::OrgEclipseJettyServlet::DefaultServlet
17
+
18
+ class << self
19
+ def run(app, options)
20
+ @server = Server.new
21
+
22
+ connector = SelectChannelConnector.new
23
+ connector.setPort options[:Port].to_i
24
+ connector.setHost options[:Host]
25
+ @server.addConnector connector
26
+
27
+ if options[:Threads]
28
+ pool = ExecutorThreadPool.new(options[:Threads].to_i,
29
+ options[:Threads].to_i,
30
+ 0)
31
+ @server.setThreadPool pool
32
+ end
33
+
34
+ context = ServletContextHandler.new(ServletContextHandler::SESSIONS)
35
+ context.setContextPath('/')
36
+
37
+ ServletHolder.new(Rubylet::Servlet.new).tap do |holder|
38
+ holder.setInitParameter 'jrubyHome', jruby_home
39
+ holder.setInitParameter 'appRoot', File.dirname(options[:config])
40
+ holder.setInitParameter 'rackupFile', options[:config]
41
+ context.addServlet holder, '/*'
42
+ end
43
+
44
+ if options[:StaticUrls]
45
+ ServletHolder.new(DefaultServlet.new).tap do |holder|
46
+ {
47
+ 'acceptRanges' => true,
48
+ 'welcomeServlets' => false,
49
+ 'gzip' => true,
50
+ 'resourceBase' => options[:StaticRoot] || 'public'
51
+ }.each { |k,v| holder.setInitParameter(k, v.to_s) }
52
+
53
+ options[:StaticUrls].split(',').each do |prefix|
54
+ prefix = "/#{prefix}" unless prefix.start_with? '/'
55
+ context.addServlet holder, "#{prefix}/*"
56
+ end
57
+ end
58
+ end
59
+
60
+ @server.setHandler(context)
61
+ @server.start
62
+ @server.join
63
+ end
64
+
65
+ def jruby_home
66
+ regex = %r{/lib/ruby/site_ruby.*}
67
+ $LOAD_PATH.find { |p| p =~ regex }.gsub(regex, '')
68
+ end
69
+
70
+ def shutdown
71
+ @server.stop
72
+ end
73
+
74
+ def valid_options
75
+ {
76
+ 'Threads=NUM' =>
77
+ 'Number of threads in the threadpool (default unlimited)',
78
+ 'StaticUrls=PREFIXES' =>
79
+ 'Comma separated list of URL prefixes to static files, e.g. "/stylesheets"',
80
+ 'StaticRoot=PATH' =>
81
+ 'Path to static files (default "public")'
82
+ }
83
+ end
84
+ end
85
+ end
86
+ end
87
+
metadata ADDED
@@ -0,0 +1,165 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rubylet-jetty
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.1.0
6
+ platform: java
7
+ authors:
8
+ - CG Labs
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-12-13 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: mini_aether
16
+ version_requirements: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ! '>='
19
+ - !ruby/object:Gem::Version
20
+ version: !binary |-
21
+ MA==
22
+ none: false
23
+ requirement: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ! '>='
26
+ - !ruby/object:Gem::Version
27
+ version: !binary |-
28
+ MA==
29
+ none: false
30
+ prerelease: false
31
+ type: :runtime
32
+ - !ruby/object:Gem::Dependency
33
+ name: minitest
34
+ version_requirements: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - ! '>='
37
+ - !ruby/object:Gem::Version
38
+ version: !binary |-
39
+ MA==
40
+ none: false
41
+ requirement: !ruby/object:Gem::Requirement
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: !binary |-
46
+ MA==
47
+ none: false
48
+ prerelease: false
49
+ type: :development
50
+ - !ruby/object:Gem::Dependency
51
+ name: minitest-matchers
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ! '>='
55
+ - !ruby/object:Gem::Version
56
+ version: !binary |-
57
+ MA==
58
+ none: false
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ! '>='
62
+ - !ruby/object:Gem::Version
63
+ version: !binary |-
64
+ MA==
65
+ none: false
66
+ prerelease: false
67
+ type: :development
68
+ - !ruby/object:Gem::Dependency
69
+ name: rack
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ! '>='
73
+ - !ruby/object:Gem::Version
74
+ version: !binary |-
75
+ MA==
76
+ none: false
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ! '>='
80
+ - !ruby/object:Gem::Version
81
+ version: !binary |-
82
+ MA==
83
+ none: false
84
+ prerelease: false
85
+ type: :development
86
+ - !ruby/object:Gem::Dependency
87
+ name: rake
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - ! '>='
91
+ - !ruby/object:Gem::Version
92
+ version: !binary |-
93
+ MA==
94
+ none: false
95
+ requirement: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - ! '>='
98
+ - !ruby/object:Gem::Version
99
+ version: !binary |-
100
+ MA==
101
+ none: false
102
+ prerelease: false
103
+ type: :development
104
+ - !ruby/object:Gem::Dependency
105
+ name: version
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ! '>='
109
+ - !ruby/object:Gem::Version
110
+ version: !binary |-
111
+ MA==
112
+ none: false
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: !binary |-
118
+ MA==
119
+ none: false
120
+ prerelease: false
121
+ type: :development
122
+ description: ''
123
+ email:
124
+ - eng@commongroundpublishing.com
125
+ executables: []
126
+ extensions: []
127
+ extra_rdoc_files: []
128
+ files:
129
+ - VERSION
130
+ - MIT-LICENSE
131
+ - lib/rubylet/jetty.rb
132
+ - lib/rack/handler/rubylet/jetty.rb
133
+ homepage:
134
+ licenses: []
135
+ post_install_message:
136
+ rdoc_options: []
137
+ require_paths:
138
+ - lib
139
+ required_ruby_version: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - ! '>='
142
+ - !ruby/object:Gem::Version
143
+ version: !binary |-
144
+ MA==
145
+ segments:
146
+ - 0
147
+ hash: 2
148
+ none: false
149
+ required_rubygems_version: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - ! '>='
152
+ - !ruby/object:Gem::Version
153
+ version: !binary |-
154
+ MA==
155
+ segments:
156
+ - 0
157
+ hash: 2
158
+ none: false
159
+ requirements: []
160
+ rubyforge_project:
161
+ rubygems_version: 1.8.24
162
+ signing_key:
163
+ specification_version: 3
164
+ summary: Rack::Handler using Rubylet and Jetty
165
+ test_files: []