mysql end def process_http_request http = EM::HttpRequest.new('http://some-awesome-api').get http.callback do query = @mysql.query "insert awesome data" query.callback do |result| send_response "saved data!" end end end def send_response(content) r = EM::DelegatedHttpResponse.new(self) r.status = 200 r.content = content r.send_response end end EM.run do client = Mysql2::EM::Client.new EM::start_server("0.0.0.0", 8085, Handler, client) end
output, allow Yaml as secondary use Goliath::Rack::Render, ['json', 'yaml'] def response(env) [200, {}, "Hello World"] end end # > ruby hello.rb -sv # > [97570:INFO] 2011-02-15 00:33:51 :: Starting server on 0.0.0.0:9000 in development mode. Watch out for stones.
use Goliath::Rack::Heartbeat use Goliath::Rack::Params map "/sticky-notes" do run StickyNotesAPI.new end map "/todos" do run TodosAPI.new end map "/research-items" do run ResearchItemsAPI.new end map "/at-a-glance" do run AtAGlanceAPI.new end map "/tickets-graphs" do run TicketGraphsAPI.new end end
def put (@todo = Todo.find(params['id'])).update_attributes put_params publish @todo end def post @todo = Todo.create! post_params publish @todo end private def put_params params.slice('complete_date', 'text', 'due_date', 'assignee_id') end def post_params params.merge("creator_id" => current_user[:id]) end end
@subscriber = EM::Hiredis.connect @subscriber.subscribe('dashboard') @sockets = Pusher::Sockets.new EventMachine::WebSocket.start(config) do |ws| ws.onopen { @sockets << ws } ws.onclose { @sockets.delete(ws) } end @subscriber.on(:message) do |channel, msg| event = Pusher::Event.new msg @sockets.send event end end end end
< ActiveRecord::Base; end; class MyAPI < Grape::API version 'v1', :using => :path format :json resource 'users' do get "/" do User.all end get "/:id" do User.find(params['id']) end post "/create" do User.create(params['user']) end end end class APIServer < Goliath::API def response(env) MyAPI.call(env) end end