Skip to content

Instantly share code, notes, and snippets.

View danielfone's full-sized avatar

Daniel Fone danielfone

View GitHub Profile
a=n.gsub(?|,' ').split$/
i=!p;t=a.map(&:chars).transpose.map(&:join).select{i^=a}.sort_by{|s|s[/[A-Z]/][0]}
x=0;t.map{|t|y=0;u=p;t.chars{|c|u&&a[y][x,3]=?|*3;a[y][x+1]=c;y+=1;u|=c=='_'};x+=2}
a.join$/
@danielfone
danielfone / aasm_after_commit.rb
Last active August 4, 2020 07:00
AASM after_commit behaviour
# ruby 2.2.2
# activerecord 4.2.3
# aasm 4.2.0
require 'active_record'
require 'aasm'
# Setup a mock AR table
ActiveRecord::Migration.verbose = false
ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => ":memory:")
jQuery ->
$('.cloudinary-fileupload').on 'cloudinarydone', (e, data) ->
$('.js-cl-preview').html $.cloudinary.image data.result.public_id, {
format: data.result.format,
version: data.result.version,
width: 150,
height: 100,
}
@danielfone
danielfone / utils.rb
Created June 22, 2015 03:41
Attachinary monkey patch Rails 4
module Attachinary
module Utils
Rails.logger.warn 'Monkey patched Attachinary::Utilss#process_hash'
def self.process_hash(hash, scope=nil)
file = if hash['id']
Attachinary::File.find hash['id']
else
file = Attachinary::File.new hash.slice('public_id', 'version', 'width', 'height', 'format', 'resource_type')
file.scope = scope.to_s if scope && file.respond_to?(:scope=)
file
require_relative './board'
require_relative './naive_solver'
#
# This is a reference implementation for solving the board
# and may be considered a spoiler
#
# s = Solver.load 'my-team', 100
# s.solve
#
@danielfone
danielfone / devise_safe_store_location.rb
Last active May 20, 2020 13:10
Monkey-patch to prevent Devise from causing CookieOverflow errors
# config/initializers/devise_safe_store_location.rb
module SafeStoreLocation
MAX_LOCATION_SIZE = ActionDispatch::Cookies::MAX_COOKIE_SIZE / 2
def store_location_for(resource_or_scope, location)
super unless location && location.size > MAX_LOCATION_SIZE
end
end
$ uname -a
Darwin MacBook-Pro.fritz.box 14.0.0 Darwin Kernel Version 14.0.0: Fri Sep 19 00:26:44 PDT 2014; root:xnu-2782.1.97~2/RELEASE_X86_64 x86_64
$ ruby -v
ruby 2.1.4p265 (2014-10-27 revision 48166) [x86_64-darwin14.0]
$ gem --version
2.4.4
require_relative 'micro_bench'
# Various methods to update every value in a hash in place
module HashUpdate
module_function
# also Hash#update
def merge!(hash)
hash.merge!(hash) do |key, value|
value + 1
def temporary_assign(object, attribute, new_value)
previous_value = object.public_send attribute
object.public_send "#{attribute}=", new_value
yield
ensure
object.public_send "#{attribute}=", previous_value
end
# Example usage:
# Want to debug SQL queries in tests? Log to STDOUT just for the
@danielfone
danielfone / unindent.rb
Last active August 29, 2015 14:06 — forked from avdi/unindent.rb
TEXT = <<EOF
See, the interesting thing about this text
is that while it seems like the first line defines an indent
it's actually the last line which has the smallest indent
there are also some blank lines
both with and without extra spaces in them
and it just goes on and on