Skip to content

Instantly share code, notes, and snippets.

View desmondmonster's full-sized avatar

Desmond Bowe desmondmonster

View GitHub Profile
jruby-1.6.7 :002 > require 'json'
jruby-1.6.7 :007 > str = '{"field1": "test"}'
=> "{"field1": "test"}"
jruby-1.6.7 :008 > JSON.parse(str)
=> {"field1"=>"test"}
jruby-1.6.7 :009 > _.class.name
=> "Hash"
@desmondmonster
desmondmonster / gist:3114439
Created July 15, 2012 02:05
active hash benchmark script
require 'rubygems'
require 'benchmark'
require 'active_hash'
def test_array(size=10000)
[].tap do |array|
(1..size).each do |i|
array << { :id => i, :name => "#{i}_string", :text => "text"}
end
end
ctrl+c: 2.0.0p0 :001 > /Users/desmond/.rvm/gems/ruby-2.0.0-p0/gems/bunny-0.9.0/lib/bunny/socket.rb:41:in `read_nonblock': closed stream (IOError)
from /Users/desmond/.rvm/gems/ruby-2.0.0-p0/gems/bunny-0.9.0/lib/bunny/socket.rb:41:in `block in read_fully'
from /Users/desmond/.rvm/gems/ruby-2.0.0-p0/gems/bunny-0.9.0/lib/bunny/socket.rb:40:in `loop'
from /Users/desmond/.rvm/gems/ruby-2.0.0-p0/gems/bunny-0.9.0/lib/bunny/socket.rb:40:in `read_fully'
from /Users/desmond/.rvm/gems/ruby-2.0.0-p0/gems/bunny-0.9.0/lib/bunny/transport.rb:199:in `read_next_frame'
from /Users/desmond/.rvm/gems/ruby-2.0.0-p0/gems/bunny-0.9.0/lib/bunny/session.rb:696:in `init_connection'
from /Users/desmond/.rvm/gems/ruby-2.0.0-p0/gems/bunny-0.9.0/lib/bunny/session.rb:214:in `start'
from /Users/desmond/.rvm/gems/ruby-2.0.0-p0/gems/bunny-0.9.0/lib/bunny/session.rb:485:in `recover_from_network_failure'
from /Users/desmond/.rvm/gems/ruby-2.0.0-p0/gems/bunny-0.9.0/lib/bunny/session.rb:462:in `handle_network_failure'
@desmondmonster
desmondmonster / gist:8461231
Created January 16, 2014 19:06
sample implementation for multiple exchange handling
def publish(routing_key, message, properties = {})
ensure_connection!(routing_key, message)
exchange = fetch_exchange(properties.delete(:exchange))
non_overridable_properties = {
routing_key: routing_key,
timestamp: Time.now.to_i,
content_type: 'application/json'
}
@desmondmonster
desmondmonster / deploy.rb
Last active October 20, 2017 07:33
Elixir Deploy Script with Versioning Niceties
#!/usr/bin/ruby
require 'optparse'
FILE_NAME = 'VERSION.txt'
options = {}
def red(str); "\e[31m#{str}\e[0m"; end
def green(str); "\e[32m#{str}\e[0m"; end
@desmondmonster
desmondmonster / recurring_genserver.ex
Last active March 14, 2018 17:42
Example of using a GenServer for recurring background work
defmodule CryptoApp.AccountSync do
use GenServer
@interval 1_000
def start_link do
GenServer.start_link(__MODULE__, :ok, name: __MODULE__)
end
def init(:ok) do
@desmondmonster
desmondmonster / email_sender.ex
Last active March 14, 2018 18:15
Quick GenServer for asynchronously sending email
defmodule PopularApp.EmailSender do
use GenServer
def start_link do
GenServer.start_link(__MODULE__, :ok, name: __MODULE__)
end
def init(:ok) do
{:ok, %{last_sent: nil, last_data: nil}}
end
@desmondmonster
desmondmonster / application.ex
Last active March 14, 2018 18:16
Application starting an email-sending Worker
defmodule PopularApp.Application do
use Application
def start(_type, _args) do
import Supervisor.Spec
children = [
worker(PopularApp.EmailSender, [])
]
defmodule App.UserService do
def create_user(params) do
%App.User{}
|> App.User.changeset(params)
|> App.Repo.insert()
|> case do
{:ok, user} ->
Task.start(fn -> send_email_to_user(user) end) # 🎉
{:ok, user}
@desmondmonster
desmondmonster / application.ex
Last active March 14, 2018 23:18
Application With Worker
defmodule YourApp.Application do
use Application
def start(_type, _args) do
import Supervisor.Spec
children = [
{Task.Supervisor, name: YourApp.AccountSetupSupervisor}
]