hokuto 0.0.1.8.1.8

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/.gitignore ADDED
@@ -0,0 +1,20 @@
1
+ *.gem
2
+ *.rbc
3
+ *.sw*
4
+ *~
5
+ .bundle
6
+ .config
7
+ .yardoc
8
+ Gemfile.lock
9
+ InstalledFiles
10
+ _yardoc
11
+ coverage
12
+ doc/
13
+ lib/bundler/man
14
+ pkg
15
+ rdoc
16
+ spec/reports
17
+ test/tmp
18
+ test/version_tmp
19
+ tmp
20
+ /pkg
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in hokuto.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2012 Naoto "Kevin" IMAI TOYODA
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,29 @@
1
+ # Hokuto
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'hokuto'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install hokuto
18
+
19
+ ## Usage
20
+
21
+ TODO: Write usage instructions here
22
+
23
+ ## Contributing
24
+
25
+ 1. Fork it
26
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
27
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
28
+ 4. Push to the branch (`git push origin my-new-feature`)
29
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
data/bin/hokuto ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'hokuto/runner'
data/hokuto.gemspec ADDED
@@ -0,0 +1,22 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'hokuto/version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "hokuto"
8
+ gem.version = Hokuto::VERSION
9
+ gem.authors = ["Kevin TOYODA"]
10
+ gem.email = ["condor1226@gmail.com"]
11
+ gem.description = %q{A lightweight application server for simple ruby web applications.}
12
+ gem.summary = <<-EOF
13
+ Hokuto: A lightweight web application server for simple ruby web applications depending on rack.
14
+ EOF
15
+ gem.homepage = "https://github.com/condor/hokuto"
16
+ gem.add_dependency 'jruby-rack'
17
+
18
+ gem.files = `git ls-files`.split($/)
19
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
20
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
21
+ gem.require_paths = ["lib"]
22
+ end
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
data/lib/hokuto.rb ADDED
@@ -0,0 +1,14 @@
1
+ # -*- coding: UTF-8 -*-
2
+ require 'rubygems'
3
+
4
+ Dir.glob(File.expand_path(File.join(File.dirname(__FILE__), '..', 'jars', '*.jar'))).each do |jar|
5
+ require jar
6
+ end
7
+
8
+ require 'jruby-rack'
9
+
10
+ module Hokuto; end
11
+
12
+ require "hokuto/version"
13
+ require 'hokuto/server'
14
+ require 'hokuto/application'
@@ -0,0 +1,54 @@
1
+ # -*- coding: UTF-8 -*-
2
+
3
+ require 'java'
4
+ require 'jruby-rack'
5
+
6
+ module Hokuto
7
+ class Application
8
+
9
+ java_import org.eclipse.jetty.webapp.WebAppContext
10
+ java_import org.jruby.rack.RackFilter
11
+ java_import javax.servlet.DispatcherType
12
+ java_import java.util.EnumSet
13
+
14
+ attr_reader :context, :context_root, :base_directory, :descriptor, :environment,
15
+ :min_instances, :max_instances
16
+
17
+ def initialize(args)
18
+
19
+ @context = WebAppContext.new
20
+
21
+ if args[:descriptor]
22
+ context.descriptor = args[:descriptor]
23
+ else
24
+ @environment = args[:environment]
25
+ @context_root = args[:context_root]
26
+ @base_directory = args[:base_directory]
27
+ @min_instances = args[:min_instances]
28
+ @max_instances = args[:max_instances]
29
+
30
+ setup_context
31
+ end
32
+ end
33
+
34
+ def ==(other)
35
+ return false unless other.kind_of? Application
36
+ other.context_root == context_root
37
+ end
38
+
39
+ private
40
+ def setup_context
41
+ # context configuration statically defined.
42
+ context.add_filter(RackFilter.java_class.name, '/*', java.util.EnumSet.allOf(javax.servlet.DispatcherType))
43
+ context.set_init_parameter('public.root', 'public')
44
+ context.add_event_listener(org.jruby.rack.RackServletContextListener.new)
45
+
46
+ # context configuration determined by given configuration parameters.
47
+ context.resource_base = base_directory
48
+ context.context_path = context_root
49
+ context.set_init_parameter('rack.env', environment)
50
+ context.set_init_parameter('jruby.min.runtimes', min_instances.to_s)
51
+ context.set_init_parameter('jruby.max.runtimes', max_instances.to_s)
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,69 @@
1
+ # -*- coding: UTF-8 -*-
2
+
3
+ require 'rubygems'
4
+ require 'rack'
5
+ require 'java'
6
+ require 'optparse'
7
+
8
+ require 'hokuto/server'
9
+
10
+ require 'optparse'
11
+ require 'yaml'
12
+
13
+ module Hokuto
14
+ module Main
15
+
16
+ def self.run(args)
17
+ config = parse_arguments(args)
18
+
19
+ if config_file = config.delete(:config_file)
20
+ config = YAML.load_file(config_file)
21
+ end
22
+
23
+ if config.include? :application
24
+ application_configs = [config.delete(:application)]
25
+ else
26
+ application_configs = config.delete(:applications)
27
+ end
28
+
29
+ server = Server.new(config)
30
+ application_configs.each do |application_config|
31
+ server.add Application.new(application_config)
32
+ end if application_configs
33
+ server.run
34
+ end
35
+
36
+ def self.parse_arguments(args)
37
+ result = {
38
+ port: 7080,
39
+ }
40
+ app_config = {
41
+ environment: 'development',
42
+ context_root: '/',
43
+ base_directory: Dir.pwd,
44
+ min_instances: 1,
45
+ max_instances: 1
46
+ }
47
+ parser = OptionParser.new
48
+ parser.on('-f', '--config-file=CONFIG_FILE'){|v|app_config[:config_file] = YAML.load_file(v)}
49
+ parser.on('-w', '--web-xml=WEBXML'){|v|app_config[:descriptor] = v}
50
+ parser.on('-p', '--http-port=HTTP_PORT'){|v|result[:port] = v}
51
+ parser.on('-P', '--https-port=SECURE_PORT'){|v|result[:https_port] = v}
52
+ parser.on('-c', '--context-root=PATH'){|v|app_config[:context_root] = v}
53
+ parser.on('-d', '--base-directory=DIR'){|v|app_config[:base_directory] = v}
54
+ parser.on('-e', '--environment=DIR'){|v|app_config[:environment] = v}
55
+ parser.on('-s', '--min-instances=INSTANCES_ON_STARTUP'){|v|app_config[:min_instances] = v}
56
+ parser.on('-x', '--max-instances=MAXIMUM_INSTANCES'){|v|app_config[:max_instances] = v}
57
+ parser.parse!
58
+
59
+ app_config[:base_directory] ||= Dir.pwd
60
+
61
+ result.merge!(:application => app_config) unless app_config.empty?
62
+ result
63
+ end
64
+
65
+ class << self
66
+ private :parse_arguments
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,4 @@
1
+ require 'hokuto'
2
+ require 'hokuto/main'
3
+
4
+ Hokuto::Main.run(ARGV)
@@ -0,0 +1,53 @@
1
+ # -*- coding: UTF-8 -*-
2
+
3
+ # represents the server process.
4
+ module Hokuto
5
+ class Server
6
+
7
+ java_import org.eclipse.jetty.server.handler.ContextHandlerCollection
8
+ java_import org.eclipse.jetty.server.nio.SelectChannelConnector
9
+ Jetty = org.eclipse.jetty.server.Server
10
+
11
+ attr_reader :http_port, :https_port
12
+ attr_reader :jetty, :applications, :handler_collection, :certs
13
+
14
+ # initialize the server.
15
+ #
16
+ def initialize(options = {})
17
+ @http_port = options[:port].to_i
18
+ @https_port = options[:https_port].to_i if options[:https_port]
19
+ @jetty = Jetty.new
20
+ @applications = {}
21
+ @handler_collection = ContextHandlerCollection.new
22
+ jetty.handler = @handler_collection
23
+ end
24
+
25
+ # register the application.
26
+ def add(application)
27
+ previous_application = applications.delete application.context_root
28
+ handler_collection.remove_handler previous_application.context if previous_application
29
+
30
+ handler_collection.add_handler application.context
31
+ applications[application.context_root] = application
32
+ end
33
+
34
+ # booting the server.
35
+ def run
36
+ [:INT, :TERM, :ABRT].each{|signal|Signal.trap(signal, ->{stop})}
37
+
38
+ connector = SelectChannelConnector.new
39
+ connector.port = http_port
40
+ connector.confidential_port = https_port if https_port
41
+
42
+ jetty.add_connector connector
43
+ jetty.start
44
+
45
+ jetty.join
46
+ end
47
+
48
+ # shutting down the server.
49
+ def stop
50
+ jetty.stop
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,3 @@
1
+ module Hokuto
2
+ VERSION = "0.0.1.8.1.8"
3
+ end
metadata ADDED
@@ -0,0 +1,102 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: hokuto
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1.8.1.8
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Kevin TOYODA
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-12-28 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: jruby-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
+ description: A lightweight application server for simple ruby web applications.
33
+ email:
34
+ - condor1226@gmail.com
35
+ executables:
36
+ - hokuto
37
+ extensions: []
38
+ extra_rdoc_files: []
39
+ files:
40
+ - .gitignore
41
+ - Gemfile
42
+ - LICENSE.txt
43
+ - README.md
44
+ - Rakefile
45
+ - bin/hokuto
46
+ - hokuto.gemspec
47
+ - jars/jetty-ajp-8.1.8.v20121106.jar
48
+ - jars/jetty-annotations-8.1.8.v20121106.jar
49
+ - jars/jetty-client-8.1.8.v20121106.jar
50
+ - jars/jetty-continuation-8.1.8.v20121106.jar
51
+ - jars/jetty-deploy-8.1.8.v20121106.jar
52
+ - jars/jetty-http-8.1.8.v20121106.jar
53
+ - jars/jetty-io-8.1.8.v20121106.jar
54
+ - jars/jetty-jmx-8.1.8.v20121106.jar
55
+ - jars/jetty-jndi-8.1.8.v20121106.jar
56
+ - jars/jetty-overlay-deployer-8.1.8.v20121106.jar
57
+ - jars/jetty-plus-8.1.8.v20121106.jar
58
+ - jars/jetty-policy-8.1.8.v20121106.jar
59
+ - jars/jetty-rewrite-8.1.8.v20121106.jar
60
+ - jars/jetty-security-8.1.8.v20121106.jar
61
+ - jars/jetty-server-8.1.8.v20121106.jar
62
+ - jars/jetty-servlet-8.1.8.v20121106.jar
63
+ - jars/jetty-servlets-8.1.8.v20121106.jar
64
+ - jars/jetty-util-8.1.8.v20121106.jar
65
+ - jars/jetty-webapp-8.1.8.v20121106.jar
66
+ - jars/jetty-websocket-8.1.8.v20121106.jar
67
+ - jars/jetty-xml-8.1.8.v20121106.jar
68
+ - jars/servlet-api-3.0.jar
69
+ - lib/hokuto.rb
70
+ - lib/hokuto/application.rb
71
+ - lib/hokuto/main.rb
72
+ - lib/hokuto/runner.rb
73
+ - lib/hokuto/server.rb
74
+ - lib/hokuto/version.rb
75
+ homepage: https://github.com/condor/hokuto
76
+ licenses: []
77
+ post_install_message:
78
+ rdoc_options: []
79
+ require_paths:
80
+ - lib
81
+ required_ruby_version: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: !binary |-
86
+ MA==
87
+ none: false
88
+ required_rubygems_version: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - ! '>='
91
+ - !ruby/object:Gem::Version
92
+ version: !binary |-
93
+ MA==
94
+ none: false
95
+ requirements: []
96
+ rubyforge_project:
97
+ rubygems_version: 1.8.24
98
+ signing_key:
99
+ specification_version: 3
100
+ summary: ! 'Hokuto: A lightweight web application server for simple ruby web applications
101
+ depending on rack.'
102
+ test_files: []