Skip to content

Instantly share code, notes, and snippets.

class Class
def attr_with_default(attr_name, default_value)
attr_writer attr_name
define_method(attr_name) do
instance_variable_get("@#{attr_name}") || default_value
end
end
end
class Person
@chad
chad / exporter.rb
Created February 26, 2012 18:57 — forked from jcasimir/exporter.rb
Export ActiveRecord Tables to CSV
require 'csv'
module Exporter
DEFAULT_EXPORT_TABLES = [ Invoice, InvoiceItem, Item, Merchant, Transaction, User ]
DESTINATION_FOLDER = "tmp/"
def self.included(klass)
klass.extend ClassLevelMethods
end
@chad
chad / dict.rb
Created December 17, 2011 14:42 — forked from latompa/dict.rb
simple dictionary without using arrays or hashes
def add(key, value, dictionary = Proc.new{})
lambda do |x|
key == x ? value : dictionary.call(x)
end
end
d = add("a",5)
d = add("b",6, d)
p d.call("b")
for file in app/**/*rb; do
echo -n $file, " . "; git --no-pager log --pretty="format:%ai" -1 $file; echo;
done
def assert_difference(string, expected_difference = 1, &block)
before = eval(string, block.binding)
block.call
after = eval(string, block.binding)
fail "Expected a difference of #{expected_difference}" unless after - before == expected_difference
end
a = 1
assert_difference("a", 1) do
a += 1
def create_multipler(factor)
->param{param * factor}
end
times_2 = create_multipler(2)
p times_2.(4)
exit
class Foo
1_000_000_000.times do |n|
define_method("times_#{n}") do |param|
Around methods:
method_missing, method_added, singleton_method_added, method_removed, singleton_method_removed, method_undefined, singleton_method_undefined
Around classes and modules
inherited, append_features, included, extend_object, extended, initialize_copy, const_missing
Marshaling
marshal_dump, marshal_load
Numbers
coerce, induced_from
configuration = configure do |config|
config.tail_logs = true
config.max_connections = 55
config.admin_password = 'secret'
config.app_server do |app_server_config|
app_server_config.port = 8808
app_server_config.admin_password = config.admin_password
end
end
#hello
def foo
end