Skip to content

Instantly share code, notes, and snippets.

View vraravam's full-sized avatar

Vijay Aravamudhan vraravam

  • ThoughtWorks Inc.
  • Chennai, India
  • X @avijayr1
View GitHub Profile
@vraravam
vraravam / active_resource_filtered_logger.rb
Created October 27, 2011 08:53
ActiveResource filter logging of sensitive params
require 'active_resource/base'
require 'active_resource/log_subscriber'
module ActiveResource
class LogSubscriber < ActiveSupport::LogSubscriber
def request_with_filtered_logging(event)
request_uri = event.payload[:request_uri]
start_of_query_string = request_uri.index("?")
request_uri_without_query_string = request_uri[0, start_of_query_string]
query_string = request_uri[(start_of_query_string + 1)..-1]
@vraravam
vraravam / translator.rb
Created August 5, 2011 05:32
Use Google translate to translate a yml file from one language to generate a new one for a different language
#!/usr/bin/env ruby
if ARGV.size != 2
puts "Usage: #{$0} <from_language> <to_language>"
exit -1
end
require 'rubygems'
require 'ya2yaml' # this gem is needed for this to work!
require 'yaml'
@vraravam
vraravam / gist:877198
Created March 19, 2011 03:39
using_constants for rspec tests
module Spec
module Extension
def using_constants(klass, new_constants)
old_constants = {}
begin
new_constants.each_pair do |name, value|
old_constants[name] = klass.__send__(:remove_const, name)
klass.const_set(name, value)
end
@vraravam
vraravam / gist:874724
Created March 17, 2011 17:14
kill local committed branches in git
#!/usr/bin/env ruby
require 'open3'
def system_puts(command)
puts command
system command
end
branches = `git branch`.split("\n")
current_branch = branches.select{|l| l =~ /^\*/}.first.gsub("\* ", "")
validates_existence_of:
This method can be used for both Active records as well as Active Resources - ie anything that responds to 'exists?'. It has been tested to work with Rails v2.2+ and supports all options that validates_each does (like allow_nil, if, unless, etc) and a couple of additional ones (resource_name => the attribute name that might be based on a domain concept; and resource_class => that could be derived from the resource name, but could be namespaced, etc). Here is the code:
def validates_existence_of(*attributes)
options = {:message => 'does not exist'}.merge(attributes.extract_options!)
validates_each(attributes, options) do |record, attr, value|
resource_name = options[:resource_name]
resource_name ||= attr.to_s.gsub(/_id$/, "") if attr.to_s =~ /_id$/
resource_name || attr.to_s # last resort