Skip to content

Instantly share code, notes, and snippets.

View rosenfeld's full-sized avatar

Rodrigo Rosenfeld Rosas rosenfeld

View GitHub Profile
rosenfeld /
Created July 23, 2016 13:44
Sample simple Rack application demonstrating rack_web_console used with rack-webconsole
require 'rack_web_console'
require 'rack-webconsole'
Rack::Webconsole.inject_jquery = true
#Rack::Webconsole.key_code = '39'
use Rack::Webconsole
run ->(env) {
return [404, {}, []] unless env['PATH_INFO'] == '/' env
require 'bundler/inline'
rescue LoadError => e
$stderr.puts 'Bundler version 1.10 or later is required. Please update your Bundler'
raise e
gemfile(true) do
source ''
#gem 'railties', '4.2.7' # it's also present in version 4
rosenfeld / thread-pool.rb
Created June 7, 2016 12:49
Simple thread pool implementation in Ruby
require 'thread' # for Mutex: Ruby doesn't provide out of the box thread-safe arrays
class ThreadPool
def initialize(max_threads = 10)
@pool =
max_threads.times{ @pool << 1 }
@mutex =
@running_threads = []
rosenfeld / README.txt
Last active November 15, 2018 09:48
Sprite generator to replace compass (only Ruby and ImageMagick are required)
This was created to replace compass in a Rails project.
The generator supports multiple themes and the sprite dimensions are available in a dimensions.sass file as variables.
There are no other dependencies than Ruby and ImageMagick binaries (or compatible commands with convert and identify).
The image name contains an MD5 hash of all images content and is stored directly into public/assets
so that the resulting CSS doesn't depend on sprockets.
It took about 0.2s to generate two theme sprites for me with about 30 images each.
rosenfeld /
Last active August 29, 2015 14:06
Puma example init script. It assumes .ruby_version exist in the APP_PATH and either rbenv or rvm is used.
# Provides: my-script-name
# Required-Start: $local_fs
# Required-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: Run my app on Puma
rosenfeld / application_controller.rb
Created July 18, 2014 11:47
Supporting automatic return from render/redirect/head in Rails
# Please don't comment in this gist since I'm not notified by any comments here:
# This is the discussion to comment on:
class ApplicationController < ActionController::Base
# ...
around_action :catch_halt
def render(*args)
rosenfeld / README
Created April 3, 2014 16:53
Demonstrates how to generate refined version for Facets gem
Simple script that should work if you follow the convention of declaring a single outer class per file with simple class names and structure.
Some files may not be compatible with refinements and should have some comment like "#skip-refinement-conversion" in the file header (first 10_000 chars of the file). The "class" line should also be in the header section of the file.
Files skipped will be copied "as is" to the new directory.
rosenfeld / puma.bash
Last active August 29, 2015 13:57
Init script for Puma with RVM
. /lib/lsb/init-functions
. ~/.rvm/scripts/rvm
# or for rbenv installed with Chef:
# . /etc/profile.d/
rosenfeld / benchmark.rb
Last active August 29, 2015 13:56
Concatenating first vs concatenating last performance comparison
environment = Rails.application.assets
asset = nil
environment.send :expire_index!
FileUtils.rm_rf environment.cache.instance_variable_get :@root
puts Benchmark.measure{File.write '/tmp/application-orig.js', (asset = environment['application']).source}.total
puts(Benchmark.measure do
rosenfeld / alternatives.txt
Created January 24, 2014 19:51
Groovy lightweight web framework alternatives