Skip to content

Instantly share code, notes, and snippets.

View bjjb's full-sized avatar

JJ Buckley bjjb

View GitHub Profile
@bjjb
bjjb / authentication.rb
Created September 18, 2010 21:24
Authlogic extensions in a Rails3 app for HTTP token authentication and deprecation removal - put in config/initializers.
module Authlogic
module Session
# Lets you log in using a HTTP token, using the single_access_token.
# Behaves similarly to Params, but with HTTP, so it's nice for APIs.
module HttpToken
def self.included(klass)
klass.class_eval do
extend Config
include InstanceMethods
persist :persist_by_http_token
@bjjb
bjjb / application_controller_test.rb
Created September 18, 2010 21:37
Testing ApplicationController before_filter logic in Rails3
require 'test_helper'
class DummyController < ApplicationController
def index
render :nothing => true
end
end
MyApp::Application.routes.disable_clear_and_finalize = true
MyApp::Application.routes.clear!
@bjjb
bjjb / UserSession.rb
Created April 26, 2012 23:13
Table-less UserSession "model" for Rails 3
# -*- encoding : utf-8 -*-
class UserSession
include ActiveModel::Conversion
include ActiveModel::Validations
extend ActiveModel::Naming
validates_presence_of :email
validates_presence_of :password
@bjjb
bjjb / Rakefile
Created May 19, 2012 17:55
Template for a CV
require 'active_support/core_ext/hash/conversions'
require 'rake/clean'
require 'json'
require 'yaml'
require 'maruku'
require 'mustache'
require 'ostruct'
require 'haml'
CLEAN.include(%w|*.html *.xml *.json *.txt|)
@bjjb
bjjb / anagram_couter.rb
Created May 24, 2012 15:15
Anagram Counter!
module AnagramCounter
def count_anagrams
Hash[group_by { |x| x.split('').sort.join }.map { |x, y| [x, y.length] }]
end
end
Array.send(:include, AnagramCounter)
puts ["abb", "bba", "aba", "bba", "abb", "aab", "abc"].count_anagrams.inspect
@bjjb
bjjb / sample_app.rb
Created October 18, 2012 10:59
A sample ActiveRecord database setup, for inclusion in a test helper, or something
require 'active_record'
# A sample application, consisting of products, users, comments, categories, and whatnot.
module SampleApp
class Product < ActiveRecord::Base
belongs_to :user
has_many :comments, :as => :commentable
has_many :transactions
has_and_belongs_to_many :categories
@bjjb
bjjb / gem_file.rb
Created December 5, 2012 22:54
How to get the path to an arbitrary file from a Rubygem
# Includes a file from a gem. Useful for reusing test helper files from the gems
# you're writing functionality for.
def gem_file(gem, file, *gem_requirements)
File.join(Gem::Dependency.new(gem, *gem_requirements).to_spec.gem_dir, file)
end
@bjjb
bjjb / three.rb
Created January 2, 2013 19:00
A simple Ruby program for sending webtexts from three.ie.
#!/usr/bin/env ruby
$username = "08312345676" # Replace with your phone number
$password = "000000" # Replace with your webtext PIN
require 'mechanize'
# A simple three.ie webtext CLI.
# Requires Ruby 1.9 and Mechanize (gem install mechanize)
# Logs in, fills in the webtext form, submits it, and prints out the result.
@bjjb
bjjb / linode_ddns.rb
Created January 2, 2013 20:43
A simple Ruby script for creating or updating a Linode DNS A record for the current host (i.e. - Dynamic DNS)
#!/usr/bin/env ruby
require 'linode'
require 'open-uri'
$api_key = "MY LINODE API KEY"
$subdomain = "my.subdomain.example.com"
# Updates a Linode DNS record. Can be used to create a dynamic DNS within a
# domain of your own. Just set the subdomain to whatever.
@bjjb
bjjb / monty.rb
Last active December 11, 2015 12:19
A demonstration of the Monty Hall Problem (http://en.wikipedia.org/wiki/Monty_Hall_problem).
#!/usr/bin/env ruby
# encoding: utf-8
#
# A silly script to demonstrate the Monty Hall Problem.
# http://en.wikipedia.org/wiki/Monty_Hall_problem
#
# Usage
# ruby [-v] monty.rb <n>
# where n is the number of times each of the 3 players plays the game.
#