Awesome
mruby-hibari
A Web application framework for Web servers that support mruby and Rack-based API.
mruby-hibari currently supports the Web servers below:
Synopsis
Write once, run the same on any servers above.
OOP Style
class MyApp < Hibari::App
def build
res.code = 200
res.headers["content-type"] = "text/html; charset=utf8"
res.body.push("Hello, World!")
req.params.each do |k,v|
res.body.push("#{k}: #{v}")
end
end
end
MyApp.new.run
DSL Style
hibari do
res.code = 200
res.headers["content-type"] = "text/html; charset=utf8"
res.body.push("Hello, World!")
req.params.each do |k,v|
res.body.push("#{k}: #{v}")
end
end
How to Setup
ngx_mruby, mod_mruby
- Add dependency on mruby-hibari into the build_config.rb in your mruby installation.
- Write mruby handler like above.
h2o
git clone
at h2o/deps to embed mruby-hibari:cd h2o/deps && git clone https://github.com/kentaro/mruby-hibari
- Write mruby handler like above.
API
Hibari::Request
env()
=> Hash
Read-only accessor to ENV
passed from Web server.
uri()
=> URI
Builds URI and returns it as URI
object (See https://github.com/zzak/mruby-uri for details).
params()
=> Hash
Parses query string and returns it as Hash
object.
(This method currently does nothing about decoding or other; it just splits the query string with &
and =
)
request_method()
=> String
script_name()
=> String
path_info()
=> String
request_uri()
=> String
query_string()
=> String
server_name()
=> String
server_addr()
=> String
remote_addr()
=> String
remote_port()
=> String
scheme()
=> String
engine_name()
=> String
Shortcuts to env[XXX
].
Hibari::Response
code()
=> Int
code=(Int)
=> ()
Accessor to HTTP response code.
headers()
=> Hash
headers=(Hash)
=> ()
Accessor to HTTP response headers.
body()
=> Array
body=(Array)
=> ()
Accessor to HTTP response body.
to_rack()
=> Array
Returns an array that follows Rack's spec.
Author
Kentaro Kuribayashi
License
MIT