rubylet-jetty 0.1.0-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.
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: []