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 / factory_girl.rb
Last active August 6, 2018 06:53
Configuration at project-level for factory_girl in a rails rspec codebase (spec/support/factory_girl.rb)
# frozen_string_literal: true
RSpec.configure do |config|
config.before(:suite) do
begin
DatabaseCleaner.start
setup_biz
FactoryBot.lint unless config.files_to_run.one?
ensure
DatabaseCleaner.clean
@vraravam
vraravam / production.rb
Created January 13, 2016 05:39
LogRage configuration for production env in rails app
# config/environments/production.rb
Rails.application.configure do
# Settings specified here will take precedence over those in config/application.rb.
config.lograge.enabled = true
# add time to lograge
config.lograge.custom_options = lambda do |event|
{ time: event.time, params: event.payload[:params].except('controller', 'action', 'utf8', 'authenticity_token', 'commit') }
end
@vraravam
vraravam / string.rb
Created January 13, 2016 03:03
string to unicode conversion in ruby
# config/initializers/string.rb
class String
# TODO: Don't know how to convert to UTF-16BE encoding using built-in methods, and then arrive
# at the result similar to: http://api.mvaayoo.com/unicodeutil/unicode.jsp
def to_unicode
unpack('U*').map { |i| i.to_s(16).rjust(4, '0') }.join
end
end
@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 / .rubocop.yml
Last active January 13, 2016 05:34
Rubocop config file
require:
- rubocop-rspec
AllCops:
Include:
- '**/Capfile'
- '**/Gemfile'
- '**/Rakefile'
- '**/config.ru'
- '**/app/**/*'
@vraravam
vraravam / .simplecov
Last active October 23, 2023 06:57
Simplecov config file (.simplecov)
SimpleCov.minimum_coverage 98.00
SimpleCov.minimum_coverage_by_file 80
SimpleCov.refuse_coverage_drop
SimpleCov.formatter = SimpleCov::Formatter::HTMLFormatter
SimpleCov.start :rails do
add_group 'Mailers', 'app/mailers'
add_group 'Policies', 'app/policies'
add_group 'Services', 'app/services'
add_group 'Uploaders', 'app/uploaders'
add_group 'Validators', 'app/validators'
# frozen_string_literal: true
git_source(:github) do |repo_name|
repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?('/')
"https://github.com/#{repo_name}.git"
end
source 'https://rubygems.org'
ruby '2.4.2'
@vraravam
vraravam / application.rb
Last active January 13, 2016 05:37
Rails Generator configuration
class Application < Rails::Application
config.generators do |g|
g.orm :active_record
g.template_engine :erb
g.stylesheets false
g.javascripts false
g.test_framework :rspec,
fixtures: true,
view_specs: false,
helper_specs: false,
@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 / minify_css_js.js
Last active July 4, 2019 05:12
For phonegap/cordova projects, if you want to minify your home-grown js/css files (and obfuscate them to some extent), you can do it with the following gist. It requires yuicompressor and a couple of other npm modules (please look at the require calls at the top). It will not touch the original files - only those that end up within the platforms…
#!/usr/bin/env node
var isRelease = (process.env.RELEASE && process.env.RELEASE === "1");
// Turn this on only for release
if (isRelease !== true) {
return;
}
var fs = require('fs');
var path = require('path');