Lydia
Lightweight, fast and easy to use small ruby web framework.
Installation
Add this line to your application's Gemfile:
gem 'lydia'
And then execute:
$ bundle
Or install it yourself as:
$ gem install lydia
Another ruby web framework? WTF?
This project is not intended to become a top notch framework or the new rails, it's just an experiment. The goals of this project are:
- Rack based.
- Modular (Router, Application...).
- A powerful router that works stand alone too.
- Easy templates support using Tilt.
- Well written, easy to read and to understand code.
- Less lines of code as possible (but no code golf).
- Don't repeat yourself.
- 100% test code coverage.
- Continuos integration.
- Highest codeclimate score and 0 issues.
Usage
First example
Create a ruby file, fior example hello_world.rb, require 'lydia' and using the routing functions without creating an application object.
require 'lydia'
get '/' do
'Hello world!'
end
Just run it to start a webrick server that responds hello world to root.
$ ruby hello_world.rb
Application
If preferred it's possible to create an application object and run using rackup command, in this case don't require lydia but lydia/application to avoid the server auto start. For example a minimal config.ru file can be:
require 'lydia/application'
class App < Lydia::Application
get '/' do
'Hello world!'
end
end
run App.new
Start the server using rackup command:
$ rackup
Router
Stand alone router
If needed the router can be used stand alone, for example if best performances are needed, or used via the application class, slower but with a lot of more features. Stand alone example, note that the return type must be in rack standard format, an array of three that is status, header, body (as array):
require 'lydia/router'
class App < Lydia::Router
get '/' do
body = 'Hellow world!'
[200, { 'Content-Type' => 'text/html', 'Content-Length' => body.length.to_s }, [body]]
end
end
HTTP verbs
Supports standard HTTP verbs: HEAD GET PATCH PUT POST DELETE OPTIONS.
DOCUMENTATION IN PROGRESS...
Parameters
Wildcards
Named route parameters
Regular expressions
Not found routes and errors
Skip to next route
Halting
Return types
Filters
Templates
Extensive templates support using tilt To render a template simply use the render function:
get '/render_erb' do
render 'template.erb', nil, message: 'template'
end
Helpers
Redirect
It's possible to redirect the page using the redirect helper:
get '/test' do
redirect('/new_url')
end
Params
It's possible to read request parameters using params helper:
get '/test' do
params['my_param']
end
Content type
It's possible to force the response return type using content_type helper:
get '/test'
content_type 'application/json'
'body'
end
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature) - Add your tests, run rspec and ensure that all tests pass and code coverage is 100%
- Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - Create new Pull Request
License
The gem is available as open source under the terms of the MIT License.