Skip to content

Instantly share code, notes, and snippets.

@mattsnyder
mattsnyder / currency_example.rb
Created June 11, 2013 12:28
Examples of configuring currency for different locales and leveraging Rails ActionView::Helpers to format currency.
include ActionView::Helpers # If you want to test from a Rails console
number_to_currency(12.34, :locale => :en) # => "$12.34"
number_to_currency(12.34, :locale => :ja) # => "12円"
number_to_currency(12.34, :locale => 'en-GB') # => "£12.34"
set -g default-terminal "xterm-256color" # More colors
set-option -g xterm-keys on # Work more nicely with odd key combos (emacs)
set -g base-index 1 # Tabs start at '1', not '0'
set -s escape-time 0 # Faster activation
# Bind <C-q> to leader
# Make sure to update status-right to include your leader!
unbind C-b
set -g prefix C-q
bind-key q send-prefix
@mattsnyder
mattsnyder / application_controller.rb
Created June 4, 2013 13:04
In an attempt to clarify what the controller makes available to views instead of guessing, identify them with #expose
#Include this method in your application_controller.rb
def self.expose(*variable_names)
variable_names.each do |variable_name|
define_method((variable_name.to_s+"=").to_sym) do |value|
@exposed ||= Hash.new
@exposed[variable_name]= value
end
private (variable_name.to_s+"=").to_sym
define_method(variable_name) do
@mattsnyder
mattsnyder / riak_install_notes.txt
Created June 4, 2013 00:51
Installing Riak with brew
brew install riak
edit /usr/local/Cellar/riak/<riak version>/libexec/etc/app.config
change
{storage_backend, riak_kv_bitcask_backend},
to
{storage_backend, riak_kv_eleveldb_backend},
ulimit -n 1024
riak start
@mattsnyder
mattsnyder / custom_riak_key.rb
Created June 4, 2013 00:44
Set a custom key on a Ripple document for Riak
include Ripple::Document
property :custom_key, String
key_on :custom_key
before_save :set_key
def set_key
self[:custom_key] ||= "#{self.created_at.utc.to_s(:key)}-#{SecureRandom.hex(8)}"
self[:custom_key]
end
private :set_key
@mattsnyder
mattsnyder / dynamic_finders.rb
Created June 4, 2013 00:40
AR like dynamic finders for Ripple #riak
module Ripple
module Document
module DynamicFinders
class << self
def included(base)
base.module_eval do
extend DynamicFindersClassMethods
end
end
end
@mattsnyder
mattsnyder / faster_csv.rb
Created April 26, 2013 21:04
add BOM for UTF8
class FasterCSV
def <<(row)
# make sure headers have been assigned
if header_row? and [Array, String].include? @use_headers.class
parse_headers # won't read data for Array or String
self << @headers if @write_headers
end
# Handle FasterCSV::Row objects and Hashes
row = case row
@mattsnyder
mattsnyder / rake_task_example.rb
Created April 9, 2013 16:15
Sample shell for a rake task with namespacing and benchmarking
namespace :b2b2dot0 do
namespace :magento do
desc "Imports some stuff from one place to another"
task :import_stuff => :environment do
benchmark = Benchmark.measure do
# The import stuff here
SomeStuff.import do |stuff|
stuff.do_something_more
end
end.real
@mattsnyder
mattsnyder / log_output.rb
Created April 9, 2013 16:04
Helpful method for logging output in Rake tasks
def log(string)
string.split(/\n/).each do |line|
puts "[#{Time.now.strftime("%Y-%m-%d %H:%M:%S")}] #{line}"
end
end
@mattsnyder
mattsnyder / key_filtering.rb
Created January 16, 2013 19:18
Filtering keys by date range in Riak
Riak::MapReduce.new(Ripple.client).
add(@bucket_to_filter,
[
[:tokenize, "-", 1], #Note: 1 based index
[:between, start_time.to_s(:key), end_time.to_s(:key)]
])