Skip to content

Instantly share code, notes, and snippets.

View chrisbloom7's full-sized avatar
✈️
Traveling

Chris Bloom chrisbloom7

✈️
Traveling
View GitHub Profile
@chrisbloom7
chrisbloom7 / A ruby module to assist in capturing stdout and stderr from a detached thread in jRuby.md
Last active April 9, 2019 21:07
Ruby module to assist in capturing stdout/stderr from a detached thread

A ruby module to assist in capturing stdout/stderr from a detached thread in jRuby

  1. create some temp files (but not Tempfiles since they would be GC'd too quickly)
  2. append standard file descriptor redirects to the commands that we'll run in the detached spawned process, i.e. 1>>stdout_tempfile_path 2>>stderr_tempfile_path
  3. tack on a final command that will trigger copying the files to S3 regardless of exit status of original commands, i.e. {original commands with io redirection &&'d together}; bundle exec rake cleanup_task
  4. cleanup other io redirection temp files older than some threshold

Example usage:

@chrisbloom7
chrisbloom7 / I18n for Panini.md
Last active April 9, 2019 21:10
Adding a MailChimp Template Language (MTL) based I18n helper for Panini templates

i18n for Panini

Requirements

Other than the default Panini pieces, you will also need to make sure that lodash is included as a devDependencies in your package.json

Usage

Tag a section of text as translatable. The section will be replaced with a set of if/elseif/else Merge Tags for each translation provided, otherwise only the wrapped content is displayed.

@chrisbloom7
chrisbloom7 / rake_benchmark.rb
Created June 8, 2016 15:09 — forked from harley/rake_benchmark.rb
Benchmarking a rake task
# Put this in Rakefile (doesn't matter where)
require 'benchmark'
class Rake::Task
def execute_with_benchmark(*args)
bm = Benchmark.measure { execute_without_benchmark(*args) }
puts " #{name} --> #{bm}"
end
alias_method :execute_without_benchmark, :execute
@chrisbloom7
chrisbloom7 / Gemfile
Last active August 29, 2015 14:15
TestUnit setup/teardown order in Ruby 2.1 with shoulda-context, factory_girl_rails and database_cleaner
source 'https://rubygems.org'
ruby '2.1.4'
gem 'rails', '~> 3.2.0'
gem 'mysql2'
group :development, :test do
gem 'byebug'
@chrisbloom7
chrisbloom7 / .rails_aliases
Last active January 31, 2019 16:15
Bash shortcuts for routing Rails commands through the binstubs if they are present, or fallback to the other version-dependent methods
# RUBY / RUBY ON RAILS COMMANDS
alias bexec='bundle exec'
alias rails_mv="bexec rails -v | sed 's/Rails \([0-9]\).*/\1/g'"
# Alias the rake command to Spring binstubs or fallback to "bundle exec"
# http://goo.gl/HkhHAf, http://goo.gl/STtIvF
function brake {
if [ -f bin/rake ]
then
bin/rake "$@"
else
@chrisbloom7
chrisbloom7 / Capfile
Last active June 14, 2016 07:37 — forked from toobulkeh/deploy.rb
Open a Rails console via Capistrano 3 (requires capistrano-rvm gem)
require 'capistrano/rvm'
# This is a skeleton for testing models including examples of validations, callbacks,
# scopes, instance & class methods, associations, and more.
# Pick and choose what you want, as all models don't NEED to be tested at this depth.
#
# I'm always eager to hear new tips & suggestions as I'm still new to testing,
# so if you have any, please share!
#
# @kyletcarlson
#
# This skeleton also assumes you're using the following gems:
@chrisbloom7
chrisbloom7 / 20140101000000_add_hstore_field_to_trip_tickets.rb
Last active August 29, 2015 14:06
Using a Postgres HStore field in a Rails ActionView form
# db/migrations/20140101000000_add_hstore_field_to_trip_tickets.rb
class AddHstoreFieldToTripTickets < ActiveRecord::Migration
def change
add_column :trip_tickets, :customer_identifiers, :hstore
end
end
@chrisbloom7
chrisbloom7 / README.md
Last active October 31, 2016 04:28
Bust AJAX request caching

The following will prevent all future AJAX requests from being cached, regardless of which jQuery method you use ($.get, $.ajax, etc.)

$.ajaxSetup({ cache: false });

Source: http://stackoverflow.com/a/735101/83743

However, jQuery's AJAX object will follow redirects, so even if you disable caching globally the "_={timestamp}" parameter that jQuery adds to bust the browser's cache may not be forwarded with the redirect. In that case, your request can still be cached by the browser. The solution is to either make sure that special param is passed along with redirects, or to send the appropriate cache-busting response headers from the server-side code for those requests.

Reference: http://api.jquery.com/jQuery.ajax/

@chrisbloom7
chrisbloom7 / change.rb
Last active September 10, 2019 11:40
Dynamic enum field values in nested association forms in Rails Admin
# app/models/change.rb
class Change < ActiveRecord::Base
belongs_to :changeset, inverse_of: :changed_fields
validates :changeset, presence: true, associated: true
validates :field, presence: true, uniqueness: {scope: :changeset_id}, inclusion: { in: :field_enum }
def field_enum
if changeset.try(:model).present?
changeset.model_attributes
else