Skip to content

Instantly share code, notes, and snippets.

@wteuber
wteuber / configurable_modules.rb
Last active August 29, 2015 14:06
configurable in ruby modules
module Foo
include ActiveSupport::Configurable
class << self
def configure
yield config
end
end
end
Foo.configure do |config|
@wteuber
wteuber / hex_dump_restore.sh
Created September 18, 2014 07:30
Hex dump/restore binary file
# cat, print file.bin's binary content
cat file.bin
# =>
# DUMP - convert binary content to hex string
xxd -p file.bin | tr -d '\n'
# => 48656c6c6f20576f726c640a
# RESTORE - convert hex string to binary content
echo 48656c6c6f20576f726c640a | xxd -r -p
@wteuber
wteuber / gist:ab9b30069160737bfcb3
Created September 23, 2014 10:44
DUMP / RESTORE Ubuntu packages
# DUMP
mkdir -p ~/backup
dpkg --get-selections > ~/backup/Package.list
sudo cp -R /etc/apt/sources.list* ~/backup/
sudo apt-key exportall > ~/backup/Repo.keys
# RESTORE
sudo apt-key add ~/backup/Repo.keys
sudo cp -R ~/backup/sources.list* /etc/apt/
sudo apt-get update
@wteuber
wteuber / hash_slice.rb
Created April 8, 2015 09:11
slice ruby Hash
params = Hash[[*'a'..'j'].zip([*1..10])] # => {"a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5, "f"=>6, "g"=>7, "h"=>8, "i"=>9, "j"=>10}
slice_keys = ['a','f','g']
filter = -> (key, _) { slice_keys.include?(key) }
slice = params.select &filter
params.delete_if &filter
slice # => {"a"=>1, "f"=>6, "g"=>7}
params # => {"b"=>2, "c"=>3, "d"=>4, "e"=>5, "h"=>8, "i"=>9, "j"=>10}
@wteuber
wteuber / equal_files.rb
Created April 29, 2015 08:27
find equal files recursively
require 'digest'
result = Hash.new() { |hash, key| hash[key] = [] }
Dir['**/*'].each do |file|
if File.file?(file)
result[Digest::MD5.new.file(file).to_s] << file
end
end
result
ls **/en.yml **/de.yml | grep -v spec| tar -czf archive.tgz -T -
foo = Namespace::To::Module.instance_method(:foo)
obj.class.send(:define_method, :foo, foo)
ary.inject(Hash.new(0)) { |total, e| total[e] += 1 ;total}
#!/usr/bin/env ruby
require 'yaml'
class Hash
def deep_reject(&blk)
self.dup.deep_reject!(&blk)
end
def deep_reject!(&blk)
self.each do |k, v|
for f in `git ls-files "*.rb"`; do ruby -c $f | grep -v "Syntax OK" ; done