Sha256: 5b672318a2d60cef9851e33548afcf5c1283fc678e734e213b7dca10fa46f353
Contents?: true
Size: 913 Bytes
Versions: 1
Compression:
Stored size: 913 Bytes
Contents
module DuckPuncher module Ducks class << self def list @list ||= Set.new [ Duck.new(:String), Duck.new(:Array), Duck.new(:Numeric), Duck.new(:Hash), Duck.new(:Object), Duck.new(:Method, before: ->(*) { DuckPuncher::GemInstaller.initialize! }), Duck.new(:ActiveRecord, class: 'ActiveRecord::Base', if: -> { defined? ::ActiveRecord }) ] end def [](name) list.find { |duck| duck.name == name.to_sym } || fail(ArgumentError, %Q(Couldn't find "#{name}" in my list of Ducks! I know about: #{list.map(&:name).map(&:to_s)})) end def load_path_for(duck) "duck_puncher/ducks/#{duck.name.to_s.gsub(/\B([A-Z])/, '_\1').downcase}" end end # # Autoload our ducks # list.each do |duck| autoload duck.name, load_path_for(duck) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
duck_puncher-3.0.0 | lib/duck_puncher/ducks.rb |