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 / time_splits.rb
Created January 14, 2015 10:08
Ruby module using arel for null-checks and time comparisons
module TimeSplits
extend ActiveSupport::Concern
module ClassMethods
def not_null?(attribute)
where(arel_table[attribute].not_eq(nil))
end
def in_future?(attribute, default_threshold = Time.current)
not_null?(attribute).where(arel_table[attribute].gt(default_threshold))
@vraravam
vraravam / sitemap.rb
Created February 21, 2015 18:02
Using sitemap_generator gem and configuring it to generate pages from high_voltage
# Set the host name for URL creation
SitemapGenerator::Sitemap.default_host = 'http://www.pycosystems.com'
SitemapGenerator::Sitemap.create do
# Put links creation logic here.
#
# The root path '/' and sitemap index file are added automatically for you.
# Links are added to the Sitemap in the order they are specified.
#
# Usage: add(path, options={})
@vraravam
vraravam / SublimeSettings.json
Created March 9, 2015 10:32
Sublime Text User Settings.json
{
"auto_complete_selector": "text.html.erb, source - comment, meta.tag - punctuation.definition.tag.begin",
"bold_folder_labels": true,
"caret_style": "solid",
"color_scheme": "Packages/User/Cobalt (SL).tmTheme",
"default_line_ending": "unix",
"ensure_newline_at_eof_on_save": false,
"expand_tabs_on_save": true,
"file_exclude_patterns":
[
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
@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("\* ", "")
@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:1224170
Created September 17, 2011 17:40
rails 3.1.1 & i18n gem & number_to_currency
require 'i18n/backend/base'
module I18n
module Backend
module Base
def translate(locale, key, options = {})
raise InvalidLocale.new(locale) unless locale
entry = key && lookup(locale, key, options[:scope], options)
if options.empty?
@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 / .jshintrc
Last active January 13, 2016 05:24
JsHint config
// ~/.jshintrc
{
// --------------------------------------------------------------------
// JSHint Configuration, Strict Edition
// --------------------------------------------------------------------
//
// This is a options template for [JSHint][1], using [JSHint example][2]
// and [Ory Band's example][3] as basis and setting config values to
// be most strict:
@vraravam
vraravam / .rubocop.yml
Last active January 13, 2016 05:34
Rubocop config file
require:
- rubocop-rspec
AllCops:
Include:
- '**/Capfile'
- '**/Gemfile'
- '**/Rakefile'
- '**/config.ru'
- '**/app/**/*'