hayabusa 0.0.24 → 0.0.25

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.24
1
+ 0.0.25
@@ -37,7 +37,6 @@ require opts[:conf_path]
37
37
  #Gemerate Hayabusa-config-hash.
38
38
  hayabusa_conf = Hayabusa::FCGI_CONF[:hayabusa]
39
39
  hayabusa_conf.merge!(
40
- :debug => false,
41
40
  :debug_log => true,
42
41
  :debug_print => false,
43
42
  :debug_print_err => false,
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.24"
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 = "2013-06-30"
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.rdoc"
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.rdoc",
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.require_paths = ["lib"]
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 = 3
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.6.3"])
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.6.3"])
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.6.3"])
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("Trying to stop because of interrupt - please wait while various data is beging flushed.")
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 "Loading Gettext and translations." if @debug
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
@@ -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
@@ -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
- Ruby_process::Cproxy.run do |data|
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, {:email => false})
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
 
@@ -172,4 +172,9 @@ class Hayabusa
172
172
  raise "Could not figure out IP from meta-data."
173
173
  end
174
174
  end
175
+
176
+ # Returns the currelt URL.
177
+ def current_url
178
+ return Knj::Web.url
179
+ end
175
180
  end
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
- #Parse the configuration-header and generate Hayabusa-config-hash.
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["HTTP_HAYABUSA_FCGI_CONFIG"]}'." if @hayabusa_fcgi_conf_path and @hayabusa_fcgi_conf_path != cgi.env["HTTP_HAYABUSA_FCGI_CONFIG"]
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] << cont
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 = Knj::Web.parse_uri(match[2]) rescue {:path => match[2], :query => ""}
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
@@ -376,7 +376,7 @@ describe "Hayabusa" do
376
376
 
377
377
  begin
378
378
  data = JSON.parse(res.body)
379
- rescue JSON::GeneratorError
379
+ rescue
380
380
  raise "Could not parse JSON from result: '#{res.body}'."
381
381
  end
382
382
 
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.24
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: 2013-06-30 00:00:00.000000000 Z
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.6.3
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.6.3
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.rdoc
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.rdoc
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: 1.8.23
334
+ rubygems_version: 2.4.0
368
335
  signing_key:
369
- specification_version: 3
336
+ specification_version: 4
370
337
  summary: A threadded web/app-server that supports stand-alone, CGI and FCGI-modes.
371
338
  test_files: []