Testing some stuff...
bundle install
bundle exec passenger start -p 3000
Right now it only return JSON POST params.
require 'rubygems' | |
require 'bundler/setup' | |
require 'lotus/router' | |
require 'lotus/validations' | |
require 'trailblazer' | |
require 'trailblazer/operation/representer' | |
require 'reform/form/lotus' | |
require 'roar/json/hal' | |
require 'ostruct' | |
Reform::Form.class_eval do | |
include Reform::Form::Lotus | |
end | |
class Song < OpenStruct | |
end | |
module Trailblazer::Operation::Rackaware | |
def self.included(base) | |
base.extend ClassMethods | |
end | |
module ClassMethods | |
def call(env) | |
request = ::Rack::Request.new( env ) | |
res, op = self.run( request.body.read ) | |
[ 200, {}, op.to_json ] | |
end | |
end | |
end | |
module TrailblazedRack | |
module Home | |
class Index < Trailblazer::Operation | |
include Representer | |
include Rackaware | |
contract do | |
property :title | |
property :album | |
end | |
representer do | |
include Roar::JSON::HAL | |
link(:self) { 'meself' } | |
end | |
def process(params) | |
@model = Song.new | |
validate(params, model) | |
end | |
end | |
end | |
class Application | |
def initialize | |
@router = Lotus::Router.new do | |
get '/', to: Home::Index | |
get '/:id', to: Home::Index | |
post '/post', to: Home::Index | |
end | |
end | |
def call(env) | |
@router.call(env) | |
end | |
end | |
end | |
run TrailblazedRack::Application.new |
source 'https://rubygems.org' | |
ruby "2.2.3" | |
gem 'rack' | |
gem 'lotus-router' | |
gem 'lotus-validations' | |
gem 'trailblazer' | |
gem 'roar' | |
gem 'multi_json' | |
# gem 'rom' | |
# gem 'rom-sql' | |
gem 'passenger' |