jubilee 0.1.2
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/.rbenv-version +1 -0
- data/Gemfile +16 -0
- data/Gemfile.lock +54 -0
- data/Guardfile +24 -0
- data/README.md +61 -0
- data/Rakefile +94 -0
- data/VERSION +1 -0
- data/bin/jubilee +6 -0
- data/bin/jubilee_d +10 -0
- data/examples/jubilee/keystore.jks +0 -0
- data/examples/jubilee/server-keystore.jks +0 -0
- data/examples/ssl/ServerTest.java +19 -0
- data/examples/ssl/webroot/index.html +10 -0
- data/jars/netty-3.6.0.Beta1.jar +0 -0
- data/jars/vertx-core-1.3.0.final.jar +0 -0
- data/java/.idea/ant.xml +7 -0
- data/java/.idea/libraries/jruby.xml +9 -0
- data/java/.idea/libraries/netty_3_6_0_Beta1.xml +9 -0
- data/java/.idea/libraries/vertx_core_1_3_0_final.xml +9 -0
- data/java/src/jubilee/JubileeService.java +21 -0
- data/java/src/org/jruby/jubilee/Const.java +148 -0
- data/java/src/org/jruby/jubilee/RackApplication.java +78 -0
- data/java/src/org/jruby/jubilee/RackEnvironment.java +13 -0
- data/java/src/org/jruby/jubilee/RackErrors.java +44 -0
- data/java/src/org/jruby/jubilee/RackInput.java +62 -0
- data/java/src/org/jruby/jubilee/RackResponse.java +16 -0
- data/java/src/org/jruby/jubilee/Server.java +104 -0
- data/java/src/org/jruby/jubilee/deploy/Starter.java +26 -0
- data/java/src/org/jruby/jubilee/impl/DefaultRackEnvironment.java +98 -0
- data/java/src/org/jruby/jubilee/impl/NullIO.java +111 -0
- data/java/src/org/jruby/jubilee/impl/RubyIORackErrors.java +68 -0
- data/java/src/org/jruby/jubilee/impl/RubyIORackInput.java +164 -0
- data/lib/jubilee.rb +11 -0
- data/lib/jubilee/application.rb +13 -0
- data/lib/jubilee/cli.rb +74 -0
- data/lib/jubilee/configuration.rb +52 -0
- data/lib/jubilee/const.rb +39 -0
- data/lib/jubilee/jubilee.jar +0 -0
- data/lib/jubilee/response.rb +64 -0
- data/lib/jubilee/server.rb +16 -0
- data/lib/rack/handler/jubilee.rb +43 -0
- data/test/.rbenv-version +1 -0
- data/test/config/app.rb +5 -0
- data/test/jubilee/test_cli.rb +11 -0
- data/test/jubilee/test_config.rb +14 -0
- data/test/jubilee/test_persistent.rb +238 -0
- data/test/jubilee/test_rack_server.rb +116 -0
- data/test/jubilee/test_server.rb +68 -0
- data/test/sinatra_app/app.rb +31 -0
- data/test/sinatra_app/config.ru +6 -0
- data/test/sinatra_app/public/test.html +10 -0
- data/test/sinatra_app/unicorn.conf.rb +29 -0
- data/test/test_helper.rb +21 -0
- metadata +160 -0
@@ -0,0 +1,68 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
require 'net/http'
|
3
|
+
|
4
|
+
class TestJubileeServer < MiniTest::Unit::TestCase
|
5
|
+
def setup
|
6
|
+
@host, @port = "localhost", 3215
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_server_lambda
|
10
|
+
app = lambda {|env| [200, {"Content-Type" => "text/plain"}, ["http"]] }
|
11
|
+
server = Jubilee::Server.new(app)
|
12
|
+
server.start
|
13
|
+
|
14
|
+
http, body = Net::HTTP.new(@host, @port), nil
|
15
|
+
http.start do
|
16
|
+
req = Net::HTTP::Get.new "/", {}
|
17
|
+
http.request(req) do |resp|
|
18
|
+
body = resp.body
|
19
|
+
end
|
20
|
+
end
|
21
|
+
server.stop
|
22
|
+
assert_equal "http", body
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_server_embeded
|
26
|
+
config = Jubilee::Configuration.new(rackup: File.join(File.dirname(__FILE__), "../config/app.rb"))
|
27
|
+
config.load
|
28
|
+
server = Jubilee::Server.new(config.app)
|
29
|
+
server.start
|
30
|
+
http, body = Net::HTTP.new(@host, @port), nil
|
31
|
+
http.start do
|
32
|
+
req = Net::HTTP::Get.new "/", {}
|
33
|
+
http.request(req) do |resp|
|
34
|
+
body = resp.body
|
35
|
+
end
|
36
|
+
end
|
37
|
+
server.stop
|
38
|
+
assert_equal "embeded app", body
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_large_post_body
|
42
|
+
skip
|
43
|
+
end
|
44
|
+
|
45
|
+
|
46
|
+
def test_url_scheme_for_https
|
47
|
+
app = lambda { |env| [200, {}, [env['rack.url_scheme']]] }
|
48
|
+
server = Jubilee::Server.new(app, {port:@port, ssl:true,
|
49
|
+
keystore: File.join(File.dirname(__FILE__), "../../examples/jubilee/server-keystore.jks"),
|
50
|
+
keystore_password: "wibble"})
|
51
|
+
server.start
|
52
|
+
http = Net::HTTP.new @host, @port
|
53
|
+
http.use_ssl = true
|
54
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
55
|
+
|
56
|
+
body = nil
|
57
|
+
http.start do
|
58
|
+
req = Net::HTTP::Get.new "/", {}
|
59
|
+
|
60
|
+
http.request(req) do |rep|
|
61
|
+
body = rep.body
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
server.stop
|
66
|
+
assert_equal "https", body
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
#$:.unshift("/home/isaiah/codes/ruby/rack/lib")
|
2
|
+
require 'sinatra'
|
3
|
+
|
4
|
+
class Vertx < Sinatra::Base
|
5
|
+
get '/' do
|
6
|
+
"<h1>Hello Sinatra!</h1>"
|
7
|
+
end
|
8
|
+
|
9
|
+
post "/home/test" do
|
10
|
+
#require 'pp'
|
11
|
+
#pp env['rack.input'].gets
|
12
|
+
#require 'rack/multipart'
|
13
|
+
#puts "=========="
|
14
|
+
##pp Rack::Multipart.parse_multipart(env)
|
15
|
+
#puts "=========="
|
16
|
+
##pp env
|
17
|
+
#pp request.params
|
18
|
+
#puts "=========="
|
19
|
+
a = ""
|
20
|
+
params.each{|k,v| a << "#{k}:#{v}\n"}
|
21
|
+
a
|
22
|
+
end
|
23
|
+
|
24
|
+
get '/app' do
|
25
|
+
<<EOF
|
26
|
+
<h1>Powered by Jubilee</h1>
|
27
|
+
<a href="http://www.github.com/isaiah/jubilee">Homepage</a>
|
28
|
+
<p>Date: #{Time.now.strftime("%m %d, %Y")}</p>
|
29
|
+
EOF
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,6 @@
|
|
1
|
+
require './app'
|
2
|
+
#$:.unshift("/home/isaiah/codes/ruby/rack/lib")
|
3
|
+
#require 'pp'
|
4
|
+
#require 'rack/multipart'
|
5
|
+
#run lambda { |env| pp env; puts "=="; pp env['rack.input'].gets; puts "=="; params = Rack::Multipart.parse_multipart(env); pp params; [200, {"Content-Type" => "text/plain", "Content-Length" => "44"}, params.map{|k,v| k + ":" + v}] }
|
6
|
+
run Vertx
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# Use at least one worker per core if you're on a dedicated server,
|
2
|
+
# more will usually help for _short_ waits on databases/caches.
|
3
|
+
worker_processes 10
|
4
|
+
|
5
|
+
# Since Unicorn is never exposed to outside clients, it does not need to
|
6
|
+
# run on the standard HTTP port (80), there is no reason to start Unicorn
|
7
|
+
# as root unless it's from system init scripts.
|
8
|
+
# If running the master process as root and the workers as an unprivileged
|
9
|
+
# user, do this to switch euid/egid in the workers (also chowns logs):
|
10
|
+
# user "unprivileged_user", "unprivileged_group"
|
11
|
+
|
12
|
+
# Help ensure your application will always spawn in the symlinked
|
13
|
+
# "current" directory that Capistrano sets up.
|
14
|
+
|
15
|
+
# listen on both a Unix domain socket and a TCP port,
|
16
|
+
# we use a shorter backlog for quicker failover when busy
|
17
|
+
listen 8080, :tcp_nopush => true
|
18
|
+
|
19
|
+
# nuke workers after 30 seconds instead of 60 seconds (the default)
|
20
|
+
timeout 30
|
21
|
+
|
22
|
+
# feel free to point this anywhere accessible on the filesystem
|
23
|
+
pid "/tmp/unicorn.pid"
|
24
|
+
|
25
|
+
# By default, the Unicorn logger will write to stderr.
|
26
|
+
# Additionally, ome applications/frameworks log to stderr or stdout,
|
27
|
+
# so prevent them from going to /dev/null when daemonized here:
|
28
|
+
#stderr_path "log/unicorn.stderr.log"
|
29
|
+
#stdout_path "log/unicorn.stdout.log"
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
$:.unshift(File.join(File.dirname(__FILE__), "../lib"))
|
2
|
+
require 'minitest/autorun'
|
3
|
+
require 'minitest/unit'
|
4
|
+
require 'jubilee'
|
5
|
+
require 'net/http'
|
6
|
+
require 'net/http/post/multipart'
|
7
|
+
def hit(uris)
|
8
|
+
uris.map do |u|
|
9
|
+
res = nil
|
10
|
+
|
11
|
+
if u.kind_of? String
|
12
|
+
res = Net::HTTP.get(URI.parse(u))
|
13
|
+
else
|
14
|
+
url = URI.parse(u[0])
|
15
|
+
res = Net::HTTP.new(url.host, url.port).start {|h| h.request(u[1]) }
|
16
|
+
end
|
17
|
+
|
18
|
+
assert res != nil, "Didn't get a response: #{u}"
|
19
|
+
res
|
20
|
+
end
|
21
|
+
end
|
metadata
ADDED
@@ -0,0 +1,160 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: jubilee
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease:
|
5
|
+
version: 0.1.2
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Isaiah Peng
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-12-10 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rack
|
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: spoon
|
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: :runtime
|
50
|
+
- !ruby/object:Gem::Dependency
|
51
|
+
name: jeweler
|
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
|
+
description: Web Server that rocks!
|
69
|
+
email: issaria@gmail.com
|
70
|
+
executables:
|
71
|
+
- jubilee
|
72
|
+
- jubilee_d
|
73
|
+
extensions: []
|
74
|
+
extra_rdoc_files:
|
75
|
+
- README.md
|
76
|
+
files:
|
77
|
+
- .rbenv-version
|
78
|
+
- Gemfile
|
79
|
+
- Gemfile.lock
|
80
|
+
- Guardfile
|
81
|
+
- README.md
|
82
|
+
- Rakefile
|
83
|
+
- VERSION
|
84
|
+
- bin/jubilee
|
85
|
+
- bin/jubilee_d
|
86
|
+
- examples/jubilee/keystore.jks
|
87
|
+
- examples/jubilee/server-keystore.jks
|
88
|
+
- examples/ssl/ServerTest.java
|
89
|
+
- examples/ssl/webroot/index.html
|
90
|
+
- jars/netty-3.6.0.Beta1.jar
|
91
|
+
- jars/vertx-core-1.3.0.final.jar
|
92
|
+
- java/.idea/ant.xml
|
93
|
+
- java/.idea/libraries/jruby.xml
|
94
|
+
- java/.idea/libraries/netty_3_6_0_Beta1.xml
|
95
|
+
- java/.idea/libraries/vertx_core_1_3_0_final.xml
|
96
|
+
- java/src/jubilee/JubileeService.java
|
97
|
+
- java/src/org/jruby/jubilee/Const.java
|
98
|
+
- java/src/org/jruby/jubilee/RackApplication.java
|
99
|
+
- java/src/org/jruby/jubilee/RackEnvironment.java
|
100
|
+
- java/src/org/jruby/jubilee/RackErrors.java
|
101
|
+
- java/src/org/jruby/jubilee/RackInput.java
|
102
|
+
- java/src/org/jruby/jubilee/RackResponse.java
|
103
|
+
- java/src/org/jruby/jubilee/Server.java
|
104
|
+
- java/src/org/jruby/jubilee/deploy/Starter.java
|
105
|
+
- java/src/org/jruby/jubilee/impl/DefaultRackEnvironment.java
|
106
|
+
- java/src/org/jruby/jubilee/impl/NullIO.java
|
107
|
+
- java/src/org/jruby/jubilee/impl/RubyIORackErrors.java
|
108
|
+
- java/src/org/jruby/jubilee/impl/RubyIORackInput.java
|
109
|
+
- lib/jubilee.rb
|
110
|
+
- lib/jubilee/application.rb
|
111
|
+
- lib/jubilee/cli.rb
|
112
|
+
- lib/jubilee/configuration.rb
|
113
|
+
- lib/jubilee/const.rb
|
114
|
+
- lib/jubilee/jubilee.jar
|
115
|
+
- lib/jubilee/response.rb
|
116
|
+
- lib/jubilee/server.rb
|
117
|
+
- lib/rack/handler/jubilee.rb
|
118
|
+
- test/.rbenv-version
|
119
|
+
- test/config/app.rb
|
120
|
+
- test/jubilee/test_cli.rb
|
121
|
+
- test/jubilee/test_config.rb
|
122
|
+
- test/jubilee/test_persistent.rb
|
123
|
+
- test/jubilee/test_rack_server.rb
|
124
|
+
- test/jubilee/test_server.rb
|
125
|
+
- test/sinatra_app/app.rb
|
126
|
+
- test/sinatra_app/config.ru
|
127
|
+
- test/sinatra_app/public/test.html
|
128
|
+
- test/sinatra_app/unicorn.conf.rb
|
129
|
+
- test/test_helper.rb
|
130
|
+
homepage: http://github.com/isaiah/jubilee
|
131
|
+
licenses:
|
132
|
+
- MIT
|
133
|
+
post_install_message:
|
134
|
+
rdoc_options: []
|
135
|
+
require_paths:
|
136
|
+
- lib
|
137
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
138
|
+
requirements:
|
139
|
+
- - ! '>='
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: !binary |-
|
142
|
+
MA==
|
143
|
+
segments:
|
144
|
+
- 0
|
145
|
+
hash: 2
|
146
|
+
none: false
|
147
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
148
|
+
requirements:
|
149
|
+
- - ! '>='
|
150
|
+
- !ruby/object:Gem::Version
|
151
|
+
version: !binary |-
|
152
|
+
MA==
|
153
|
+
none: false
|
154
|
+
requirements: []
|
155
|
+
rubyforge_project:
|
156
|
+
rubygems_version: 1.8.24
|
157
|
+
signing_key:
|
158
|
+
specification_version: 3
|
159
|
+
summary: JRuby webserver based on Vertx
|
160
|
+
test_files: []
|