Skip to content

Instantly share code, notes, and snippets.

View s-andringa's full-sized avatar

Sjoerd Andringa s-andringa

View GitHub Profile
class Person < ActiveRecord::Base
# If I18n.t is evaluated when the model is loaded, which in production happens only once
# the translation will always use the locale which was set at that moment.
#
# (Instead just use the activerecord.errors.person.attributes.email.invalid key in
# the translation files)
#
# This does NOT work properly:
validates_format_of :email, :with => REGEXP, :message => I18n.t(:email_invalid)
@s-andringa
s-andringa / Comparing language YML files.rb
Created March 24, 2009 12:59
Comparing language YML files.rb
class Hash
# Compares two hashes bases on only their keys.
# Recursively matches nested hashes too.
#
# (Used for comparing translations hashes in test.)
def =~(other, _raise = false)
if _raise
raise "Unmatched key: #{self.keys.inspect} / #{other.keys.inspect}" unless self.keys == other.keys
end
(self.keys == other.keys) && all?{ |k, v| !v.is_a?(Hash) || other[k].=~(v, _raise) }
# test/test_helper.rb
# Make sure the tests fail if it encounters a missing translation:
module I18n
def self.just_raise(*args)
raise args.first
end
end
I18n.exception_handler = :just_raise
class Object
def metaclass
class << self; self; end
end
end
class Tea
@@liters = 5
class << Tea
def spill_all
Processing UsersController#create (for 195.232.229.139 at 2009-06-18 14:50:29) [POST]
Parameters: {"user"=>{"password_confirmation"=>"[FILTERED]", "password"=>"[FILTERED]", "login"=>"XXX"}, "profile"=>{"first_name"=>"XXX", "last_name"=>"XXX"}, "action"=>"create", "authenticity_token"=>"XXX", "controller"=>"users"}
Sent mail to XXX
=========
Unable to send e-mail! 501 Syntax: HELO hostname
/usr/local/lib/ruby/1.8/net/smtp.rb:679:in `check_response'
# HTTP Basic Auth
class User < ActiveRecord::Base
has_remote :site => "http://example.com", :user => "foo", :password => "bar" do |remote|
#...
end
end
# API key
class User < ActiveRecord::Base
has_remote :site => "http://example.com?api_key=12x34x5" do |remote|
class User < ActiveRecord::Base
def email
# Make REST call, parse response, extract email address and return it.
# Probably not the most concise and expressive code.
end
end
# Is more or less equal to:
class RemoteUser < ActiveResource::Base
class Object
def metaclass
class << self; self; end
end
end
# - Normal cases -
class Foo
@@bar = 0
class Object
def metaclass
class << self; return self; end
end
end
class Foo
# 1. def within class definition
def self.set_a
@s-andringa
s-andringa / constant_gardener.rb
Created December 28, 2010 15:38
Deal with bitmask-form options & Safely monkey patch Ruby gems
class ConstantGardener
def self.create(*booleans)
Class.new do
def initialize(bitmask)
@bitmask = bitmask
end
booleans.each_with_index do |b, i|
const_set b.to_s.upcase, 2**i