Skip to content

Instantly share code, notes, and snippets.

View swrobel's full-sized avatar

Stefan Wrobel swrobel

View GitHub Profile
begin
require 'bundler/inline'
rescue LoadError => e
$stderr.puts 'Bundler version 1.10 or later is required. Please update your Bundler'
raise e
end
gemfile(true) do
source 'https://rubygems.org'
gem 'rails', github: 'rails/rails'
@swrobel
swrobel / range_within_bounds.rb
Created April 7, 2016 00:50
Return a range that is bounded by min & max given, in Ruby
def range_within_bounds(range, min, max)
min ||= range.min
max ||= range.max
[range.min, min].max .. [range.max, max].min
end
@swrobel
swrobel / dedup-imovie-library
Last active September 30, 2017 20:26 — forked from kabadisha/dedup-imovie-library
When you import movies into iMovie 10 libraries, the file is always copied, wasting space and hindering editability. This script replaces the copy with a hardlink, reclaiming disk space.
#!/usr/bin/env ruby
# Usage: dedup-imovie-library LIBRARY ORIGINALS
#
# Goes through an iMovie 10 library and replaces all the "Original Media" with
# symlinks to the actual original media, in order to conserve disk space. Note
# that because they're symlinks, if the path to the originals changes (e.g. you
# rename the external drive they are on) then the links will be broken.
#
# This assumes you've already imported the files into iMovie and waited for them
@swrobel
swrobel / gist:77626ff3d4967ca65c3028dcb336d57a
Last active November 14, 2019 22:34
Rails 6.0 time zones as TZInfo identifiers
ActiveSupport::TimeZone.all.group_by(&:formatted_offset).each {|offset| puts "### UTC #{offset[0]}"; offset[1].each {|tz| puts "* #{tz.tzinfo.identifier}"}; puts "\n"};nil

UTC -11:00

  • Pacific/Pago_Pago
  • Pacific/Midway

UTC -10:00

  • Pacific/Honolulu
@swrobel
swrobel / bench.rb
Created August 3, 2019 01:59
Ruby memoization gem benchmarks
require "bundler/inline"
gemfile(true) do
source "https://rubygems.org"
gem 'benchmark-ips'
gem 'benchmark-memory'
gem 'memo-it'
gem 'memoist'
gem 'memery'
@swrobel
swrobel / finders.rb
Created April 11, 2020 23:42
Generic finders for a rails base controller
def model
@model ||= controller_name.classify.constantize
end
def record
@record ||= records.find(params[:id])
end
def records
@records ||= policy_scope(model) # Requires Pundit
@swrobel
swrobel / string_enum.rb
Created November 22, 2022 23:53
String Enum module for Rails
module StringEnum
extend ActiveSupport::Concern
module ClassMethods
# ActiveRecord enum has undocumented support for enums with string rather than integer representations.
# To enable it you have to define an enum like so:
#
# enum field: { value1: 'value1', value2: 'value2' }
#
# which is rather redundant. This is a shortcut which lets you define it as follows: