View flatten-it.rb
module ArrayUtils | |
def self.flatten(array, result=[]) | |
array = Array(array) | |
array.each do |entry| | |
case entry | |
when Array | |
flatten entry, result | |
else | |
result << entry | |
end |
View gist:9ace6a70370f6d1a1511
S=Struct.new(:a,:b) | |
ss = [S.new(1,2), S.new(3,4)] | |
p ss.map{|a,b| "#{a} #{b}" } | |
# => ["#<struct S a=1, b=2> ", "#<struct S a=3, b=4> "] | |
class S ; def to_ary ; to_a ; end ; end | |
p ss.map{|a,b| "#{a} #{b}" } | |
# => ["1 2", "3 4"] |
View reversible_queue.rb
# Works much like Ruby's native Queue, but provides an #undeq | |
# method, which Ruby's own Queue does not have. | |
class ReversibleQueue | |
def initialize | |
@queue_array = [] | |
@threads_waiting = [] | |
@mutex = Mutex.new | |
end | |
# Push an object onto the tail of the queue |
View colortest
#!/usr/bin/env ruby | |
ColorNameSequence = %w[ | |
Black | |
Red | |
Green | |
Yellow | |
Blue | |
Magenta | |
Cyan |
View require_limit_for_mysql_text.rb
# == config/initializers/require_limit_for_mysql_text.rb == | |
# Fail when an attempt is made to specify a MySQL text | |
# columnn in a migration without providing a :limit value. | |
# This helps to prevent accidentally defining a 64K column | |
# (default) when a 16MB or 4GB coumn is desired. | |
# Note that MySQL silently truncates the data when it is | |
# too long for the column, so problems are only apparent | |
# later when attempting to retrieve the data (if then). |
View n-is-the-loneliest-number.txt
One is the loneliest number that you'll ever do | |
Two can be as bad as one, well it's the loneliest number since the number one | |
Three is really not so bad, but it can still be lonely, and that's really sad | |
Four is really no big deal, so if you think it's lonely, then you'd best get real | |
Five is practically a crowd, and if you're tryin' to think, it can seem really loud. | |
Five is the loneliest number | |
Five is the loneliest number | |
Five is the loneliest number since the number four dum dum-dum dum-dum |
View yaml_value_extraction_benchmarks.rb
require 'yaml' | |
require 'benchmark' | |
def make_yaml_string(num_entries=500) | |
entry_nums = (0...num_entries).to_a | |
entry_nums.shuffle! | |
result = '' | |
entry_nums.each do |n| | |
result << "something_#{n}: #{Random.rand}\n" | |
end |
View trinary.rb
class Trinary | |
class << self | |
def ~ ; ~new ; end | |
def -@ ; -new ; end | |
def +@ ; +new ; end | |
end | |
def initialize(digits=[]) | |
@digits = digits | |
end |
View deferred_uniqueness_validations.rb
# ./config/initializers/deferred_uniqueness_validations.rb | |
# | |
# This initializer adds support for deferred processing of | |
# ActiveRecord uniqueness validations. When a uniqueness | |
# validation is deferred using the :deferred => true option, it is | |
# not checked before save. Instead, if there is a uniqueness | |
# constraint defined for the column in the database, and if the | |
# save operation raises an ActiveRecord::RecordNotUnique | |
# exception, then the validation is performed so that the precise | |
# cause can be determined and the appropriate error information |
View fiber_demo.rb
fib = Fiber.new do |val| | |
puts ' -- 2 --' | |
puts 'fiber started & got: ' + val | |
puts 'now yield with "1st yield"' | |
val = Fiber.yield('fiber yield 1') | |
puts ' -- 4 --' | |
puts '1st yield got: ' + val | |
puts 'now yield with "2nd yield"' |
NewerOlder