Nephos Ruby Server

GitHub version

Gem Version

Code Climate

This is a minimal web server, based on rack and puma. It is written in ruby. It also gives you a minimal architecture to speed up your application creation.

Features provided:

  • Controllers: gives you a resource logic.
  • Render: easier render content to the client.
  • Router: create a robust and simple routing system, with url variables.

Features wich will not be provided by nephos-server:

  • Templating (HTML with variables, loops, ...): It already exists and they are easy to implement.
  • Database orm and connector: It already exists and simple to implement

Start

gem install nephos-server # download the server
nephos-generator application MyApp # generate the application
cd MyApp # go in
nephos-server -p 8080 # start the server. port is not required

Documentation

Guides

Theses guides will provide you knowlegde about everything you can use in the application.

Examples

Controller

To create a controller, add a ruby file to app/, with a class inherited by Nephos::Controller The basic code of a controller can be generated via nephos-generator controller NAME.

class Example < Nephos::Controller
  def root
    if params["index"] == "true"
      return {plain: "index"}
    else
      return :empty
    end
  end
end

Rendering

To render a content to the client, you can return informations from a Controller method:

return {status: code}
return {status: code, content: "Not today"}
return {json: {status: "resource created"}, status: 201}
return {plain: "text"}
return {html: "<html><body><h1>:D</h1></body></html>"}
return {type: "image/jpeg", content: File.read("images/photo.jpg")}
return :empty

Routing

The routing (rules to execute the action the user wants), you have to write the /routes.rb file. if the user try to access to an url not described in the file, it will automaticaly render a 404 not found.

get url: "/", controller: "MainController", method: "root"       # /
get url: "/add", controller: "MainController", method: "add_url" # /add
get url: "/add/:url", controller: "MainController", method: "add_url" # /add with parameter :url
get url: "/rm", controller: "MainController", method: "rm_url"   # /rm
get url: "/rm/:url", controller: "MainController", method: "rm_url"   # /rm with parameter :url
resource "infos" do
  get url: "/", controller: "MainController", method: "root" # generate /infos
  get url: "/abbout", controller: "MainController", method: "root" # generate /infos/about
end

Developers: Roadmap

TODO v0.4

  • improve generator with application status, tests, more generation (routing, ...)

TODO v1

  • Improved Routing (more helper options)
  • Improved Rendering (more options)
  • Customisable errors (404 noticely, and 500)
  • Guide about
    • Controllers
    • Routing
    • Api Creation
    • Database creation
    • Web HTML with templating