hayabusa 0.0.24 → 0.0.25
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/Gemfile +2 -2
- data/Gemfile.lock +37 -6
- data/README.md +363 -0
- data/VERSION +1 -1
- data/bin/hayabusa_fcgi_server.rb +0 -1
- data/hayabusa.gemspec +14 -13
- data/lib/hayabusa.rb +7 -3
- data/lib/hayabusa_cgi_tools.rb +4 -2
- data/lib/hayabusa_client_session.rb +3 -1
- data/lib/hayabusa_ext/mailing.rb +8 -7
- data/lib/hayabusa_ext/web.rb +5 -0
- data/lib/hayabusa_fcgi.rb +13 -4
- data/lib/hayabusa_http_session.rb +2 -0
- data/lib/hayabusa_http_session_contentgroup.rb +7 -1
- data/lib/hayabusa_http_session_request.rb +7 -1
- data/lib/kernel_ext/magic_methods.rb +4 -0
- data/spec/hayabusa_spec.rb +1 -1
- metadata +53 -86
- data/README.rdoc +0 -315
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.25
|
data/bin/hayabusa_fcgi_server.rb
CHANGED
data/hayabusa.gemspec
CHANGED
@@ -2,20 +2,22 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
+
# stub: hayabusa 0.0.25 ruby lib
|
5
6
|
|
6
7
|
Gem::Specification.new do |s|
|
7
8
|
s.name = "hayabusa"
|
8
|
-
s.version = "0.0.
|
9
|
+
s.version = "0.0.25"
|
9
10
|
|
10
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
|
+
s.require_paths = ["lib"]
|
11
13
|
s.authors = ["Kasper Johansen"]
|
12
|
-
s.date = "
|
14
|
+
s.date = "2014-12-06"
|
13
15
|
s.description = "A threadded web/app-server that focuses on threadding, shared ressources, speed and more."
|
14
16
|
s.email = "k@spernj.org"
|
15
17
|
s.executables = ["check_running.rb", "hayabusa_benchmark.rb", "hayabusa_cgi.rb", "hayabusa_fcgi.fcgi", "hayabusa_fcgi.rb", "hayabusa_fcgi_server.rb", "hayabusa_spec_restart.rb", "knjappserver_start.rb"]
|
16
18
|
s.extra_rdoc_files = [
|
17
19
|
"LICENSE.txt",
|
18
|
-
"README.
|
20
|
+
"README.md"
|
19
21
|
]
|
20
22
|
s.files = [
|
21
23
|
".document",
|
@@ -23,7 +25,7 @@ Gem::Specification.new do |s|
|
|
23
25
|
"Gemfile",
|
24
26
|
"Gemfile.lock",
|
25
27
|
"LICENSE.txt",
|
26
|
-
"README.
|
28
|
+
"README.md",
|
27
29
|
"Rakefile",
|
28
30
|
"VERSION",
|
29
31
|
"bin/check_running.rb",
|
@@ -109,12 +111,11 @@ Gem::Specification.new do |s|
|
|
109
111
|
]
|
110
112
|
s.homepage = "http://github.com/kaspernj/hayabusa"
|
111
113
|
s.licenses = ["MIT"]
|
112
|
-
s.
|
113
|
-
s.rubygems_version = "1.8.23"
|
114
|
+
s.rubygems_version = "2.4.0"
|
114
115
|
s.summary = "A threadded web/app-server that supports stand-alone, CGI and FCGI-modes."
|
115
116
|
|
116
117
|
if s.respond_to? :specification_version then
|
117
|
-
s.specification_version =
|
118
|
+
s.specification_version = 4
|
118
119
|
|
119
120
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
120
121
|
s.add_runtime_dependency(%q<knjrbfw>, [">= 0"])
|
@@ -123,14 +124,14 @@ Gem::Specification.new do |s|
|
|
123
124
|
s.add_runtime_dependency(%q<datet>, [">= 0"])
|
124
125
|
s.add_runtime_dependency(%q<http2>, [">= 0"])
|
125
126
|
s.add_runtime_dependency(%q<tpool>, [">= 0"])
|
126
|
-
s.add_runtime_dependency(%q<fcgi>, [">= 0"])
|
127
127
|
s.add_runtime_dependency(%q<ruby_process>, [">= 0"])
|
128
128
|
s.add_development_dependency(%q<json>, [">= 0"])
|
129
129
|
s.add_development_dependency(%q<rspec>, [">= 2.3.0"])
|
130
130
|
s.add_development_dependency(%q<bundler>, [">= 1.0.0"])
|
131
|
-
s.add_development_dependency(%q<jeweler>, ["~> 1.
|
131
|
+
s.add_development_dependency(%q<jeweler>, ["~> 1.8.8"])
|
132
132
|
s.add_development_dependency(%q<rmagick>, [">= 0"])
|
133
133
|
s.add_development_dependency(%q<sqlite3>, [">= 0"])
|
134
|
+
s.add_development_dependency(%q<php4r>, [">= 0"])
|
134
135
|
else
|
135
136
|
s.add_dependency(%q<knjrbfw>, [">= 0"])
|
136
137
|
s.add_dependency(%q<erubis>, [">= 0"])
|
@@ -138,14 +139,14 @@ Gem::Specification.new do |s|
|
|
138
139
|
s.add_dependency(%q<datet>, [">= 0"])
|
139
140
|
s.add_dependency(%q<http2>, [">= 0"])
|
140
141
|
s.add_dependency(%q<tpool>, [">= 0"])
|
141
|
-
s.add_dependency(%q<fcgi>, [">= 0"])
|
142
142
|
s.add_dependency(%q<ruby_process>, [">= 0"])
|
143
143
|
s.add_dependency(%q<json>, [">= 0"])
|
144
144
|
s.add_dependency(%q<rspec>, [">= 2.3.0"])
|
145
145
|
s.add_dependency(%q<bundler>, [">= 1.0.0"])
|
146
|
-
s.add_dependency(%q<jeweler>, ["~> 1.
|
146
|
+
s.add_dependency(%q<jeweler>, ["~> 1.8.8"])
|
147
147
|
s.add_dependency(%q<rmagick>, [">= 0"])
|
148
148
|
s.add_dependency(%q<sqlite3>, [">= 0"])
|
149
|
+
s.add_dependency(%q<php4r>, [">= 0"])
|
149
150
|
end
|
150
151
|
else
|
151
152
|
s.add_dependency(%q<knjrbfw>, [">= 0"])
|
@@ -154,14 +155,14 @@ Gem::Specification.new do |s|
|
|
154
155
|
s.add_dependency(%q<datet>, [">= 0"])
|
155
156
|
s.add_dependency(%q<http2>, [">= 0"])
|
156
157
|
s.add_dependency(%q<tpool>, [">= 0"])
|
157
|
-
s.add_dependency(%q<fcgi>, [">= 0"])
|
158
158
|
s.add_dependency(%q<ruby_process>, [">= 0"])
|
159
159
|
s.add_dependency(%q<json>, [">= 0"])
|
160
160
|
s.add_dependency(%q<rspec>, [">= 2.3.0"])
|
161
161
|
s.add_dependency(%q<bundler>, [">= 1.0.0"])
|
162
|
-
s.add_dependency(%q<jeweler>, ["~> 1.
|
162
|
+
s.add_dependency(%q<jeweler>, ["~> 1.8.8"])
|
163
163
|
s.add_dependency(%q<rmagick>, [">= 0"])
|
164
164
|
s.add_dependency(%q<sqlite3>, [">= 0"])
|
165
|
+
s.add_dependency(%q<php4r>, [">= 0"])
|
165
166
|
end
|
166
167
|
end
|
167
168
|
|
data/lib/hayabusa.rb
CHANGED
@@ -494,14 +494,14 @@ class Hayabusa
|
|
494
494
|
@httpserv.thread_accept.join
|
495
495
|
@httpserv.thread_restart.join if @httpserv and @httpserv.thread_restart
|
496
496
|
rescue Interrupt => e
|
497
|
-
self.log_puts
|
497
|
+
self.log_puts "Trying to stop because of interrupt - please wait while various data is beging flushed." if @debug
|
498
498
|
self.stop
|
499
499
|
end
|
500
500
|
|
501
501
|
if @should_restart
|
502
502
|
loop do
|
503
503
|
if @should_restart_done
|
504
|
-
self.log_puts "Ending join because the restart is done."
|
504
|
+
self.log_puts "Ending join because the restart is done." if @debug
|
505
505
|
break
|
506
506
|
end
|
507
507
|
|
@@ -537,11 +537,15 @@ class Hayabusa
|
|
537
537
|
def translations
|
538
538
|
if !@translations
|
539
539
|
#Start the Knj::Gettext_threadded- and Knj::Translations modules for translations.
|
540
|
-
self.log_puts "
|
540
|
+
self.log_puts "Spawning Knj::Translations-object." if @debug
|
541
541
|
@translations = Knj::Translations.new(:db => @db)
|
542
|
+
|
543
|
+
self.log_puts "Requires the translation-model." if @debug
|
542
544
|
@ob.requireclass(:Translation, :require => false, :class => Knj::Translations::Translation)
|
543
545
|
end
|
544
546
|
|
547
|
+
self.log_puts "Returning the translations-object." if @debug
|
548
|
+
|
545
549
|
return @translations
|
546
550
|
end
|
547
551
|
end
|
data/lib/hayabusa_cgi_tools.rb
CHANGED
@@ -68,7 +68,7 @@ class Hayabusa::Cgi_tools
|
|
68
68
|
|
69
69
|
#This method is used to proxy a request to another FCGI-process, since a single FCGI-process cant handle more requests simultanious.
|
70
70
|
def proxy_request_to(args)
|
71
|
-
@cgi, @http, fp_log = args[:cgi], args[:http], args[:fp_log]
|
71
|
+
@cgi, @http, @fp_log = args[:cgi], args[:http], args[:fp_log]
|
72
72
|
|
73
73
|
headers = {"Hayabusa_mode" => "proxy"}
|
74
74
|
@cgi.env.each do |key, val|
|
@@ -95,7 +95,7 @@ class Hayabusa::Cgi_tools
|
|
95
95
|
url << "?#{cgi.env["QUERY_STRING"]}"
|
96
96
|
end
|
97
97
|
|
98
|
-
fp_log.puts("Proxying URL: '#{url}'.") if fp_log
|
98
|
+
@fp_log.puts("Proxying URL: '#{url}'.") if @fp_log
|
99
99
|
|
100
100
|
#The HTTP-connection can have closed mean while, so we have to test it.
|
101
101
|
raise Errno::ECONNABORTED unless @http.socket_working?
|
@@ -136,6 +136,8 @@ class Hayabusa::Cgi_tools
|
|
136
136
|
end
|
137
137
|
|
138
138
|
def on_content(line)
|
139
|
+
# STDERR.puts "Line: '#{line}'."
|
140
|
+
|
139
141
|
if @count <= 0
|
140
142
|
# This is needed to trick FCGI into writing out correct status codes by ignoring the original status code and outputting it as a "Status"-header instead which is defined in the response-file.
|
141
143
|
else
|
@@ -1,7 +1,7 @@
|
|
1
1
|
#Various client-sessions should extend this class.
|
2
2
|
class Hayabusa::Client_session
|
3
3
|
attr_accessor :alert_sent, :data, :page_path
|
4
|
-
attr_reader :cookie, :get, :handler, :headers, :ip, :session, :session_id, :session_hash, :hb, :active, :out, :eruby, :browser, :debug, :resp, :post, :cgroup, :meta, :httpsession_var, :working
|
4
|
+
attr_reader :cookie, :get, :handler, :headers, :ip, :session, :session_id, :session_hash, :hb, :active, :out, :eruby, :browser, :debug, :resp, :post, :cgroup, :meta, :httpsession_var, :working, :request_hash
|
5
5
|
|
6
6
|
#Parses the if-modified-since header and returns it as a Time-object. Returns false is no if-modified-since-header is given or raises an RuntimeError if it cant be parsed.
|
7
7
|
def modified_since
|
@@ -82,6 +82,8 @@ class Hayabusa::Client_session
|
|
82
82
|
end
|
83
83
|
|
84
84
|
def execute_page
|
85
|
+
@request_hash = {}
|
86
|
+
|
85
87
|
begin
|
86
88
|
@time_start = Time.now.to_f if @debug
|
87
89
|
@hb.events.call(:request_begin, :httpsession => self) if @hb.events
|
data/lib/hayabusa_ext/mailing.rb
CHANGED
@@ -7,8 +7,8 @@ class Hayabusa
|
|
7
7
|
require "knj/autoload/ping"
|
8
8
|
|
9
9
|
@mails_waiting = []
|
10
|
-
@mails_mutex = Monitor.new
|
11
|
-
@mails_queue_mutex = Monitor.new
|
10
|
+
@mails_mutex = ::Monitor.new
|
11
|
+
@mails_queue_mutex = ::Monitor.new
|
12
12
|
@mails_timeout = self.timeout(:time => @config[:mailing_time], &self.method(:mail_flush))
|
13
13
|
end
|
14
14
|
|
@@ -60,7 +60,8 @@ class Hayabusa
|
|
60
60
|
|
61
61
|
#Use subprocessing to avoid the mail-framework (activesupport and so on, also possible memory leaks in those large frameworks).
|
62
62
|
self.log_puts("Starting subprocess for mailing.") if @debug
|
63
|
-
|
63
|
+
require "ruby_process"
|
64
|
+
::Ruby_process::Cproxy.run do |data|
|
64
65
|
subproc = data[:subproc]
|
65
66
|
subproc.static(:Object, :require, "rubygems")
|
66
67
|
subproc.static(:Object, :require, "mail")
|
@@ -78,7 +79,7 @@ class Hayabusa
|
|
78
79
|
#ignore -
|
79
80
|
rescue => e
|
80
81
|
@mails_waiting.delete(mail)
|
81
|
-
self.handle_error(e,
|
82
|
+
self.handle_error(e, :email => false)
|
82
83
|
end
|
83
84
|
|
84
85
|
sleep 1 #sleep so we dont take up too much bandwidth.
|
@@ -122,13 +123,13 @@ class Hayabusa
|
|
122
123
|
if args[:proc]
|
123
124
|
mail = args[:proc].new("Knj::Mailobj", @args[:hb].config[:smtp_args])
|
124
125
|
else
|
125
|
-
mail = Knj::Mailobj.new(@args[:hb].config[:smtp_args])
|
126
|
+
mail = ::Knj::Mailobj.new(@args[:hb].config[:smtp_args])
|
126
127
|
end
|
127
128
|
|
128
129
|
mail.to = @args[:to]
|
129
130
|
mail.subject = @args[:subject] if @args[:subject]
|
130
|
-
mail.html = Knj::Strings.email_str_safe(@args[:html]) if @args[:html]
|
131
|
-
mail.text = Knj::Strings.email_str_safe(@args[:text]) if @args[:text]
|
131
|
+
mail.html = ::Knj::Strings.email_str_safe(@args[:html]) if @args[:html]
|
132
|
+
mail.text = ::Knj::Strings.email_str_safe(@args[:text]) if @args[:text]
|
132
133
|
mail.from = @args[:from]
|
133
134
|
mail.send
|
134
135
|
|
data/lib/hayabusa_ext/web.rb
CHANGED
data/lib/hayabusa_fcgi.rb
CHANGED
@@ -13,6 +13,17 @@ class Hayabusa::Fcgi
|
|
13
13
|
@debug = false
|
14
14
|
end
|
15
15
|
|
16
|
+
def conf_path
|
17
|
+
#Parse the configuration-header and generate Hayabusa-config-hash.
|
18
|
+
if @cgi.env["HAYABUSA_FCGI_CONFIG"].to_s.length > 0
|
19
|
+
return @cgi.env["HAYABUSA_FCGI_CONFIG"]
|
20
|
+
elsif @cgi.env["HTTP_HAYABUSA_FCGI_CONFIG"].to_s.length > 0
|
21
|
+
return @cgi.env["HTTP_HAYABUSA_FCGI_CONFIG"]
|
22
|
+
else
|
23
|
+
raise "No HTTP_HAYABUSA_FCGI_CONFIG-header was given or HAYABUSA_FCGI_CONFIG environment variable."
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
16
27
|
#Evaluates if a new host-process should be started or we should proxy calls to an existing one.
|
17
28
|
def evaluate_mode
|
18
29
|
#If this is a FCGI-proxy-instance then the HTTP-connection should be checked if it is working.
|
@@ -25,9 +36,7 @@ class Hayabusa::Fcgi
|
|
25
36
|
#Skip the actual check if Hayabusa is spawned or this is a working FCGI-proxy-instance.
|
26
37
|
return nil if @hayabusa or @fcgi_proxy
|
27
38
|
|
28
|
-
|
29
|
-
raise "No HTTP_HAYABUSA_FCGI_CONFIG-header was given." if !@cgi.env["HTTP_HAYABUSA_FCGI_CONFIG"]
|
30
|
-
@hayabusa_fcgi_conf_path = @cgi.env["HTTP_HAYABUSA_FCGI_CONFIG"]
|
39
|
+
@hayabusa_fcgi_conf_path = conf_path
|
31
40
|
require @hayabusa_fcgi_conf_path
|
32
41
|
raise "No 'Hayabusa::FCGI_CONF'-constant was spawned by '#{@cgi.env["HTTP_HAYABUSA_FCGI_CONFIG"]}'." if !Hayabusa.const_defined?(:FCGI_CONF)
|
33
42
|
conf = Hayabusa::FCGI_CONF
|
@@ -148,7 +157,7 @@ class Hayabusa::Fcgi
|
|
148
157
|
end
|
149
158
|
|
150
159
|
#Ensure the same FCGI-process isnt active for more than one website.
|
151
|
-
raise "Expected 'HTTP_HAYABUSA_FCGI_CONFIG' to be '#{@hayabusa_fcgi_conf_path}' but it wasnt: '#{cgi.env
|
160
|
+
raise "Expected 'HTTP_HAYABUSA_FCGI_CONFIG' to be '#{@hayabusa_fcgi_conf_path}' but it wasnt: '#{conf_path}' #{@cgi.env}" if @hayabusa_fcgi_conf_path != conf_path
|
152
161
|
|
153
162
|
#Proxy request to the host-FCGI-process.
|
154
163
|
raise "No proxy spawned." unless @fcgi_proxy
|
@@ -179,6 +179,8 @@ class Hayabusa::Http_session < Hayabusa::Client_session
|
|
179
179
|
end
|
180
180
|
|
181
181
|
@page_path = @handler.page_path
|
182
|
+
@hb.log_puts "Hayabusa: Page path: #{@page_path}" if @debug
|
183
|
+
|
182
184
|
@ext = File.extname(@page_path).downcase[1..-1].to_s
|
183
185
|
|
184
186
|
@ctype = @types[@ext.to_sym] if @ext.length > 0 and @types.key?(@ext.to_sym)
|
@@ -79,8 +79,14 @@ class Hayabusa::Http_session::Contentgroup
|
|
79
79
|
end
|
80
80
|
|
81
81
|
def write(cont)
|
82
|
+
return if cont.empty?
|
83
|
+
|
82
84
|
@mutex.synchronize do
|
83
|
-
@cur_data[:str]
|
85
|
+
unless @cur_data[:str].is_a?(String)
|
86
|
+
raise "Couldnt add to string with a length of #{cont.length} to str, because str was a #{@cur_data[:str].class.name}. Cont: #{cont}"
|
87
|
+
else
|
88
|
+
@cur_data[:str] << cont
|
89
|
+
end
|
84
90
|
end
|
85
91
|
end
|
86
92
|
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require "tempfile"
|
2
|
+
require "uri"
|
2
3
|
|
3
4
|
#If we are running on JRuby or Rubinius this will seriously speed things up if we are behind a proxy.
|
4
5
|
if RUBY_PLATFORM == "java" or RUBY_ENGINE == "rbx"
|
@@ -70,9 +71,14 @@ class Hayabusa::Http_session::Request
|
|
70
71
|
uri_raw = match[2]
|
71
72
|
uri_raw = "index.rhtml" if uri_raw == ""
|
72
73
|
|
73
|
-
uri =
|
74
|
+
if uri = URI.parse(match[2]) rescue nil
|
75
|
+
uri = {:path => uri.path.slice(1, 999), :query => uri.query}
|
76
|
+
else
|
77
|
+
uri = {:path => match[2], :query => ""}
|
78
|
+
end
|
74
79
|
|
75
80
|
page_filepath = Knj::Web.urldec(uri[:path])
|
81
|
+
|
76
82
|
if page_filepath.empty? or page_filepath == "/" or File.directory?("#{@hb.config[:doc_root]}/#{page_filepath}")
|
77
83
|
page_filepath = "#{page_filepath}/#{@hb.config[:default_page]}"
|
78
84
|
end
|
@@ -42,6 +42,10 @@ def _requestdata
|
|
42
42
|
return Thread.current[:hayabusa] if Thread.current[:hayabusa]
|
43
43
|
end
|
44
44
|
|
45
|
+
def _request_hash
|
46
|
+
return Thread.current[:hayabusa][:httpsession].request_hash if Thread.current[:hayabusa]
|
47
|
+
end
|
48
|
+
|
45
49
|
def _hb
|
46
50
|
return Thread.current[:hayabusa][:hb] if Thread.current[:hayabusa]
|
47
51
|
end
|
data/spec/hayabusa_spec.rb
CHANGED
metadata
CHANGED
@@ -1,238 +1,209 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hayabusa
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.0.25
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Kasper Johansen
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-12-06 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: knjrbfw
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - ">="
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: erubis
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - ">="
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - ">="
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: mail
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - ">="
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :runtime
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - ">="
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: datet
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - ">="
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '0'
|
70
62
|
type: :runtime
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - ">="
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: '0'
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: http2
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
|
-
- -
|
73
|
+
- - ">="
|
84
74
|
- !ruby/object:Gem::Version
|
85
75
|
version: '0'
|
86
76
|
type: :runtime
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
|
-
- -
|
80
|
+
- - ">="
|
92
81
|
- !ruby/object:Gem::Version
|
93
82
|
version: '0'
|
94
83
|
- !ruby/object:Gem::Dependency
|
95
84
|
name: tpool
|
96
85
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
86
|
requirements:
|
99
|
-
- -
|
87
|
+
- - ">="
|
100
88
|
- !ruby/object:Gem::Version
|
101
89
|
version: '0'
|
102
90
|
type: :runtime
|
103
91
|
prerelease: false
|
104
92
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
93
|
requirements:
|
107
|
-
- -
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
version: '0'
|
110
|
-
- !ruby/object:Gem::Dependency
|
111
|
-
name: fcgi
|
112
|
-
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
|
-
requirements:
|
115
|
-
- - ! '>='
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: '0'
|
118
|
-
type: :runtime
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
|
-
requirements:
|
123
|
-
- - ! '>='
|
94
|
+
- - ">="
|
124
95
|
- !ruby/object:Gem::Version
|
125
96
|
version: '0'
|
126
97
|
- !ruby/object:Gem::Dependency
|
127
98
|
name: ruby_process
|
128
99
|
requirement: !ruby/object:Gem::Requirement
|
129
|
-
none: false
|
130
100
|
requirements:
|
131
|
-
- -
|
101
|
+
- - ">="
|
132
102
|
- !ruby/object:Gem::Version
|
133
103
|
version: '0'
|
134
104
|
type: :runtime
|
135
105
|
prerelease: false
|
136
106
|
version_requirements: !ruby/object:Gem::Requirement
|
137
|
-
none: false
|
138
107
|
requirements:
|
139
|
-
- -
|
108
|
+
- - ">="
|
140
109
|
- !ruby/object:Gem::Version
|
141
110
|
version: '0'
|
142
111
|
- !ruby/object:Gem::Dependency
|
143
112
|
name: json
|
144
113
|
requirement: !ruby/object:Gem::Requirement
|
145
|
-
none: false
|
146
114
|
requirements:
|
147
|
-
- -
|
115
|
+
- - ">="
|
148
116
|
- !ruby/object:Gem::Version
|
149
117
|
version: '0'
|
150
118
|
type: :development
|
151
119
|
prerelease: false
|
152
120
|
version_requirements: !ruby/object:Gem::Requirement
|
153
|
-
none: false
|
154
121
|
requirements:
|
155
|
-
- -
|
122
|
+
- - ">="
|
156
123
|
- !ruby/object:Gem::Version
|
157
124
|
version: '0'
|
158
125
|
- !ruby/object:Gem::Dependency
|
159
126
|
name: rspec
|
160
127
|
requirement: !ruby/object:Gem::Requirement
|
161
|
-
none: false
|
162
128
|
requirements:
|
163
|
-
- -
|
129
|
+
- - ">="
|
164
130
|
- !ruby/object:Gem::Version
|
165
131
|
version: 2.3.0
|
166
132
|
type: :development
|
167
133
|
prerelease: false
|
168
134
|
version_requirements: !ruby/object:Gem::Requirement
|
169
|
-
none: false
|
170
135
|
requirements:
|
171
|
-
- -
|
136
|
+
- - ">="
|
172
137
|
- !ruby/object:Gem::Version
|
173
138
|
version: 2.3.0
|
174
139
|
- !ruby/object:Gem::Dependency
|
175
140
|
name: bundler
|
176
141
|
requirement: !ruby/object:Gem::Requirement
|
177
|
-
none: false
|
178
142
|
requirements:
|
179
|
-
- -
|
143
|
+
- - ">="
|
180
144
|
- !ruby/object:Gem::Version
|
181
145
|
version: 1.0.0
|
182
146
|
type: :development
|
183
147
|
prerelease: false
|
184
148
|
version_requirements: !ruby/object:Gem::Requirement
|
185
|
-
none: false
|
186
149
|
requirements:
|
187
|
-
- -
|
150
|
+
- - ">="
|
188
151
|
- !ruby/object:Gem::Version
|
189
152
|
version: 1.0.0
|
190
153
|
- !ruby/object:Gem::Dependency
|
191
154
|
name: jeweler
|
192
155
|
requirement: !ruby/object:Gem::Requirement
|
193
|
-
none: false
|
194
156
|
requirements:
|
195
|
-
- - ~>
|
157
|
+
- - "~>"
|
196
158
|
- !ruby/object:Gem::Version
|
197
|
-
version: 1.
|
159
|
+
version: 1.8.8
|
198
160
|
type: :development
|
199
161
|
prerelease: false
|
200
162
|
version_requirements: !ruby/object:Gem::Requirement
|
201
|
-
none: false
|
202
163
|
requirements:
|
203
|
-
- - ~>
|
164
|
+
- - "~>"
|
204
165
|
- !ruby/object:Gem::Version
|
205
|
-
version: 1.
|
166
|
+
version: 1.8.8
|
206
167
|
- !ruby/object:Gem::Dependency
|
207
168
|
name: rmagick
|
208
169
|
requirement: !ruby/object:Gem::Requirement
|
209
|
-
none: false
|
210
170
|
requirements:
|
211
|
-
- -
|
171
|
+
- - ">="
|
212
172
|
- !ruby/object:Gem::Version
|
213
173
|
version: '0'
|
214
174
|
type: :development
|
215
175
|
prerelease: false
|
216
176
|
version_requirements: !ruby/object:Gem::Requirement
|
217
|
-
none: false
|
218
177
|
requirements:
|
219
|
-
- -
|
178
|
+
- - ">="
|
220
179
|
- !ruby/object:Gem::Version
|
221
180
|
version: '0'
|
222
181
|
- !ruby/object:Gem::Dependency
|
223
182
|
name: sqlite3
|
224
183
|
requirement: !ruby/object:Gem::Requirement
|
225
|
-
none: false
|
226
184
|
requirements:
|
227
|
-
- -
|
185
|
+
- - ">="
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: '0'
|
188
|
+
type: :development
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - ">="
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: '0'
|
195
|
+
- !ruby/object:Gem::Dependency
|
196
|
+
name: php4r
|
197
|
+
requirement: !ruby/object:Gem::Requirement
|
198
|
+
requirements:
|
199
|
+
- - ">="
|
228
200
|
- !ruby/object:Gem::Version
|
229
201
|
version: '0'
|
230
202
|
type: :development
|
231
203
|
prerelease: false
|
232
204
|
version_requirements: !ruby/object:Gem::Requirement
|
233
|
-
none: false
|
234
205
|
requirements:
|
235
|
-
- -
|
206
|
+
- - ">="
|
236
207
|
- !ruby/object:Gem::Version
|
237
208
|
version: '0'
|
238
209
|
description: A threadded web/app-server that focuses on threadding, shared ressources,
|
@@ -250,14 +221,14 @@ executables:
|
|
250
221
|
extensions: []
|
251
222
|
extra_rdoc_files:
|
252
223
|
- LICENSE.txt
|
253
|
-
- README.
|
224
|
+
- README.md
|
254
225
|
files:
|
255
|
-
- .document
|
256
|
-
- .rspec
|
226
|
+
- ".document"
|
227
|
+
- ".rspec"
|
257
228
|
- Gemfile
|
258
229
|
- Gemfile.lock
|
259
230
|
- LICENSE.txt
|
260
|
-
- README.
|
231
|
+
- README.md
|
261
232
|
- Rakefile
|
262
233
|
- VERSION
|
263
234
|
- bin/check_running.rb
|
@@ -343,29 +314,25 @@ files:
|
|
343
314
|
homepage: http://github.com/kaspernj/hayabusa
|
344
315
|
licenses:
|
345
316
|
- MIT
|
317
|
+
metadata: {}
|
346
318
|
post_install_message:
|
347
319
|
rdoc_options: []
|
348
320
|
require_paths:
|
349
321
|
- lib
|
350
322
|
required_ruby_version: !ruby/object:Gem::Requirement
|
351
|
-
none: false
|
352
323
|
requirements:
|
353
|
-
- -
|
324
|
+
- - ">="
|
354
325
|
- !ruby/object:Gem::Version
|
355
326
|
version: '0'
|
356
|
-
segments:
|
357
|
-
- 0
|
358
|
-
hash: 635854692325218381
|
359
327
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
360
|
-
none: false
|
361
328
|
requirements:
|
362
|
-
- -
|
329
|
+
- - ">="
|
363
330
|
- !ruby/object:Gem::Version
|
364
331
|
version: '0'
|
365
332
|
requirements: []
|
366
333
|
rubyforge_project:
|
367
|
-
rubygems_version:
|
334
|
+
rubygems_version: 2.4.0
|
368
335
|
signing_key:
|
369
|
-
specification_version:
|
336
|
+
specification_version: 4
|
370
337
|
summary: A threadded web/app-server that supports stand-alone, CGI and FCGI-modes.
|
371
338
|
test_files: []
|