Skip to content

Instantly share code, notes, and snippets.

@amoslanka
amoslanka / ruby-on-rails-on-ubuntu.sh
Created February 28, 2012 17:16
Ruby on Rails on Ubuntu
sudo apt-get update
sudo apt-get install build-essential zlib1g-dev git-core curl mysql-server mysql-client
# INSTALL RBENV
cd ~/
git clone git://github.com/sstephenson/rbenv.git .rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
exec $SHELL
amoslanka:struck.com amoslanka$ cap staging deploy
* executing `staging'
triggering start callbacks for `deploy'
* executing `multistage:ensure'
* executing `deploy'
* executing `deploy:update'
** transaction: start
* executing `deploy:update_code'
updating the cached checkout on all servers
executing locally: "git ls-remote developer@united.struckaxiom.com:/git_repos/struckaxiom/struckaxiom.com master"
@amoslanka
amoslanka / sentinal.rb
Created August 3, 2015 19:41
Adjustment to Redis client's Seninel example in order to confirm that blocking operations are booted during a failover. (https://github.com/redis/redis-rb/blob/98e3e7a516fc9b4609bc8ab482605f835a4de621/examples/sentinel.rb)
require 'redis'
# This example creates a master-slave setup with a sentinel, then connects to
# it and sends write commands in a loop.
#
# After 30 seconds, the master dies. You will be able to see how a new master
# is elected and things continue to work as if nothing happened.
#
# To run this example:
#
@amoslanka
amoslanka / cache_marks.md
Created June 10, 2015 00:48
Cache Marks

Cache Marks

An introduction of the pattern of using cache “marks” for use in building cache keys and indicating resource state uniqueness.

A cache mark is a simple value that represents a unique state of a resource or group of resources as a whole or in a particular context. A commonly used (but not referred to as) cache mark is a resource’s updated_at timestamp. It is updated to the current time when a resource is updated allowing for cache keys that use that mark to automatically invalidate caches based on previous versions of that resource’s mark. In the case of a group of resources a mark may be used to invalidate keys whenever any member of the collection is modified or removed.

Cache marks must be stored separately from the resource itself when:

  • a lookup of that mark must be performed more quickly than, for example, a database query
  • the mark represents a context of the resource, such as in the context of an associated record
@amoslanka
amoslanka / service.rb
Created December 4, 2014 05:20
A stripped down version of interactors.
require "ostruct"
# A base Service Object module.
#
# Example usage:
#
# class DoSomething
# include Service
# def call
# puts context.foo
@amoslanka
amoslanka / 1.md
Last active August 29, 2015 14:09
JSON metadata examples

GET /syllabi/1 Using wrapper objects

{
  "type": "syllabus",
  "properties": {
    "id": 1,
    "title": "Build a Simple Website",
 "description": "Smells Like Bakin",
@amoslanka
amoslanka / api_version.rb
Created August 7, 2014 17:38
Rack middleware that extracts an API version from either path or accept header.
require 'rack'
module Rack
class ApiVersion
def initialize(app, options = {})
@app = app
@options = options
end
def call(env)