Skip to content

Instantly share code, notes, and snippets.

View aflatter's full-sized avatar

Alexander Flatter aflatter

View GitHub Profile
require 'rubygems'
require 'eventmachine'
class Handler
include EventMachine::Deferrable
def takes_long_time(seconds = 5)
sleep(seconds)
puts "Awoke after #{seconds} seconds."
succeed(seconds)
# An empty hash does not result in creating a new instance of the type.
# Required because that's what we get back from the relation.
class OptionalCoercer
def initialize(type)
@type = type
end
def call(value)
return unless value
value.values.any? ? type.new(value) : nil
@aflatter
aflatter / password.rb
Created March 12, 2015 14:37
SCrypt::Password attribute type for Virtus
require 'scrypt'
module Virtus
class Attribute
class Password < ::Virtus::Attribute
primitive SCrypt::Password
def coerce(value)
value ? SCrypt::Password.new(value) : nil
rescue SCrypt::Errors::InvalidHash
@aflatter
aflatter / bundix.rb
Last active August 29, 2015 14:05
Writes a gems.nix for use with the nixpkgs/pleasant-ruby
require 'bundler'
require 'erb'
# Generates a Nix expression for bundler-managed dependencies.
module Bundix
class << self
def run(gemfile = './Gemfile', lockfile = 'Gemfile.lock')
gems = resolve_deps(gemfile, lockfile)
checksums = compute_checksums(gems)
write_expr(gems, checksums)