View virtus-multiparameter_attributes.rb
# Rails datetime_select and similar use multiparameter attributes which are | |
# these dawful things from the bowels of activerecord and actionpack. This | |
# module extends virtus models to coerce multiparameter attributes back together | |
# before assigning attributes. | |
# | |
# Here's the implementation for ActiveRecord: | |
# | |
# https://github.com/rails/rails/blob/11fd052aa815ae0255ea5b2463e88138fb3fec61/activerecord/lib/active_record/attribute_assignment.rb#L113-L218 | |
# | |
# and DataMapper: |
View sequence_counter_ar_fix.rb
models = ActiveRecord::Base.descendants | |
models.each do |m| | |
last_id = m.last.id | |
m.connection.execute("ALTER SEQUENCE #{m.table_name}_id_seq RESTART WITH #{last_id}")"; | |
end |
View vanity_phone_number_converter.rb
# Converts a phone number with letters to a phone number with only numbers. | |
# Leaves any other characters untouched. | |
class VanityPhoneNumberConverter | |
LETTER_TO_NUMBER = { | |
'a' => '2', 'b' => '2', 'c' => '2', | |
'd' => '3', 'e' => '3', 'f' => '3', | |
'g' => '4', 'h' => '4', 'i' => '4', | |
'j' => '5', 'k' => '5', 'l' => '5', | |
'm' => '6', 'n' => '6', 'o' => '6', | |
'p' => '7', 'q' => '7', 'r' => '7', 's' => '7', |
View disable-leaflet-map-events.js
// Assumes your L.Map is called "map". Untested! | |
map.dragging.disable(); | |
map.touchZoom.disable(); | |
map.doubleClickZoom.disable(); | |
map.scrollWheelZoom.disable(); | |
map.boxZoom.disable(); | |
map.keyboard.disable(); | |
if (map.tap) { | |
map.tap.disable(); | |
} |
View io_ext.rb
# See http://stackoverflow.com/questions/11007111/ruby-whats-an-elegant-way-to-pick-a-random-line-from-a-text-file | |
class IO | |
# Selects a random "line" from a file (might not be a line if different separator is passed). | |
# @param *args Same arguments as IO.foreach | |
# @return A random line from the IO object | |
def self.random_line(*args) | |
chosen_line = nil | |
self.foreach(*args).each_with_index do |line, number| | |
chosen_line = line if rand < 1.0/(number+1) | |
end |
View mandrill_signature_verifier.rb
class MandrillSignatureVerifier | |
def initialize(key, url, params, signature) | |
@key = key | |
@url = url | |
@params = params | |
@signature = signature | |
end | |
# Return true if the signature matches | |
def verified? |
View country_codes.js
var CountryCodes = (function() { | |
// Codes taken from Wikipedia as of Wed Apr 16 2014 | |
var codes = {"AFG": "AF", "ALA": "AX", "ALB": "AL", "DZA": "DZ", "ASM": "AS", "AND": "AD", "AGO": "AO", "AIA": "AI", "ATA": "AQ", "ATG": "AG", "ARG": "AR", "ARM": "AM", "ABW": "AW", "AUS": "AU", "AUT": "AT", "AZE": "AZ", "BHS": "BS", "BHR": "BH", "BGD": "BD", "BRB": "BB", "BLR": "BY", "BEL": "BE", "BLZ": "BZ", "BEN": "BJ", "BMU": "BM", "BTN": "BT", "BOL": "BO", "BES": "BQ", "BIH": "BA", "BWA": "BW", "BVT": "BV", "BRA": "BR", "IOT": "IO", "BRN": "BN", "BGR": "BG", "BFA": "BF", "BDI": "BI", "KHM": "KH", "CMR": "CM", "CAN": "CA", "CPV": "CV", "CYM": "KY", "CAF": "CF", "TCD": "TD", "CHL": "CL", "CHN": "CN", "CXR": "CX", "CCK": "CC", "COL": "CO", "COM": "KM", "COG": "CG", "COD": "CD", "COK": "CK", "CRI": "CR", "CIV": "CI", "HRV": "HR", "CUB": "CU", "CUW": "CW", "CYP": "CY", "CZE": "CZ", "DNK": "DK", "DJI": "DJ", "DMA": "DM", "DOM": "DO", "ECU": "EC", "EGY": "EG", "SLV": "SV", "GNQ": "GQ", "ERI": "ER", "EST": "EE", "ETH": "ET", |
View publicize_methods.rb
class Class | |
def publicize_methods | |
@_saved_private_instance_methods = self.private_instance_methods | |
self.class_eval { public *@_saved_private_instance_methods } | |
if block_given? | |
yield | |
reprivatize_methods | |
end | |
end |
View user_form.html
<form> | |
Name: <input type="text" name="name"/> | |
Age: <input type="text" name="age"/> | |
<input type="submit" value="Submit"></input> | |
</form> |
NewerOlder