Skip to content

A fast and hackable JSON HTTP server based on EventMachine to be used as a backend for Angular, Ember , Etc...

License

Notifications You must be signed in to change notification settings

nemoNoboru/RubyBase

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RubyBase

A fast and hackable JSON API engine based on EventMachine to be used as a backend for Angular, Ember , Etc...

Highlights

  • Fast. Like, Reaally fast.
  • Simple
  • Few moving parts, just 100 lines of code.
  • Hackable
  • Cache system embbebed.
  • Sinatra-like DSL
  • Regexps all the way.
  • Production ready (no configuration needed)
  • Pure ruby (dependencies have native extensions)

Installation

Just run the default

sudo gem install ruby_base

Or add

gem "ruby_base"

to your gemfile

Usage

require 'ruby_base'

# reopen the Router class
class RubyBase::Router
  get '/hello' do
    "Hello world!"
  end
  # returns
  # 127.0.0.1/hello
  #=> "Hello world!"
end

RubyBase.run

Always remember to call RubyBase.run when you finish declaring the system behavior.
What you return in the block is automatically parsed to JSON and sent to the client

Usage #2: POST data

class RubyBase::Router
  post '/hello' do |r|
    puts r[:post]
  end
end

RubyBase.run

r[:post] is the post data sent by the client already parsed from JSON

Usage #3: Dinamic Urls

class RubyBase::Router
  get '/hello/([^/]+)' do |r|
    "Hello world!" * (r[:match][1]).to_i
  end
  # returns
  # 127.0.0.1/hello/2
  #=> "Hello world! Hello world!"
end

RubyBase.run

RubyBase Matching system

RubyBase reads your routes from top to bottom and tries to match all of them until some route matches the route requested by the client.
That r[:match] is the MatchData generated from the matching.

RubyBase Cache system

When a 'GET' request is fulfilled and processed it is saved on cache.
The next time that the client request that exact route in the exact method it will automatically receieve the cached response.

If a request with a method different from GET (POST,PUT,PATCH,DELETE) is made ALL CACHE IS DELETED and all the caching starts again.

If you want, you can disable the cache system entirely by adding this

class RubyBase::Router
  @@cache = false
end

Hacking RubyBase

  • Read the code
  • Re-Open desired classes as you did with RubyBase::Router
  • Implement/Change desired behavior
  • Profit!

Contributing

RubyBase is a small and simple thing.
And i have no plans in making it the NEW SOLUTION FOR ALL THINGS TM.
RubyBase tries to solve one problem and tries to do it well. Don't try to bloat it with new "maybe usefull" features.

That said i think that RubyBase needs an Authorization system in order to have some Sessions Right now i have little free time to do it so if you want to help try implementing that.
Just send pull requests commenting what you have done.

Issues and known problems

If you have a problem pull a issue in this repo commenting what is going wrong.
Check this list first so you don't report an already known problem.

Known problems:

  • No way of modifying response HTTP Header (IE 404 errors can't be made)
  • No session system.
  • No Auth system.

About

A fast and hackable JSON HTTP server based on EventMachine to be used as a backend for Angular, Ember , Etc...

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages