Skip to content

Instantly share code, notes, and snippets.

@laser
laser / fancy_redis_client.rb
Last active August 29, 2015 14:00
Fancy Redis Client (using method_missing)
#!/usr/bin/env ruby
require 'redis'
require 'securerandom'
require 'json'
class RedisRpcClient
def initialize(redis_url, list_name)
@redis_client = Redis.connect(url: redis_url)
@list_name = list_name
@laser
laser / http_client.rb
Last active August 29, 2015 14:00
RPC System Using HTTP
#!/usr/bin/env ruby
require 'net/http'
require 'securerandom'
require 'json'
uri = URI('http://localhost:4567/calc')
req = Net::HTTP::Post.new(uri.path)
req.body = {
'id' => SecureRandom.hex,
'jsonrpc' => '2.0',
@laser
laser / http_server.rb
Last active August 29, 2015 14:00
Using HTTP as Transport in RPC System (Server)
#!/usr/bin/env ruby
require 'sinatra'
require './calculator'
calculator = Calculator.new
post '/calc' do
req = JSON.parse(request.body.read)
# call a method on the calculator instance, passing along params
@laser
laser / rabbitmq_client.rb
Last active August 29, 2015 14:00
Using RabbitMQ as Message Broker for RPC (Client)
#!/usr/bin/env ruby
require 'bunny'
require 'securerandom'
require 'json'
conn = Bunny.new
conn.start
ch = conn.create_channel
q = ch.queue('calc', auto_delete: false)
@laser
laser / rabbitmq_server.rb
Last active August 29, 2015 14:00
Using RabbitMQ as Message Broker for RPC (Server)
#!/usr/bin/env ruby
require 'bunny'
require 'json'
require './calculator'
calculator = Calculator.new
# connect to RabbitMQ
conn = Bunny.new
conn.start
@laser
laser / redis_server.rb
Last active August 29, 2015 14:00
Using Redis as Message Broker for RPC (Server)
#!/usr/bin/env ruby
require 'redis'
require 'json'
require './calculator'
calculator = Calculator.new
# connect to Redis
redis_client = Redis.connect(url: 'redis://localhost:6379')
@laser
laser / redis_client.rb
Last active August 29, 2015 14:00
Using Redis as Message Broker for RPC
#!/usr/bin/env ruby
require 'redis'
require 'securerandom'
require 'json'
# connect to Redis
redis_client = Redis.connect(url: 'redis://localhost:6379')
# request id will be used as the name of the return queue
request = {
@laser
laser / response.json
Created April 25, 2014 21:19
JSON-RPC 2.0 Response
{
"jsonrpc": "2.0",
"result": 6.1,
"id": "Ke43jnGeQsk2z9GYvFmrax"
}
@laser
laser / request.json
Last active August 29, 2015 14:00
JSON-RPC 2.0 Request
{
"jsonrpc": "2.0",
"id": "Ke43jnGeQsk2z9GYvFmrax",
"method": "add",
"params": [1, 5.1]
}
@laser
laser / calculator.rb
Created April 25, 2014 21:17
Calculator Service
class Calculator
def add(a, b)
return a+b
end
def subtract(a, b)
return a-b
end