jubilee 0.2.1 → 0.2.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/CHANGELOG ADDED
@@ -0,0 +1,5 @@
1
+ Release 0.2.1
2
+ =============
3
+
4
+ Supoort multiple values for a header.
5
+ Add Rack::MethodOverride to support DELETE, PUT, HEAD, OPTION methods.
data/Gemfile CHANGED
@@ -1,6 +1,7 @@
1
1
  source :rubygems
2
2
 
3
- gem 'rack', '~> 1.4.1'
3
+ #gem 'rack', '~> 1.4.1'
4
+ gem 'rack', path: "../../ruby/rack"
4
5
  gem 'spoon'
5
6
 
6
7
  group :development do
data/Gemfile.lock CHANGED
@@ -1,3 +1,8 @@
1
+ PATH
2
+ remote: ../../ruby/rack
3
+ specs:
4
+ rack (1.4.1)
5
+
1
6
  GEM
2
7
  remote: http://rubygems.org/
3
8
  specs:
@@ -25,8 +30,7 @@ GEM
25
30
  method_source (~> 0.8)
26
31
  slop (~> 3.3.1)
27
32
  spoon (~> 0.0)
28
- rack (1.4.1)
29
- rake (10.0.2)
33
+ rake (10.0.3)
30
34
  rcov (0.9.11-java)
31
35
  rdoc (3.12)
32
36
  json (~> 1.4)
@@ -43,6 +47,6 @@ DEPENDENCIES
43
47
  jeweler
44
48
  multipart-post
45
49
  pry
46
- rack (~> 1.4.1)
50
+ rack!
47
51
  rcov
48
52
  spoon
data/Rakefile CHANGED
@@ -26,7 +26,7 @@ Jeweler::Tasks.new do |gem|
26
26
  gem.homepage = "http://github.com/isaiah/jubilee"
27
27
  gem.license = "MIT"
28
28
  gem.summary = %Q{JRuby webserver based on Vertx}
29
- gem.description = %Q{Web Server that rocks!}
29
+ gem.description = %Q{Jubilee is a experimental webserver built for speed, it's based on Vertx.}
30
30
  gem.email = "issaria@gmail.com"
31
31
  gem.authors = ["Isaiah Peng"]
32
32
  # dependencies defined in Gemfile
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.1
1
+ 0.2.2
@@ -21,18 +21,17 @@ import java.util.concurrent.*;
21
21
  public class RackApplication {
22
22
  private IRubyObject app;
23
23
  private boolean ssl;
24
- private Buffer bodyBuf;
25
24
 
26
25
  private ExecutorService exec;
27
26
 
28
27
  public RackApplication(IRubyObject app, boolean ssl) {
29
28
  this.app = app;
30
29
  this.ssl = ssl;
31
- bodyBuf = new Buffer(0);
32
30
  exec = Executors.newCachedThreadPool();
33
31
  }
34
32
 
35
33
  public void call(final HttpServerRequest request) {
34
+ final Buffer bodyBuf = new Buffer(0);
36
35
  final Ruby runtime = app.getRuntime();
37
36
  final CountDownLatch bodyLatch = new CountDownLatch(1);
38
37
  request.dataHandler(new Handler<Buffer>() {
Binary file
@@ -25,7 +25,7 @@ module Rack
25
25
 
26
26
  puts "Jubilee #{::Jubilee::Const::JUBILEE_VERSION} starting..."
27
27
  puts "* Environment: #{ENV['RACK_ENV']}"
28
- puts "* Listening on tcp://#{options[:Host]}:#{options[:Port]}"
28
+ puts "* Listening on http://#{options[:Host]}:#{options[:Port]}"
29
29
 
30
30
  yield @server if block_given?
31
31
 
@@ -3,6 +3,7 @@ require 'rack/lint'
3
3
  require 'rack/commonlogger'
4
4
 
5
5
  class TestRackServer < MiniTest::Unit::TestCase
6
+ include Helpers
6
7
 
7
8
  class ErrorChecker
8
9
  def initialize(app)
@@ -43,6 +44,8 @@ class TestRackServer < MiniTest::Unit::TestCase
43
44
 
44
45
  @simple = lambda { |env| [200, { "X-Header" => "Works" }, ["Hello"]] }
45
46
  @checker = ErrorChecker.new ServerLint.new(@simple)
47
+ @host = "localhost"
48
+ @port = 3215
46
49
  end
47
50
 
48
51
  def teardown
@@ -87,6 +90,20 @@ class TestRackServer < MiniTest::Unit::TestCase
87
90
  assert_equal "/test/a/b/c", input['PATH_INFO']
88
91
  end
89
92
 
93
+ def test_request_method
94
+ input = nil
95
+ @server = Jubilee::Server.new (lambda { |env| input = env; @simple.call(env) })
96
+ @server.start
97
+
98
+ POST('/test/a/b/c', {"_method" => "delete", "user" => 1})
99
+ assert_equal "DELETE", input['REQUEST_METHOD']
100
+
101
+ # it should not memorize env
102
+ POST('/test/a/b/c', {"foo" => "bar"})
103
+ assert_equal "POST", input['REQUEST_METHOD']
104
+
105
+ end
106
+
90
107
  def test_query_string
91
108
  input = nil
92
109
  @server = Jubilee::Server.new (lambda { |env| input = env; @simple.call(env) })
data/test/test_helper.rb CHANGED
@@ -4,6 +4,7 @@ require 'minitest/unit'
4
4
  require 'jubilee'
5
5
  require 'net/http'
6
6
  require 'net/http/post/multipart'
7
+ require 'yaml'
7
8
  def hit(uris)
8
9
  uris.map do |u|
9
10
  res = nil
@@ -19,3 +20,40 @@ def hit(uris)
19
20
  res
20
21
  end
21
22
  end
23
+
24
+ module Helpers
25
+ attr_reader :status, :response
26
+
27
+ def GET(path, header={})
28
+ Net::HTTP.start(@host, @port) { |http|
29
+ user = header.delete(:user)
30
+ passwd = header.delete(:passwd)
31
+
32
+ get = Net::HTTP::Get.new(path, header)
33
+ get.basic_auth user, passwd if user && passwd
34
+ http.request(get) { |response|
35
+ @status = response.code.to_i
36
+ begin
37
+ @response = YAML.load(response.body)
38
+ rescue TypeError, ArgumentError
39
+ @response = nil
40
+ end
41
+ }
42
+ }
43
+ end
44
+
45
+ def POST(path, formdata={}, header={})
46
+ Net::HTTP.start(@host, @port) { |http|
47
+ user = header.delete(:user)
48
+ passwd = header.delete(:passwd)
49
+
50
+ post = Net::HTTP::Post.new(path, header)
51
+ post.form_data = formdata
52
+ post.basic_auth user, passwd if user && passwd
53
+ http.request(post) { |response|
54
+ @status = response.code.to_i
55
+ @response = YAML.load(response.body)
56
+ }
57
+ }
58
+ end
59
+ end
metadata CHANGED
@@ -2,28 +2,30 @@
2
2
  name: jubilee
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.2.1
5
+ version: 0.2.2
6
6
  platform: ruby
7
7
  authors:
8
8
  - Isaiah Peng
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-31 00:00:00.000000000 Z
12
+ date: 2013-01-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rack
16
16
  version_requirements: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ~>
18
+ - - ! '>='
19
19
  - !ruby/object:Gem::Version
20
- version: 1.4.1
20
+ version: !binary |-
21
+ MA==
21
22
  none: false
22
23
  requirement: !ruby/object:Gem::Requirement
23
24
  requirements:
24
- - - ~>
25
+ - - ! '>='
25
26
  - !ruby/object:Gem::Version
26
- version: 1.4.1
27
+ version: !binary |-
28
+ MA==
27
29
  none: false
28
30
  prerelease: false
29
31
  type: :runtime
@@ -63,7 +65,7 @@ dependencies:
63
65
  none: false
64
66
  prerelease: false
65
67
  type: :development
66
- description: Web Server that rocks!
68
+ description: Jubilee is a experimental webserver built for speed, it's based on Vertx.
67
69
  email: issaria@gmail.com
68
70
  executables:
69
71
  - jubilee
@@ -73,6 +75,7 @@ extra_rdoc_files:
73
75
  - README.md
74
76
  files:
75
77
  - .rbenv-version
78
+ - CHANGELOG
76
79
  - Gemfile
77
80
  - Gemfile.lock
78
81
  - Guardfile
@@ -89,10 +92,6 @@ files:
89
92
  - jars/jackson-mapper-asl-1.9.4.jar
90
93
  - jars/netty-3.6.0.Beta1.jar
91
94
  - 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
95
  - java/src/jubilee/JubileeService.java
97
96
  - java/src/org/jruby/jubilee/Const.java
98
97
  - java/src/org/jruby/jubilee/RackApplication.java
data/java/.idea/ant.xml DELETED
@@ -1,7 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <project version="4">
3
- <component name="AntConfiguration">
4
- <defaultAnt bundledAnt="true" />
5
- </component>
6
- </project>
7
-
@@ -1,9 +0,0 @@
1
- <component name="libraryTable">
2
- <library name="jruby">
3
- <CLASSES>
4
- <root url="jar://$USER_HOME$/.rbenv/versions/jruby-1.7.0/lib/jruby.jar!/" />
5
- </CLASSES>
6
- <JAVADOC />
7
- <SOURCES />
8
- </library>
9
- </component>
@@ -1,9 +0,0 @@
1
- <component name="libraryTable">
2
- <library name="netty-3.6.0.Beta1">
3
- <CLASSES>
4
- <root url="jar://$PROJECT_DIR$/../jars/netty-3.6.0.Beta1.jar!/" />
5
- </CLASSES>
6
- <JAVADOC />
7
- <SOURCES />
8
- </library>
9
- </component>
@@ -1,9 +0,0 @@
1
- <component name="libraryTable">
2
- <library name="vertx-core-1.3.0.final">
3
- <CLASSES>
4
- <root url="jar://$PROJECT_DIR$/../jars/vertx-core-1.3.0.final.jar!/" />
5
- </CLASSES>
6
- <JAVADOC />
7
- <SOURCES />
8
- </library>
9
- </component>