module TheUsual
Constants
- MODULES
- VERSION
Public Class Methods
include_fn(fn)
click to toggle source
# File lib/theusual.rb, line 77 def self.include_fn fn @include_fns << fn end
included(base)
click to toggle source
# File lib/theusual.rb, line 82 def self.included base @include_fns.each do |name| base.send :define_method, name do |*args| TheUsual.method(name).send *args end end end
load(*modules)
click to toggle source
# File lib/theusual.rb, line 25 def self.load *modules # some modules need to be explicitly required needs_load = [ 'ipaddr', 'mongoid', 'net/ssh', 'sequel', ] # some of our filenames need to be remapped paths = { 'net/ssh' => 'ssh', } raise ArgumentError 'did you mean load(:all) ?' if modules.empty? modules.map! &:to_s to_load = if [:all, 'all', '*'].include? modules.first MODULES else modules end to_load.flatten.map(&:to_s).map do |_module| unless MODULES.include? _module raise ArgumentError.new( "can not load utils for module: #{_module}" ) end begin # load standard lib require _module if needs_load.include? _module # monkey patch name = paths[_module] || _module require_relative "theusual/#{name}.rb" _module rescue LoadError # underlying gem not installed # for :all, just skip monkey patch if modules.include? _module raise ArgumentError.new( "missing library gem: gem install #{_module}" ) end end end.compact end
retry(opts = {}) { || ... }
click to toggle source
# File lib/theusual/failure.rb, line 3 def self.retry opts = {} tries = opts[:tries] || 2 exceptions = Array(opts[:e]) exceptions += Array(opts[:exceptions]) if exceptions.empty? exceptions = [ Exception ] end # callback = opts[:callback] res = nil tries.times do begin res = yield break rescue Exception => e raise unless exceptions.any? {|x| e < x } end end res end