Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Webmachine, the HTTP toolkit (in Ruby)

License

NotificationsYou must be signed in to change notification settings

webmachine/webmachine-ruby

Repository files navigation

Gem VersionBuild Status

webmachine-ruby is a port ofWebmachine, which is written inErlang. The goal of both projects is to expose interesting parts ofthe HTTP protocol to your application in a declarative way. Thismeans that you are less concerned with the procedures involved in handlingrequests directly and more with describing facts about the resourcesthat make up your application.Webmachine is not a web frameworkper se, but more of atoolkit for building HTTP-friendly applications. For example, it doesnot provide a templating engine or a persistence layer; those choicesare up to you.

Features

  • Handles the hard parts of content negotiation, conditionalrequests, and response codes for you.
  • Provides a base resource with points of extension to let youdescribe what is relevant about your particular resource.
  • Supports WEBrick and a Rack shim. Other host servers are being investigated.
  • Streaming/chunked response bodies are permitted as Enumerables,Procs, or Fibers!
  • Unlike the Erlang original, it does real Language negotiation.
  • Includes a visual debugger so you can look through the decisiongraph to determine how your resources are behaving.

Documentation & Finding Help

Getting Started

Below we go through some examples of how to do basic thingswith webmachine-ruby.

The first example defines a simple resource that doesn't demo thetrue power of Webmachine but perhaps gives a feel for how aWebmachine resource might look.Webmachine::Resource.run is availableto provide for quick prototyping and development. In a real applicationyou will want to configure what path a resource is served from.See theRouter section in the README for more details on how todo that.

There are many other HTTP features exposed to a resource through{Webmachine::Resource::Callbacks}. A callback can alter the outcomeof the decision tree Webmachine implements, and the decision treeis what makes Webmachine unique and powerful.

A simple static HTML resource

require'webmachine'classMyResource <Webmachine::Resourcedefto_html"<html><body>Hello, world!</body></html>"endend# Start a web server to serve requests via localhostMyResource.run

A simple dynamic JSON Resource

require'webmachine'require'widget'classMyResource <Webmachine::Resource# GET and HEAD are allowed by default, but are shown here for clarity.defallowed_methods['GET','HEAD']enddefcontent_types_provided[['application/json',:to_json]]end# Return a Truthy or Falsey valuedefresource_exists?widgetenddefwidget@widget ||=Widget.find(request.path_info[:id])enddefto_jsonwidget.to_jsonendend

Router

The router is used to map a resource to a given path. To map the classMyResource tothe path/myresource you would write something along the lines of:

Webmachine.application.routesdoadd['myresource'],MyResourceend# Start a web server to serve requests via localhostWebmachine.application.run

When the resource needs to be mapped with variables that will be passed into the resource, use symbols to identify which path components are variables.

Webmachine.application.routesdoadd['myresource',:id],MyResourceend

To add more components to the URL mapping, simply add them to the array.

Webmachine.application.routesdoadd['myparentresource',:parent_id,'myresource',:id],MyResourceend

Read more about routinghere.

Application/Configurator

There is a configurator that allows you to set what IP address and porta web server should bind to as well as what web server should serve awebmachine resource. Learn how to configure your applicationhere.

Adapters

Webmachine provides adapters for many popular webservers. Learn morehere.

Visual debugger

It can be hard to understand all of the decisions that Webmachinemakes when servicing a request to your resource, which is why we havethe "visual debugger". Learn how to configure ithere.

Related libraries

LICENSE

webmachine-ruby is licensed under theApache v2.0 license. SeeLICENSE for details.

Packages

No packages published

Contributors28

Languages


[8]ページ先頭

©2009-2025 Movatter.jp