Module: TheUsual
- Defined in:
- lib/theusual.rb,
lib/theusual/failure.rb,
lib/theusual/version.rb
Constant Summary collapse
- MODULES =
[ 'array', 'failure', 'hash', 'ipaddr', 'mongoid', 'net/ssh', 'nil', 'numeric', 'sequel', 'string', 'time', ]
- VERSION =
'0.1.1'
Class Method Summary collapse
- .include_fn(fn) ⇒ Object
- .included(base) ⇒ Object
- .load(*modules) ⇒ Object
- .retry(opts = {}) ⇒ Object
Class Method Details
.include_fn(fn) ⇒ Object
77 78 79 |
# File 'lib/theusual.rb', line 77 def self.include_fn fn @include_fns << fn end |
.included(base) ⇒ Object
82 83 84 85 86 87 88 |
# 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) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# 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 = {}) ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# 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 |