Skip to content

Instantly share code, notes, and snippets.

@Ptico
Ptico / abstract.rb
Created December 11, 2012 16:40
A tribute to abstract classes
module Abstract
def abstract(meth, args=[])
define_method(meth.to_sym) do |*params|
raise NotImplementedError, "method ##{meth} should be implemented with arguments (#{ args.join(', ') })"
end
end
end
class Hello
extend Abstract
@Ptico
Ptico / deploy.rb
Last active December 16, 2015 00:19 — forked from Lightpower/gist:5347055
require 'mina/bundler'
require 'mina/rails'
require 'mina/git'
# require 'mina/rbenv' # for rbenv support. (http://rbenv.org)
# require 'mina/rvm' # for rvm support. (http://rvm.io)
# Basic settings:
# domain - The hostname to SSH to.
# deploy_to - Path to deploy into.
# repository - Git repo to clone from. (needed by mina/git)
require 'spec_helper'
describe Aequitas::Violation, '#resource' do
subject { object.resource }
let(:object) { described_class.new(rule, resource) }
let(:rule) { mock('Rule') }
let(:resource) { mock('Resource') }
it { should equal(resource) }
@Ptico
Ptico / password.js
Last active December 23, 2015 04:59
var Password = {},
utils;
function getOptionNum(target, defaults, rest) {
if (typeof(defaults) == 'undefined') defaults = 0;
var val = (typeof(target) == 'undefined') ? defaults : target;
if (val > rest) val = rest;
class Cache
attr_reader :limit, :store, :queue
def [](key)
heat(key) if result = store[key]
result
end
def []=(key, value)

URI templates

URI template syntax

But we have RFC6570, why another one?

Current implementation have more questions than answers:

  1. It describes only template expansion, not matching. While URI matching is more common task (routing) - any template standard which doesn't describe matching will fail
  2. The RFC6570 modifiers sometimes is pointless and create more pain than gain for developers
#!/usr/bin/ruby
# Create display override file to force Mac OS X to use RGB mode for Display
# see http://embdev.net/topic/284710
require 'base64'
data=`ioreg -l -d0 -w 0 -r -c AppleDisplay`
edids=data.scan(/IODisplayEDID.*?<([a-z0-9]+)>/i).flatten
vendorids=data.scan(/DisplayVendorID.*?([0-9]+)/i).flatten
describe Sequelize::Migrator::Naming do
subject { described_class.new(name) }
describe 'Table create/delete' do
context 'create' do
let(:name) { 'create_user_profiles' }
end
context 'drop' do
let(:name) { 'drop_user_profiles' }
#!/usr/bin/env ruby
require 'yaml'
require 'uri'
require 'socket'
require 'timeout'
def knock(host, ports)
ports.each do |port|
puts "Knocking port #{port}"
/Users/ptico/.gem/ruby/2.1.0/gems/adamantium-0.2.0/lib/adamantium/class_methods.rb:17: [BUG] Segmentation fault at 0x00000000000018
ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-darwin13.0]
-- Crash Report log information --------------------------------------------
See Crash Report log file under the one of following:
* ~/Library/Logs/CrashReporter
* /Library/Logs/CrashReporter
* ~/Library/Logs/DiagnosticReports
* /Library/Logs/DiagnosticReports
for more details.