Grape Mounted behind Goliath
Grape Mounted behind Goliath
Join the DZone community and get the full member experience.
Join For FreeSensu is an open source monitoring event pipeline. Try it today.
Got a chance to play with Goliath for a bit. You don’t need to do much work to mount Grape behind it. Grape figures out content-negotiation and formatting for you, so just stream the response through Goliath.
module Acme class Ping < Grape::API format :json get '/ping' do { ping: "pong" } end end class App < Goliath::API use Goliath::Rack::Params use Goliath::Rack::Render def response(env) Acme::API.call(env) end end end
Tests for something like this are a little bit tricky, because Goliath is fully asynchronous.
describe Acme::API do it "ping" do with_api Acme::App do get_request(path: "/api/ping") do |async| async.response.should == { ping: "pong" }.to_json end end end end
Working code in https://github.com/dblock/grape-on-goliath.
There’s also a very complete demo with asynchronous IO and PostgreSQL here. Haven’t tried it, but looks very promising.
Sensu: workflow automation for monitoring. Learn more—download the whitepaper.
Published at DZone with permission of Daniel Doubrovkine . See the original article here.
Opinions expressed by DZone contributors are their own.
{{ parent.title || parent.header.title}}
{{ parent.tldr }}
{{ parent.linkDescription }}
{{ parent.urlSource.name }}