View flatten-it.rb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env ruby | |
ColorNameSequence = %w[ | |
Black | |
Red | |
Green | |
Yellow | |
Blue | |
Magenta | |
Cyan |
View require_limit_for_mysql_text.rb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# == 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
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# ./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
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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